Remitiéndonos al uso mas simple, el de reglas:
# ip rule help
Usage: ip rule [ list | add | del | flush ] SELECTOR ACTION
SELECTOR := [ from PREFIX ] [ to PREFIX ] [ tos TOS ] [ fwmark FWMARK ]
[ dev STRING ] [ pref NUMBER ]
ACTION := [ table TABLE_ID ]
[ prohibit | reject | unreachable ]
[ realms [SRCREALM/]DSTREALM ]
TABLE_ID := [ local | main | default | NUMBER ]
Podemos rutar los paquetes por los diferentes interfaces según configuremos nuestro "SELECTOR", siguiendo el caso más simple, que se relata en enrutado simple por origen direccionamos los paquetes provinientes de una ip a través de la línea secundaria:
# ip rule
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
Añadimos un nombre a la tabla de rutas por no trabajar con números:
# echo 200 Ruta-Coleguita >> /etc/iproute2/rt_tables
Metemos la regla de la que hablábamos antes, todo lo que provenga de la 10.0.0.10 mirará la tabla "Ruta-Coleguita" que vamos a crear:
# ip rule add from 10.0.0.10 table Ruta-Coleguita
Creamos la ruta:
# ip route add default via x.x.x.x dev ppp2 table Ruta-Coleguita
# ip route add 10.0.0.0/24 dev eth0 table Ruta-Coleguita
# ip route flush cache
A partir de este momento todos los paquetes que vengan de la 10.0.0.10 saldrán por el enlace ppp2. Esta función es completamente compatible con hacer SNAT sobre el interfaz de salida.
Es necesario añadir la ruta local "ip route add 10.0.0.0/24" a la tabla si queremos que todo funcione correctamente, durante unas pruebas he podido comprobar la pérdida de paquetes ARP si se carece de rutas locales.
Por último, un enlace a la newsletter de gentoo donde nos explican como configurar el archivo net con iproute2
Tags: linux router ip rule nat arp
comentarios:
Publicar un comentario