Estoy ejecutando CentOS y estoy usando ip route
y ip rule
para enrutar.
Actualmente tengo unip rule
from 10.8.23.0/28 table 1234
yip route
default via 10.8.23.254 eth1
10.10.10.10 via 10.10.10.1 eth1
10.0.0.0/14 dev test-interface table 1234
Parece que tengo ip rule
éxito en la segunda línea ip route
, por lo que incluso si la IP de destino es 10.10.10.10, mis paquetes aún se envían test-interface
si la IP de origen es 10.8.23.0/28
.
¿Cómo puedo asegurarme de que esto 10.10.10.10 via 10.10.10.1 eth1
anule la "regla p" incluso cuando la IP de origen coincida con la regla? Espero que tenga sentido :)
Las pruebas ip route get 10.10.10.10
me dan:
10.10.10.10 via 10.10.10.1 dev eth1 src 10.8.23.1
pero ip route get 10.10.10.10 src 10.0.0.13
me da:
10.10.10.10 via 10.10.10.254 dev test-interface src 10.8.23.1
Por eso src IP
se prioriza sobre la IP de destino.
Respuesta1
Simplemente puede pensar ip rule
que es una forma de crear/tener más tablas de enrutamiento IP (no solo la predeterminada).
Para resolver su problema, debe agregar otra ip rule
entrada para manejar su caso de ruta específico. Por ejemplo, puede utilizar el siguiente comando:
$ sudo ip rule add to 10.10.10.10/32 lookup 123 priority 10
Aquí, supongo que 10
es lo suficientemente pequeño como para ser el primero ip rule
. Esto depende de la salida de ip rule ls
. Le mostrará todas las reglas según la prioridad (un valor menor significa mayor prioridad y se muestra primero).
Si necesita combinar comprobaciones de origen y destino en su ip rule
, puede utilizar:
$ sudo ip rule add from 10.8.23.0/28 to 10.10.10.10/32 lookup 123 priority 10
La tabla 123
debe contener la ruta correcta, como por ejemplo:
$ sudo ip route add 10.10.10.10/32 via 10.10.10.1 table 123