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
tableeth0
to
192.168.1.1
tableeth0
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
Tags networking iptables routing linux udp