Tengo un sistema con múltiples interfaces. He aislado todas esas interfaces entre sí usando algunas sysctl
opciones y tablas y reglas de enrutamiento.
Cada interfaz tiene su propia tabla de enrutamiento que define una ruta predeterminada.
Cada tabla de enrutamiento tiene un conjunto de 4 reglas que definen qué paquetes deben ir a qué tabla.
Para simplificar, digamos que tengo eth0 (192.168.1.1)
y eth1 (192.168.1.2)
.
de
192.168.1.1
la mesaeth0
a
192.168.1.1
la mesaeth0
si eth0
table eth0
si eth0
table eth0
Porque eth2
es lo mismo.
Las sysctl
opciones son:
net.ipv4.conf.all.arp_filter = 1
net.ipv4.conf.all.arp_ignore = 2
net.ipv4.conf.all.arp_announce = 1
net.ipv4.conf.all.rp_filter = 1
Esto funciona de manera excelente para el 99% de los casos de uso previstos, pero uno falla. Si se genera un paquete desde un socket que no está vinculado, como responder a un cliente UDP usando "sendto", la llamada falla con "Network Unreachable". Si se vincula una dirección IP específica antes de llamar a sendto, la llamada se realiza correctamente como se esperaba.
Aparte de configurar una ruta predeterminada general para situaciones como estas, ¿hay algo que se pueda hacer utilizando el enrutamiento de políticas (por ejemplo, iptables, ip rule) para resolver este problema?
Gracias