O envio do UDP falha ao usar tabelas de roteamento específicas

0

Eu tenho um sistema com várias interfaces. Eu isolei todas essas interfaces umas das outras usando algumas opções de sysctl e tabelas e regras de roteamento.

Cada interface possui sua própria tabela de roteamento, definindo uma rota padrão.

Cada tabela de roteamento tem um conjunto de 4 regras que definem quais pacotes devem ir para qual tabela.

Para simplificar, digamos que eu tenha eth0 (192.168.1.1) e eth1 (192.168.1.2) .

from 192.168.1.1 table eth0

to 192.168.1.1 table eth0

iif eth0 table eth0

oif eth0 table eth0

Para eth2 , é o mesmo.

As opções sysctl são:

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

Isso funciona de maneira excelente para 99% dos casos de uso previstos, mas um falha. Se um pacote for gerado a partir de um soquete não vinculado, como responder a um cliente UDP usando "sendto", a chamada falhará com "Rede Inacessível". Se um endereço IP específico for ligado antes de chamar o sendto, a chamada será bem-sucedida conforme o esperado.

Falta de configurar uma rota padrão abrangente para situações como essas, há algo que possa ser feito usando o roteamento de políticas (por exemplo, iptables, regra ip) para resolver esse problema?

Obrigado

    
por IMerin 11.04.2018 / 21:46

0 respostas