Eu tenho um sistema com múltiplas interfaces. Isolei todas essas interfaces umas das outras usando algumas sysctl
opções e tabelas e regras de roteamento.
Cada interface possui sua própria tabela de roteamento definindo uma rota padrão.
Cada tabela de roteamento possui 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)
.
da
192.168.1.1
mesaeth0
para
192.168.1.1
mesaeth0
se eth0
table eth0
oif eth0
table eth0
Pois eth2
é a mesma coisa.
As sysctl
opções 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 excelentemente para 99% dos casos de uso pretendidos, mas um falha. Se um pacote for gerado a partir de um soquete que não esteja vinculado, como responder a um cliente UDP usando "sendto", a chamada falhará com "Rede Inacessível". Se um endereço IP específico for vinculado antes de chamar sendto, a chamada será bem-sucedida conforme o esperado.
Além de configurar uma rota padrão abrangente para situações como essas, há algo que possa ser feito usando roteamento de política (por exemplo, iptables, regra de ip) para resolver esse problema?
Obrigado