La regla ip no debería vencer a la ruta ip

La regla ip no debería vencer a la ruta ip

Estoy ejecutando CentOS y estoy usando ip routey ip rulepara 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-interfacesi 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 eth1anule 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.10me 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.13me da:

10.10.10.10 via 10.10.10.254 dev test-interface  src 10.8.23.1

Por eso src IPse prioriza sobre la IP de destino.

Respuesta1

Simplemente puede pensar ip ruleque es una forma de crear/tener más tablas de enrutamiento IP (no solo la predeterminada).

Para resolver su problema, debe agregar otra ip ruleentrada 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 10es 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 123debe contener la ruta correcta, como por ejemplo:

$ sudo ip route add 10.10.10.10/32 via 10.10.10.1 table 123

información relacionada