Está en la página 1de 33

1 .

Asignando IP's a las interfaces de red

CODE, HTML o PHP Insertado:

/ip address

add address=10.0.1.2/24 interface=ether1

add address=10.0.2.2/24 interface=ether2

add address=192.168.5.1/24 interface=ether5

Ciertamente los IP's asignados a las interfaces WAN deben de corresponder a los gateway de los routers
que tengan; osea, si tengo conectado un router con IP 10.0.1.1 al ether1, NO le voy a colocar 10.0.2.2 a
esta interfaz de red, ya que NO van a estar en el mismo rango. Ya más obvio vemos que ether5 será la
nueva puerta de enlace o gateway que tendrá ambos links de internet balanceados.

2. Configurando enmascarado de las interfaces de red WAN

Como estamos viendo en la imágen, en este ejemplo contamos con 2 interfaces de red WAN, que son
ether1 y ether2, entonces tocará enmascarar cada una de ellas.

CODE, HTML o PHP Insertado:

/ip firewall nat

add chain=srcnat out-interface=ether1 action=masquerade

add chain=srcnat out-interface=ether2 action=masquerade

Si tuviéramos más interfaces de red WAN, entonces tocaría enmascarar TODAS y cada una de estas
interfaces.
3. Configurando las rutas, parte 1

Voy a separar la configuración de IP -> Route en 2 partes, una antes del balanceo, y otra cuando ya
empezaremos a balancear, esta primera parte no debe de ser nada nuevo ni especial para nosotros, ya
que se configura siempre hasta en lo más básico. Para hacerles recordar, aquí es donde configuramos las
puertas de enlace o gateways (GW) de los routers que tenemos.

CODE, HTML o PHP Insertado:

/ip route

add gateway=10.0.1.1 check-gateway=ping distance=1

add gateway=10.0.2.1 check-gateway=ping distance=2

Bueno, sí hay algo nuevo, estas son los distance, y check-gateway, vamos a explicarlo desde lo más fácil.
No olvidar que si tenemos más gateways de otros routers, tenemos que agregarlos uno a uno, de
preferencia con distance distintos.

check-gateway, tal como su nombre lo indica, revisará el gateway que hemos configurado, ya sea por
ping o por ARP; en este caso está configurado con ping, así que hará un ping 'constante' al gateway
configurado y si no tiene respuesta, esta ruta se "desactivará" automáticamente. Si el ping vuelve a tener
respuesta, la ruta se volverá a "activar". Esto sirve como un tipo de failover muy básico, ya que sólo
responderá su apagamos o desconectamos el router con el IP al que apunta el ping.

distance, es la distancia de la ruta, "la ruta de menor distancia será la ruta predeterminada o ruta activa".
Es muy fácil de explicar con un ejemplo: En realidad hasta aquí ya deberíamos de tener internet, no
necesariamente balanceado ya que aún no hemos hecho la configuración del balanceo, pero sí
tendremos internet, entonces ¿Qué linea de internet se estará usando? como el gateway 10.0.1.1 tiene
la menor distancia, es por ahí donde saldrá el internet, entonces podemos decir que es la ruta activa o
ruta predeterminada. Si hacemos que el gateway 10.0.2.1 tenga una distancia menor, entonces ya será
por aquí por donde saldremos a internet, ya que la ruta activa cambiará.

Nota: Las rutas NO activas normalmente se tornan de un color azul, esto es absolutamente normal, en
realidad hacer el balanceo de carga sirve para poder utilizar las rutas no activas, y así aprovechar todos
los links de internet que tengamos.

Posiblemente aprenderse todo esto de las distancias no sea muy necesario para aquellos que trabajan
siempre desde el interior de su red, pero para los que trabajan desde internet, o sea, remotamente,
tomar en cuenta las distancias es muy importante.

4.Configurando mangle, empieza la magia o los problemas para


el que no pone atención

Como acabo de decir, hasta este momento nosotros YA contamos con internet del mismo balanceador,
pero como aún no hemos hecho la configuración del balanceo, pues sólo tendremos internet de un solo
router. El principal objetivo de esta parte de la guía es aprender a partir conexiones en grupos y
agregarles una marca, ya con esa marca podremos enrutar esas conexiones entre los routers que
tengamos, logrando por fin el deseado balanceo... aunque esto último lo haremos más adelante en IP ->
Route.

Para poder entender mejor cómo será llevado este balanceo, dividiremos la configuración de mangle en
2 subpartes y un opcional:

4.1Primera parte, todo lo que entre por un WAN, debe salir por
el mismo WAN

CODE, HTML o PHP Insertado:

/ip firewall mangle

add chain=prerouting in-interface=ether1 connection-state=new new-connection-mark=ether1_conn


action=mark-connection passthrough=yes

add chain=prerouting in-interface=ether2 connection-state=new new-connection-mark=ether2_conn


action=mark-connection passthrough=yes

add chain=output connection-mark=ether1_conn new-routing-mark=to_ether1 action=mark-routing


passthrough=yes

add chain=output connection-mark=ether2_conn new-routing-mark=to_ether2 action=mark-routing


passthrough=yes

En realidad vemos 2 partes más, las 2 primeras reglas marcan las nuevas conexiones que ingresan por
cada WAN: ether1 y ether2, los nombres de estas marcas de conexión son ether1_conn y ether2_conn.
Las 2 siguientes reglas marcan la ruta de esas conexiones, los nombre de estas marcas de routeo son
to_ether1 y to_ether2. Ya debemos de saber que cuando tenemos una marca de routeo, esta se termina
sacando por IP -> Route, que veremos más adelante.

Esta configuración es necesaria para las conexiones que entran desde internet. Por ejemplo, si me
conecto desde mi casa utilizando winbox al balanceador de un cliente en Japón, puedo ingresar por su
router B y de ahí al balanceador, y ciertamente debería de tener la respuesta por el mismo router B, pero
si no tuviera estas reglas, las conexiones saldrían por la ruta predeterminada, que podría ser el router A,
lo trae muchos problemas.

Segunda parte, dividiendo las conexiones de los clientes y


4.2

formando grupos

CODE, HTML o PHP Insertado:

/ip firewall mangle

#Parte A

add chain=prerouting in-interface=ether5 connection-state=new dst-address-type=!local per-connection-


classifier=both-addresses:2/0 action=mark-connection new-connection-mark=ether1_conn
passthrough=yes
add chain=prerouting in-interface=ether5 connection-state=new dst-address-type=!local per-connection-
classifier=both-addresses:2/1 action=mark-connection new-connection-mark=ether2_conn
passthrough=yes

#Parte B

add chain=prerouting in-interface=ether5 connection-mark=ether1_conn action=mark-routing new-


routing-mark=to_ether1 passthrough=yes

add chain=prerouting in-interface=ether5 connection-mark=ether2_conn action=mark-routing new-


routing-mark=to_ether2 passthrough=yes

Una vez más tenemos 2 partes; las 2 primeras líneas (que hacen la Parte A) son marcas de conexión, y las
2 siguientes líneas (que hacen la Parte B) marcan la ruta de esas conexiones; los nombres de las marcas
de conexión y routeo son los mismos que vimos previamente. Vemos también que en las 2 primeras
reglas lo que se marca son las conexiones "de los clientes" que ingresan por ether5, que es la interfaz de
red LAN, y que son divididas utilizando per-connection-classifier o también llamado PCC. Para dividir 50 y
50 (por ciento), hemos utilizado 2/0 y 2/1, si se diera el caso que fueran 3 links de internet de igual
velocidad, cada marca de conexión debería de tener un per-connection-classifier de 3/0, 3/1, y 3/2
respectivamente.

Sí, parece una explicación barata, después de todo parte del "secreto" para balancear varios links de
internet y links de distinta velocidad se hace en esta segunda parte de Mangle, pero ya lo veremos con
más detalle dentro de nada.

[Opcional] Tercera parte, accediendo a nuestros routers


4.3

desde la red balanceada

Ya que estamos marcando todas las conexiones de nuestros clientes para llevarlas a uno y otro link de
internet, cuando queramos ingresar a cualquiera de nuestros routers no nos será posible, ya que
estamos obligados a salir a internet. La solución sería que las conexiones que tengan como destino
nuestros routers no sean marcados, en realidad es bastante simple, sólo debemos aceptar sus
conexiones.
CODE, HTML o PHP Insertado:

/ip firewall mangle

add chain=prerouting dst-address=10.0.1.0/24 action=accept in-interface=ether5

add chain=prerouting dst-address=10.0.2.0/24 action=accept in-interface=ether5

Nota: Estas reglas 2 reglas aceptando las conexiones con destino a nuestros routers deberían de estar
por encima de las demás reglas de Mangle, en especial las de la "Segunda parte".

5. Configurando las rutas, parte 2

El resultado de marcado de rutas en Mangle fue obtener 2 marcas de routeo, una para cada router o link
de internet, en este caso tenemos a to_ether1 y to_ether2, ambas rutas las tenemos que sacar por IP ->
Routes en un proceso parecido al que hicimos en la parte1 de "Configurando las rutas".

CODE, HTML o PHP Insertado:

/ip route

add gateway=10.0.1.1 routing-mark=to_ether1 check-gateway=ping

add gateway=10.0.2.1 routing-mark=to_ether2 check-gateway=ping

La explicación es la misma que con la parte1, la diferencia aquí es que no se usan distancias ya que no
son necesarias, y se agrega la marca de routeo to_ether1 y to_ether2 en cada regla. Entonces, todo lo
que tenga marca to_ether1 saldrá por el router con GW 10.0.1.1 y todo lo que tenga marca to_ether2
saldrá por el router con GW 10.0.2.1

Con esto ya tenemos nuestro balanceo funcionando.

Balanceo de carga marcando PPPoE cliente


Bueno, salimos un poco de lo típico, esta vez toca el balanceo de carga con 2 links de internet marcando
PPPoE cliente, ya sea que utilicemos modems ADSL o routers en modo bridge. Es absolutamente
necesario leer esta guía para proceder con este manual http://www.ryohnosuke.com/foros/index.php?
threads/1678/

1. Asignando IP's a las interfaces de red

CODE, HTML o PHP Insertado:

/ip address

add address=192.168.5.1/24 interface=ether5

En efecto, sólo es necesario agregar el IP que será el GW de nuestro balanceador, esta asignada al
ether5. Repito, no es necesario colocar un IP a ether1 o a ether2, ya que las verdaderas interfaces WAN
serán pppoe-out1 y pppoe-out2, cuyas IP se agregarán automáticamente en IP -> Addresses

Ya deben de saber que las reglas que se agregan automáticamente o dinámicamente, tienen una D al
lado izquierdo.

2. Configurando enmascarado de las interfaces de red WAN

En este caso como nuestras interfaces WAN son pppoe-out1 y pppoe-out2, toca enmascarar ambas.
CODE, HTML o PHP Insertado:

/ip firewall nat

add chain=srcnat out-interface=pppoe-out1 action=masquerade

add chain=srcnat out-interface=pppoe-out2 action=masquerade

Y como es de esperarse, si tuviéramos más conexiones WAN por PPPoE cliente, tocaría agregar a cada
una de ellas.

3. Configurando las rutas, parte 1

Si leyeron ya este manual http://www.ryohnosuke.com/foros/index.php?threads/1678/ sabrán que en


este caso se va a tener que colocar como GW nuestra propia interfaz WAN, osea, pppoe-out1 y pppoe-
out2

CODE, HTML o PHP Insertado:

/ip route

add gateway=pppoe-out1 distance=1

add gateway=pppoe-out2 distance=2

Sobre las distancias, esto ya está explicado en este misma guía y en el manual que dejé. En este caso no
es necesario marcar hacer un check-gateway, ya que una de las ventajas de tener PPPoE cliente, es que
cuando uno de estos se desconecta, automáticamente la ruta se "desactiva", y como hablamos de una
conexión directa a internet, el failover es 'gratis'.

4. Configurando mangle, empieza la magia o los problemas para el que no pone atención

Es prácticamente lo mismo que la guía para router neutro, así que pasaré de largo la explicación del
proceso

4.1 Primera parte, todo lo que entre por un WAN, debe salir por el mismo WAN

CODE, HTML o PHP Insertado:

/ip firewall mangle

add chain=prerouting in-interface=pppoe-out1 connection-state=new new-connection-mark=pppoe-


out1_conn action=mark-connection passthrough=yes

add chain=prerouting in-interface=pppoe-out2 connection-state=new new-connection-mark=pppoe-


out2_conn action=mark-connection passthrough=yes

add chain=output connection-mark=pppoe-out1_conn new-routing-mark=to_pppoe-out1 action=mark-


routing passthrough=yes

add chain=output connection-mark=pppoe-out2_conn new-routing-mark=to_pppoe-out2 action=mark-


routing passthrough=yes

4.2 Segunda parte, dividiendo las conexiones de los clientes y formando grupos

CODE, HTML o PHP Insertado:

/ip firewall mangle

add chain=prerouting in-interface=ether5 connection-state=new dst-address-type=!local per-connection-


classifier=both-addresses:2/0 action=mark-connection new-connection-mark=pppoe-out1_conn
passthrough=yes

add chain=prerouting in-interface=ether5 connection-state=new dst-address-type=!local per-connection-


classifier=both-addresses:2/1 action=mark-connection new-connection-mark=pppoe-out2_conn
passthrough=yes

add chain=prerouting in-interface=ether5 connection-mark=pppoe-out1_conn action=mark-routing new-


routing-mark=to_pppoe-out1 passthrough=yes

add chain=prerouting in-interface=ether5 connection-mark=pppoe-out2_conn action=mark-routing new-


routing-mark=to_pppoe-out2 passthrough=yes

4.3 [Opcional] Tercera parte, accediendo a nuestros routers desde la red balanceada

Ciertamente pasaremos de largo este opcional, ya que no considero necesario que alguien quiera entrar
a su modem o router modo bridge; una vez configurado como tal, ¿qué más se va a querer configurar?

5. Configurando las rutas, parte 2

CODE, HTML o PHP Insertado:

/ip route

add gateway=pppoe-out1 routing-mark=to_pppoe-out1

add gateway=pppoe-out2 routing-mark=to_pppoe-out2

Y eso es todo amigos

Balanceo de carga con router neutro y marcado PPPoE cliente (mixto)

A pesar de que este tipo de configuración se saca de las conclusiones de las 2 guías previas, tocará
ponerlo aquí para los más "ciegos". Ya el más avispado se habrá dado cuenta que la única diferencia está
en IP -> Route, que en el caso de router neutro se utiliza como GW el IP directamente, y en el caso de
PPPoE cliente sólo la interfaz.
1.

CODE, HTML o PHP Insertado:

/ip address

add address=10.0.2.2/24 interface=ether2

add address=192.168.5.1/24 interface=ether5

2.

CODE, HTML o PHP Insertado:

/ip firewall nat

add chain=srcnat out-interface=pppoe-out1 action=masquerade

add chain=srcnat out-interface=ether2 action=masquerade

3.

CODE, HTML o PHP Insertado:

/ip route

add gateway=pppoe-out1 distance=1

add gateway=10.0.2.1 check-gateway=ping distance=2

4.

4.1
CODE, HTML o PHP Insertado:

/ip firewall mangle

add chain=prerouting in-interface=pppoe-out1 connection-state=new new-connection-mark=pppoe-


out1_conn action=mark-connection passthrough=yes

add chain=prerouting in-interface=ether2 connection-state=new new-connection-mark=ether2_conn


action=mark-connection passthrough=yes

add chain=output connection-mark=pppoe-out1_conn new-routing-mark=to_pppoe-out1 action=mark-


routing passthrough=yes

add chain=output connection-mark=ether2_conn new-routing-mark=to_ether2 action=mark-routing


passthrough=yes

4.2

CODE, HTML o PHP Insertado:

/ip firewall mangle

add chain=prerouting in-interface=ether5 connection-state=new dst-address-type=!local per-connection-


classifier=both-addresses:2/0 action=mark-connection new-connection-mark=pppoe-out1_conn
passthrough=yes

add chain=prerouting in-interface=ether5 connection-state=new dst-address-type=!local per-connection-


classifier=both-addresses:2/1 action=mark-connection new-connection-mark=ether2_conn
passthrough=yes

add chain=prerouting in-interface=ether5 connection-mark=pppoe-out1_conn action=mark-routing new-


routing-mark=to_pppoe-out1 passthrough=yes

add chain=prerouting in-interface=ether5 connection-mark=ether2_conn action=mark-routing new-


routing-mark=to_ether2 passthrough=yes

4.3
CODE, HTML o PHP Insertado:

/ip firewall mangle

add chain=prerouting dst-address=10.0.2.0/24 action=accept in-interface=ether5

5.

CODE, HTML o PHP Insertado:

/ip route

add gateway=pppoe-out1 routing-mark=to_pppoe-out1

add gateway=10.0.2.1 routing-mark=to_ether2 check-gateway=ping

Eso sería todo

Balanceo de carga de múltiples links de internet

Imagino que ya se sabrán al revés y al derecho cómo balancear 2 links de internet, pero ¿qué si
hablamos de 3 o 10 links de internet? En realidad al igual que la configuración mixta anterior, balancear
"n" links de internet se saca de las conclusiones de las guías de este mismo tema y con un poquitín de
análisis.

El único detalle interesante sería dividir las conexiones en grupos, ya sabemos que lo tenemos que hacer
utilizando per-connection-classifier, si son 2 links de internet utilizaremos 2/0 y 2/1, si son 3 links de
internet utilizaremos 3/0, 3/1, y 3/2, si son 4 links de internet mi instinto me dice que debería de ser
partido en 4, entonces sería 4/0, 4/1, 4/2, y 4/3, ya siguiendo la secuencia, podremos dividir las
conexiones hasta en "N" partes.

Voy a colocar las reglas para un balanceo de 3 links de internet marcando PPPoE cliente, tomando como
referencia el balanceo de 2 links de internet publicado aquí, así que las partes modificadas las pondré de
color verde, y las reglas añadidas de color rojo.
1.

CODE, HTML o PHP Insertado:

/ip address

add address=192.168.5.1/24 interface=ether5

2.

CODE, HTML o PHP Insertado:

/ip firewall nat

add chain=srcnat out-interface=pppoe-out1 action=masquerade

add chain=srcnat out-interface=pppoe-out2 action=masquerade

add chain=srcnat out-interface=pppoe-out3 action=masquerade

3.

CODE, HTML o PHP Insertado:

/ip route

add gateway=pppoe-out1 distance=1

add gateway=pppoe-out2 distance=2

add gateway=pppoe-out3 distance=3


4.

4.1

CODE, HTML o PHP Insertado:

/ip firewall mangle

add chain=prerouting in-interface=pppoe-out1 connection-state=new new-connection-mark=pppoe-


out1_conn action=mark-connection passthrough=yes

add chain=prerouting in-interface=pppoe-out2 connection-state=new new-connection-mark=pppoe-


out2_conn action=mark-connection passthrough=yes

add chain=prerouting in-interface=pppoe-out3 connection-state=new new-connection-mark=pppoe-


out3_conn action=mark-connection passthrough=yes

add chain=output connection-mark=pppoe-out1_conn new-routing-mark=to_pppoe-out1 action=mark-


routing passthrough=yes

add chain=output connection-mark=pppoe-out2_conn new-routing-mark=to_pppoe-out2 action=mark-


routing passthrough=yes

add chain=output connection-mark=pppoe-out3_conn new-routing-mark=to_pppoe-out3 action=mark-


routing passthrough=yes

4.2

CODE, HTML o PHP Insertado:

/ip firewall mangle

add chain=prerouting in-interface=ether5 connection-state=new dst-address-type=!local per-connection-


classifier=both-addresses:3/0 action=mark-connection new-connection-mark=pppoe-out1_conn
passthrough=yes

add chain=prerouting in-interface=ether5 connection-state=new dst-address-type=!local per-connection-


classifier=both-addresses:3/1 action=mark-connection new-connection-mark=pppoe-out2_conn
passthrough=yes

add chain=prerouting in-interface=ether5 connection-state=new dst-address-type=!local per-connection-


classifier=both-addresses:3/2 action=mark-connection new-connection-mark=pppoe-out3_conn
passthrough=yes

add chain=prerouting in-interface=ether5 connection-mark=pppoe-out1_conn action=mark-routing new-


routing-mark=to_pppoe-out1 passthrough=yes

add chain=prerouting in-interface=ether5 connection-mark=pppoe-out2_conn action=mark-routing new-


routing-mark=to_pppoe-out2 passthrough=yes

add chain=prerouting in-interface=ether5 connection-mark=pppoe-out3_conn action=mark-routing new-


routing-mark=to_pppoe-out3 passthrough=yes

4.3

5.

CODE, HTML o PHP Insertado:

/ip route

add gateway=pppoe-out1 routing-mark=to_pppoe-out1

add gateway=pppoe-out2 routing-mark=to_pppoe-out2

add gateway=pppoe-out3 routing-mark=to_pppoe-out3

Con esto ya es lo suficientemente fácil como hacer uno mismo balanceos de múltiples links de internet,
la única variación se encuentra en la primera parte del punto 4.2, que es donde se dividen las conexiones
y se les coloca una marca de conexión.

¿ Cómo balancear links de internet de distintas velocidades?


Tal como expliqué en las Nociones Básicas, lo que se balancea aquí son conexiones y NO ancho de
banda, hasta el momento hemos dividido las conexiones en partes iguales, y llevado cada parte a un
router.

En el caso de 2 links de internet de igual velocidad, hemos usado 2/0 y 2/1 para dividir 50% y 50% las
conexiones de nuestros clientes, y colocado una marca de conexión a cada uno de los grupos.

En el caso de 3 links de internet de igual velocidad, hemos usado 3/0, 3/1, y 3/2 para dividir 33.3%,
33.3%, y 33.3% las conexiones de nuestros clientes, y colocado una marca de conexión a cada uno de los
grupos.

Ejemplo 1

Entonces, ¿Qué hacemos si nos toca balancear un link de 20MB y otro 10MB? En este caso sólo
tendríamos que designar más conexiones de nuestros clientes al link de internet de mayor ancho de
banda, como están en proporción de 2:1, deberíamos enviar dos tercios (66.6%) de las conexiones al link
de 20MB y el tercio de conexiones que nos queda (33.3%) al link de 10MB.

La manera de proceder no es tan difícil, sólo tendremos que modificar la primera parte del punto 4.2,
volviendo al ejemplo de tener 2 links de internet, uno de 20MB y otro de 10MB.

4.2

CODE, HTML o PHP Insertado:

/ip firewall mangle

add chain=prerouting in-interface=ether5 connection-state=new dst-address-type=!local per-connection-


classifier=both-addresses:3/0 action=mark-connection new-connection-mark=pppoe-out1_conn
passthrough=yes

add chain=prerouting in-interface=ether5 connection-state=new dst-address-type=!local per-connection-


classifier=both-addresses:3/1 action=mark-connection new-connection-mark=pppoe-out1_conn
passthrough=yes

add chain=prerouting in-interface=ether5 connection-state=new dst-address-type=!local per-connection-


classifier=both-addresses:3/2 action=mark-connection new-connection-mark=pppoe-out2_conn
passthrough=yes

add chain=prerouting in-interface=ether5 connection-mark=pppoe-out1_conn action=mark-routing new-


routing-mark=to_pppoe-out1 passthrough=yes

add chain=prerouting in-interface=ether5 connection-mark=pppoe-out2_conn action=mark-routing new-


routing-mark=to_pppoe-out2 passthrough=yes

Si bien es un balanceo de 2 links de internet, dividí las conexiones en 3 partes, y si no lo han notado, las 2
primeras partes tienen la misma marca de conexión: pppoe-out1_conn y la tercera parte la marca de
conexión: pppoe-out2_conn

Entonces nuestro objetivo está cumplido, ya que el 66.6% (2 grupos de 33.3%) de la conexiones irán al
link de 20MB (suponiendo que este es pppoe-out1) y el 33.3% restante, al link de 10MB.

Ejemplo 2

Pongamos otro ejemplo, supongamos que tenemos 3 links de internet de 6MB, 2MB y 2MB, al simple
vista vemos una proporción de 3:1:1, por lo que le tendría que tocar el 60% de las conexiones a la
primera, el 20% a la segunda, y el 20% restante a la tercera.

4.2

CODE, HTML o PHP Insertado:

/ip firewall mangle

add chain=prerouting in-interface=ether5 connection-state=new dst-address-type=!local per-connection-


classifier=both-addresses:5/0 action=mark-connection new-connection-mark=pppoe-out1_conn
passthrough=yes

add chain=prerouting in-interface=ether5 connection-state=new dst-address-type=!local per-connection-


classifier=both-addresses:5/1 action=mark-connection new-connection-mark=pppoe-out1_conn
passthrough=yes

add chain=prerouting in-interface=ether5 connection-state=new dst-address-type=!local per-connection-


classifier=both-addresses:5/2 action=mark-connection new-connection-mark=pppoe-out1_conn
passthrough=yes

add chain=prerouting in-interface=ether5 connection-state=new dst-address-type=!local per-connection-


classifier=both-addresses:5/3 action=mark-connection new-connection-mark=pppoe-out2_conn
passthrough=yes

add chain=prerouting in-interface=ether5 connection-state=new dst-address-type=!local per-connection-


classifier=both-addresses:5/4 action=mark-connection new-connection-mark=pppoe-out3_conn
passthrough=yes

add chain=prerouting in-interface=ether5 connection-mark=pppoe-out1_conn action=mark-routing new-


routing-mark=to_pppoe-out1 passthrough=yes

add chain=prerouting in-interface=ether5 connection-mark=pppoe-out2_conn action=mark-routing new-


routing-mark=to_pppoe-out2 passthrough=yes

add chain=prerouting in-interface=ether5 connection-mark=pppoe-out3_conn action=mark-routing new-


routing-mark=to_pppoe-out3 passthrough=yes

En este caso dividí las conexiones en 5 grupos, 20% de conexiones en cada grupo; entonces, 3 grupos de
20% van al link pppoe-out1_conn, así que se lleva 60% del total de conexiones; 1 grupo se va con pppoe-
out2_conn, y el grupo restante de 20% se va con pppoe-out3_conn.

El mundo real

¿Qué pasaría si tenemos 2 links de internet de 5MB y 4MB? Como verán estos números son muy crueles
para hacer la configuración tal como está explicado en esta parte de la guía, ya que para hacerlo exacto
tendríamos que dividir las conexiones en 9 grupos, y asignar 5 grupos al link de 5MB, y 4 grupos al link
de 4MB, lo que harían muchas reglas.
En el mundo real este tipo de exactitud en la configuración no es tan crucial como se cree. Ya que si
volvemos al caso de 2 links de 5MB y 4MB, bien que se podría dividir en 2 grupos y llevar 50% y 50% a
cada router, y ciertamente el rendimiento será el mismo -o casi el mismo- que hacerlo en 9 grupos, que
sería la configuración exacta.

De esa manera, deberían de usar su criterio para no rellenar a Mangle de reglas, ya que cada regla es
consumo de procesador.

Saludos.

Si quieres usar el DNS cache en el balanceador, entonces no balancees las conexiones al puerto 53 UDP
del lado de los clientes, esto lo haces con un accept a ese puerto encima de las reglas del balanceo.

Saludos.

Exactamente Ryohnosuke como pondria ese codigo, puede ser asi:

Add chain=prerouting in-interface=LAN action=accept protocol=udp Dst_Port=53 to_ports=53

Muy cerca, pero en mangle no existe to-ports. xD

CODE, HTML o PHP Insertado:

/ip firewall mangle

add chain=prerouting in-interface=LAN protocol=udp dst-port=53 action=accept


Balanceo de carga con routers neutro

Este es el típico balanceo de carga que todas las guías explican, lo usaré para comenzar ya que es el más
fácil de entender. Tener en cuenta que estas IP's y nombres de las interfaces de red son relativos, ya cada
uno lo tendría que adaptar a lo que tienen y a lo que necesitan, no es obligatorio hacerlo tal como está
aquí. Este es un balanceo estandar, sin soporte de webproxy, ni hotspot, ya pueden utilizar un PC ó RB
que se dedique únicamente a la administración (core router).
1. Asignando IP's a las interfaces de red

CODE, HTML o PHP Insertado:

/ip address

add address=10.0.1.2/24 interface=ether1

add address=10.0.2.2/24 interface=ether2

add address=192.168.5.1/24 interface=ether5

Ciertamente los IP's asignados a las interfaces WAN deben de corresponder a los gateway de los routers
que tengan; osea, si tengo conectado un router con IP 10.0.1.1 al ether1, NO le voy a colocar 10.0.2.2 a
esta interfaz de red, ya que NO van a estar en el mismo rango. Ya más obvio vemos que ether5 será la
nueva puerta de enlace o gateway que tendrá ambos links de internet balanceados.

2. Configurando enmascarado de las interfaces de red WAN

Como estamos viendo en la imágen, en este ejemplo contamos con 2 interfaces de red WAN, que son
ether1 y ether2, entonces tocará enmascarar cada una de ellas.

CODE, HTML o PHP Insertado:

/ip firewall nat

add chain=srcnat out-interface=ether1 action=masquerade

add chain=srcnat out-interface=ether2 action=masquerade

Si tuviéramos más interfaces de red WAN, entonces tocaría enmascarar TODAS y cada una de estas
interfaces.
3. Configurando las rutas, parte 1

Voy a separar la configuración de IP -> Route en 2 partes, una antes del balanceo, y otra cuando ya
empezaremos a balancear, esta primera parte no debe de ser nada nuevo ni especial para nosotros, ya
que se configura siempre hasta en lo más básico. Para hacerles recordar, aquí es donde configuramos las
puertas de enlace o gateways (GW) de los routers que tenemos.

CODE, HTML o PHP Insertado:

/ip route

add gateway=10.0.1.1 check-gateway=ping distance=1

add gateway=10.0.2.1 check-gateway=ping distance=2

Bueno, sí hay algo nuevo, estas son los distance, y check-gateway, vamos a explicarlo desde lo más fácil.
No olvidar que si tenemos más gateways de otros routers, tenemos que agregarlos uno a uno, de
preferencia con distance distintos.

check-gateway, tal como su nombre lo indica, revisará el gateway que hemos configurado, ya sea por
ping o por ARP; en este caso está configurado con ping, así que hará un ping 'constante' al gateway
configurado y si no tiene respuesta, esta ruta se "desactivará" automáticamente. Si el ping vuelve a tener
respuesta, la ruta se volverá a "activar". Esto sirve como un tipo de failover muy básico, ya que sólo
responderá su apagamos o desconectamos el router con el IP al que apunta el ping.

distance, es la distancia de la ruta, "la ruta de menor distancia será la ruta predeterminada o ruta activa".
Es muy fácil de explicar con un ejemplo: En realidad hasta aquí ya deberíamos de tener internet, no
necesariamente balanceado ya que aún no hemos hecho la configuración del balanceo, pero sí
tendremos internet, entonces ¿Qué linea de internet se estará usando? como el gateway 10.0.1.1 tiene
la menor distancia, es por ahí donde saldrá el internet, entonces podemos decir que es la ruta activa o
ruta predeterminada. Si hacemos que el gateway 10.0.2.1 tenga una distancia menor, entonces ya será
por aquí por donde saldremos a internet, ya que la ruta activa cambiará.
Nota: Las rutas NO activas normalmente se tornan de un color azul, esto es absolutamente normal, en
realidad hacer el balanceo de carga sirve para poder utilizar las rutas no activas, y así aprovechar todos
los links de internet que tengamos.

Posiblemente aprenderse todo esto de las distancias no sea muy necesario para aquellos que trabajan
siempre desde el interior de su red, pero para los que trabajan desde internet, o sea, remotamente,
tomar en cuenta las distancias es muy importante.

4. Configurando mangle, empieza la magia o los problemas para el que no pone atención

Como acabo de decir, hasta este momento nosotros YA contamos con internet del mismo balanceador,
pero como aún no hemos hecho la configuración del balanceo, pues sólo tendremos internet de un solo
router. El principal objetivo de esta parte de la guía es aprender a partir conexiones en grupos y
agregarles una marca, ya con esa marca podremos enrutar esas conexiones entre los routers que
tengamos, logrando por fin el deseado balanceo... aunque esto último lo haremos más adelante en IP ->
Route.

Para poder entender mejor cómo será llevado este balanceo, dividiremos la configuración de mangle en
2 subpartes y un opcional:

4.1 Primera parte, todo lo que entre por un WAN, debe salir por el mismo WAN

CODE, HTML o PHP Insertado:

/ip firewall mangle

add chain=prerouting in-interface=ether1 connection-state=new new-connection-mark=ether1_conn


action=mark-connection passthrough=yes

add chain=prerouting in-interface=ether2 connection-state=new new-connection-mark=ether2_conn


action=mark-connection passthrough=yes
add chain=output connection-mark=ether1_conn new-routing-mark=to_ether1 action=mark-routing
passthrough=yes

add chain=output connection-mark=ether2_conn new-routing-mark=to_ether2 action=mark-routing


passthrough=yes

En realidad vemos 2 partes más, las 2 primeras reglas marcan las nuevas conexiones que ingresan por
cada WAN: ether1 y ether2, los nombres de estas marcas de conexión son ether1_conn y ether2_conn.
Las 2 siguientes reglas marcan la ruta de esas conexiones, los nombre de estas marcas de routeo son
to_ether1 y to_ether2. Ya debemos de saber que cuando tenemos una marca de routeo, esta se termina
sacando por IP -> Route, que veremos más adelante.

Esta configuración es necesaria para las conexiones que entran desde internet. Por ejemplo, si me
conecto desde mi casa utilizando winbox al balanceador de un cliente en Japón, puedo ingresar por su
router B y de ahí al balanceador, y ciertamente debería de tener la respuesta por el mismo router B, pero
si no tuviera estas reglas, las conexiones saldrían por la ruta predeterminada, que podría ser el router A,
lo trae muchos problemas.

4.2 Segunda parte, dividiendo las conexiones de los clientes y formando grupos

CODE, HTML o PHP Insertado:

/ip firewall mangle

#Parte A

add chain=prerouting in-interface=ether5 connection-state=new dst-address-type=!local per-connection-


classifier=both-addresses:2/0 action=mark-connection new-connection-mark=ether1_conn
passthrough=yes

add chain=prerouting in-interface=ether5 connection-state=new dst-address-type=!local per-connection-


classifier=both-addresses:2/1 action=mark-connection new-connection-mark=ether2_conn
passthrough=yes

#Parte B
add chain=prerouting in-interface=ether5 connection-mark=ether1_conn action=mark-routing new-
routing-mark=to_ether1 passthrough=yes

add chain=prerouting in-interface=ether5 connection-mark=ether2_conn action=mark-routing new-


routing-mark=to_ether2 passthrough=yes

Una vez más tenemos 2 partes; las 2 primeras líneas (que hacen la Parte A) son marcas de conexión, y las
2 siguientes líneas (que hacen la Parte B) marcan la ruta de esas conexiones; los nombres de las marcas
de conexión y routeo son los mismos que vimos previamente. Vemos también que en las 2 primeras
reglas lo que se marca son las conexiones "de los clientes" que ingresan por ether5, que es la interfaz de
red LAN, y que son divididas utilizando per-connection-classifier o también llamado PCC. Para dividir 50 y
50 (por ciento), hemos utilizado 2/0 y 2/1, si se diera el caso que fueran 3 links de internet de igual
velocidad, cada marca de conexión debería de tener un per-connection-classifier de 3/0, 3/1, y 3/2
respectivamente.

Sí, parece una explicación barata, después de todo parte del "secreto" para balancear varios links de
internet y links de distinta velocidad se hace en esta segunda parte de Mangle, pero ya lo veremos con
más detalle dentro de nada.

4.3 [Opcional] Tercera parte, accediendo a nuestros routers desde la red balanceada

Ya que estamos marcando todas las conexiones de nuestros clientes para llevarlas a uno y otro link de
internet, cuando queramos ingresar a cualquiera de nuestros routers no nos será posible, ya que
estamos obligados a salir a internet. La solución sería que las conexiones que tengan como destino
nuestros routers no sean marcados, en realidad es bastante simple, sólo debemos aceptar sus
conexiones.

CODE, HTML o PHP Insertado:

/ip firewall mangle

add chain=prerouting dst-address=10.0.1.0/24 action=accept in-interface=ether5

add chain=prerouting dst-address=10.0.2.0/24 action=accept in-interface=ether5

Nota: Estas reglas 2 reglas aceptando las conexiones con destino a nuestros routers deberían de estar
por encima de las demás reglas de Mangle, en especial las de la "Segunda parte".
5. Configurando las rutas, parte 2

El resultado de marcado de rutas en Mangle fue obtener 2 marcas de routeo, una para cada router o link
de internet, en este caso tenemos a to_ether1 y to_ether2, ambas rutas las tenemos que sacar por IP ->
Routes en un proceso parecido al que hicimos en la parte1 de "Configurando las rutas".

CODE, HTML o PHP Insertado:

/ip route

add gateway=10.0.1.1 routing-mark=to_ether1 check-gateway=ping

add gateway=10.0.2.1 routing-mark=to_ether2 check-gateway=ping

La explicación es la misma que con la parte1, la diferencia aquí es que no se usan distancias ya que no
son necesarias, y se agrega la marca de routeo to_ether1 y to_ether2 en cada regla. Entonces, todo lo
que tenga marca to_ether1 saldrá por el router con GW 10.0.1.1 y todo lo que tenga marca to_ether2
saldrá por el router con GW 10.0.2.1

Con esto ya tenemos nuestro balanceo funcionando.

Balanceo de carga marcando PPPoE cliente


Bueno, salimos un poco de lo típico, esta vez toca el balanceo de carga con 2 links de internet marcando
PPPoE cliente, ya sea que utilicemos modems ADSL o routers en modo bridge. Es absolutamente
necesario leer esta guía para proceder con este manual http://www.ryohnosuke.com/foros/index.php?
threads/1678/

1. Asignando IP's a las interfaces de red

CODE, HTML o PHP Insertado:


/ip address

add address=192.168.5.1/24 interface=ether5

En efecto, sólo es necesario agregar el IP que será el GW de nuestro balanceador, esta asignada al
ether5. Repito, no es necesario colocar un IP a ether1 o a ether2, ya que las verdaderas interfaces WAN
serán pppoe-out1 y pppoe-out2, cuyas IP se agregarán automáticamente en IP -> Addresses

Ya deben de saber que las reglas que se agregan automáticamente o dinámicamente, tienen una D al
lado izquierdo.

2. Configurando enmascarado de las interfaces de red WAN

En este caso como nuestras interfaces WAN son pppoe-out1 y pppoe-out2, toca enmascarar ambas.

CODE, HTML o PHP Insertado:

/ip firewall nat

add chain=srcnat out-interface=pppoe-out1 action=masquerade

add chain=srcnat out-interface=pppoe-out2 action=masquerade

Y como es de esperarse, si tuviéramos más conexiones WAN por PPPoE cliente, tocaría agregar a cada
una de ellas.

3. Configurando las rutas, parte 1

Si leyeron ya este manual http://www.ryohnosuke.com/foros/index.php?threads/1678/ sabrán que en


este caso se va a tener que colocar como GW nuestra propia interfaz WAN, osea, pppoe-out1 y pppoe-
out2

CODE, HTML o PHP Insertado:

/ip route

add gateway=pppoe-out1 distance=1

add gateway=pppoe-out2 distance=2

Sobre las distancias, esto ya está explicado en este misma guía y en el manual que dejé. En este caso no
es necesario marcar hacer un check-gateway, ya que una de las ventajas de tener PPPoE cliente, es que
cuando uno de estos se desconecta, automáticamente la ruta se "desactiva", y como hablamos de una
conexión directa a internet, el failover es 'gratis'.

4. Configurando mangle, empieza la magia o los problemas para el que no pone atención

Es prácticamente lo mismo que la guía para router neutro, así que pasaré de largo la explicación del
proceso

4.1 Primera parte, todo lo que entre por un WAN, debe salir por el mismo WAN

CODE, HTML o PHP Insertado:

/ip firewall mangle

add chain=prerouting in-interface=pppoe-out1 connection-state=new new-connection-mark=pppoe-


out1_conn action=mark-connection passthrough=yes

add chain=prerouting in-interface=pppoe-out2 connection-state=new new-connection-mark=pppoe-


out2_conn action=mark-connection passthrough=yes
add chain=output connection-mark=pppoe-out1_conn new-routing-mark=to_pppoe-out1 action=mark-
routing passthrough=yes

add chain=output connection-mark=pppoe-out2_conn new-routing-mark=to_pppoe-out2 action=mark-


routing passthrough=yes

4.2 Segunda parte, dividiendo las conexiones de los clientes y formando grupos

CODE, HTML o PHP Insertado:

/ip firewall mangle

add chain=prerouting in-interface=ether5 connection-state=new dst-address-type=!local per-connection-


classifier=both-addresses:2/0 action=mark-connection new-connection-mark=pppoe-out1_conn
passthrough=yes

add chain=prerouting in-interface=ether5 connection-state=new dst-address-type=!local per-connection-


classifier=both-addresses:2/1 action=mark-connection new-connection-mark=pppoe-out2_conn
passthrough=yes

add chain=prerouting in-interface=ether5 connection-mark=pppoe-out1_conn action=mark-routing new-


routing-mark=to_pppoe-out1 passthrough=yes

add chain=prerouting in-interface=ether5 connection-mark=pppoe-out2_conn action=mark-routing new-


routing-mark=to_pppoe-out2 passthrough=yes

4.3 [Opcional] Tercera parte, accediendo a nuestros routers desde la red balanceada

Ciertamente pasaremos de largo este opcional, ya que no considero necesario que alguien quiera entrar
a su modem o router modo bridge; una vez configurado como tal, ¿qué más se va a querer configurar?

5. Configurando las rutas, parte 2

CODE, HTML o PHP Insertado:


/ip route

add gateway=pppoe-out1 routing-mark=to_pppoe-out1

add gateway=pppoe-out2 routing-mark=to_pppoe-out2

Y eso es todo amigos

Balanceo de carga con router neutro y marcado PPPoE cliente


(mixto)
÷ÇCÕÖr*jL‚ñ(~·Îa'Z]KÊtŸ¿kÿ‰†ewŒgFÄÓ½:`EÏãÀ¿ì8u®R,.ÁËz"ºoàÊt BžJÎAŒ:dB†øèeaDcê$Qîð¤±
³;ÈpF£..¹Ù¶on“v®Y _ÕJá

También podría gustarte