regra de ip não deve superar a rota de ip

regra de ip não deve superar a rota de ip

Estou executando o CentOS e estou usando ip routee ip rulepara roteamento.

Atualmente tenho umip rule

from 10.8.23.0/28 table 1234

eip 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 ip rulea segunda linha foi bem-sucedida ip route, portanto, mesmo que o IP de destino seja 10.10.10.10, meus pacotes ainda serão enviados test-interfacese o IP de origem for 10.8.23.0/28.

Como posso ter certeza de que isso 10.10.10.10 via 10.10.10.1 eth1anula a regra ìp, mesmo quando o IP de origem corresponde à regra? Espero que faça sentido :)

O teste ip route get 10.10.10.10me dá:

10.10.10.10 via 10.10.10.1 dev eth1  src 10.8.23.1

mas ip route get 10.10.10.10 src 10.0.0.13me dá:

10.10.10.10 via 10.10.10.254 dev test-interface  src 10.8.23.1

Portanto, src IPé priorizado em relação ao IP de destino.

Responder1

Você pode simplesmente pensar ip ruleque é uma maneira de criar/ter mais tabelas de roteamento IP (não apenas a padrão).

Para resolver seu problema, você precisa adicionar outra ip ruleentrada para lidar com seu caso de rota específico. Por exemplo, você pode usar o seguinte comando:

$ sudo ip rule add to 10.10.10.10/32 lookup 123 priority 10

Aqui, presumo que 10seja pequeno o suficiente para ser o primeiro ip rule. Isso depende da saída de ip rule ls. Ele irá mostrar todas as regras de acordo com a prioridade (um valor menor significa maior prioridade e é mostrado primeiro).

Se precisar combinar verificações de origem e destino em seu arquivo ip rule, você pode usar:

$ sudo ip rule add from 10.8.23.0/28 to 10.10.10.10/32 lookup 123 priority 10

A tabela 123deve conter a rota correta, como:

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

informação relacionada