| Made possible by PowerDNS | ||
|---|---|---|
| Anterior | Capítulo 4. Reglas (base de datos de normas de rutado) | Siguiente |
La siguiente es una configuración común, en la que hay dos proveedores que conectan una red local (o incluso una única máquina) a la gran Internet.
________
+-------------+ /
| | |
+------------+ Proveedor 1 +-------
__ | | | /
___/ \_ +------+-------+ +-------------+ |
_/ \__ | if1 | /
/ \ | | |
| Red local -----+ Linux router | | Internet
\_ __/ | | |
\__ __/ | if2 | \
\___/ +------+-------+ +-------------+ |
| | | \
+------------+ Proveedor 2 +-------
| | |
+-------------+ \________Normalmente surgen dos preguntas dada esta configuración.
La primera es cómo enrutar respuestas a paquetes que vienen de un proveedor particular, por ejemplo Proveedor 1, de vuelta por el mismo camino.
Primero establezcamos algunos nombres simbólicos. Digamos que $IF1 es el nombre de la primera interfaz (if1 en la figura) y $IF2 el nombre de la segunda. Sean entonces $IP1 la dirección IP asociada con $IF1 y $IP2 la IP asociada con $IF2. Luego, digamos que $P1 es la dirección IP de la pasarela a Proveedor 1, y $P2 la IP de la pasarela a Proveedor 2. Por último, $P1_NET será la red IP donde está $P1, y $P2_NET la red IP donde está $P2.
Creamos dos tablas de encaminamiento adicionales, llamémoslas T1 y T2. Las añadimos a /etc/iproute2/rt_tables. Entonces las configuramos de la siguiente manera:
ip route add $P1_NET dev $IF1 src $IP1 table T1 ip route add default via $P1 table T1 ip route add $P2_NET dev $IF2 src $IP2 table T2 ip route add default via $P2 table T2Nada espectacular; simplemente hemos montado una ruta hacia una pasarela, y una ruta por defecto mediante ella, tal como sería el caso con un único proveedor, pero ponemos las rutas en tablas separadas, una por proveedor. Observe que basta la ruta hacia la red, ya que le indica cómo encontrar cualquier máquina dentro de esa red, lo que incluye la pasarela, como se especificó anteriormente.
Después configuramos la tabla de rutas principal (main). Es una buena idea encaminar las cosas a vecinos directos mediante la interfaz conectada a ese vecino. Observe las opciones «src», que se aseguran que se escoge la dirección IP correcta.
ip route add $P1_NET dev $IF1 src $IP1 ip route add $P2_NET dev $IF2 src $IP2Luego, la ruta por defecto preferente:
ip route add default via $P1A continuación, configuramos las reglas de encaminamiento. Estas son las que escogen qué tabla de rutas se usa. Querrá asegurarse de que encamina por una interfaz dada si ya tenemos una dirección de origen correspondiente:
ip rule add from $IP1 table T1 ip rule add from $IP2 table T2Estas órdenes se aseguran de que todas las respuestas al tráfico proveniente de una interfaz en particular será contestado por esta interfaz.
![]() | El lector Rod Roark señala: «Si $P0_NET es la red local y $IF0 su interfaz, serían deseables las siguientes órdenes adicionales: ip route add $P0_NET dev $IF0 table T1 ip route add $P2_NET dev $IF2 table T1 ip route add 127.0.0.0/8 dev lo table T1 ip route add $P0_NET dev $IF0 table T2 ip route add $P1_NET dev $IF1 table T2 ip route add 127.0.0.0/8 dev lo table T2» |
Esta es la configuración más básica. Funcionará para todos los procesos que estén funcionando en el propio router, y para la red local, si está enmascarada, y si no, entonces puede que tenga un espacio IP de ambos proveedores, o que vaya a enmascarar la salida por uno de los proveedores. En ambos casos, querrá añadir reglas escogiendo por cual proveedor encaminar basándose en las direcciones IP de las máquinas en la red local.
La segunda pregunta es cómo equilibar el tráfico que va por los dos proveedores. En realidad no es difícil si ya ha configurado un acceso dividido como se indicó previamente.
En lugar de escoger uno de los proveedores como la salida por defecto, configuraremos la ruta por defecto para que sea multicamino (multipath route). Por defecto, el núcleo equilibrará las rutas sobre los dos proveedores. Esto se hace como sigue (una vez más, nos apoyamos en el ejemplo de la sección sobre acceso dividido):
ip route add default scope global nexthop via $P1 dev $IF1 weight 1 \ nexthop via $P2 dev $IF2 weight 1Esto equilibrará las rutas sobre ambos proveedores. Los parámetros weight se pueden modificar para favorecer a un proveedor sobre el otro.
Tenga en cuenta que el equilibrio no será perfecto, ya que se basa en rutas, y las rutas están en caché. Esto significa que las rutas usadas más a menudo siempre irán sobre el mismo proveedor.
Más aún, si realmente quiere hacer esto, probablemente también quiera los parches de Julian Anastasov que hay en http://www.ssi.bg/~ja/#routes, la página del parche de rutas de Julian. Hará más sencillo el trabajo.