ip rule não deve vencer o ip route

1

Estou executando o CentOS e estou usando ip route e ip rule para roteamento.

Atualmente, tenho um ip rule

from 10.8.23.0/28 table 1234

e ip 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 meu ip rule suckou a segunda linha em ip route , portanto, mesmo que o IP de destino seja 10.10.10.10, meus pacotes ainda serão enviados via test-interface se o IP de origem for 10.8.23.0/28 .

Como posso ter certeza de que 10.10.10.10 via 10.10.10.1 eth1 anula a regra "p" mesmo quando o IP de origem corresponde à regra? Espero que faça sentido:)

Testar ip route get 10.10.10.10 me 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.13 me dá:

10.10.10.10 via 10.10.10.254 dev test-interface  src 10.8.23.1

Portanto, src IP é priorizado sobre o IP de destino.

    
por Kasper Nielsen 21.02.2018 / 12:57

1 resposta

1

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

Para resolver seu problema, você precisa adicionar outra entrada ip rule 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, suponho que 10 seja pequeno o suficiente para ser o primeiro ip rule . Isso depende da saída de ip rule ls . Ele mostrará todas as regras de acordo com a prioridade (um valor menor significa maior prioridade e é mostrado primeiro).

Se você precisar combinar verificações de origem e destino no seu ip rule , poderá usar:

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

A tabela 123 deve conter a rota certa, como:

$ sudo ip route add 10.10.10.10/32 via 10.10.10.1 table 123
    
por 21.02.2018 / 13:47