Eu tenho uma configuração complicada em algum lugar que usa esse tipo de rede. Eu tenho duas interfaces internas e uma interface externa para a Internet. (isso está prestes a mudar para duas interfaces externas em sub-redes diferentes e na interface interna dividida em duas interfaces internas, mas seguindo o mesmo caminho) De qualquer forma - para a resposta!
digamos que você tenha duas interfaces internas em:
eth0 192.168.1.2
eth1 192.168.1.3
Você usa um uplink interno para a Internet (roteador) em 192.168.1.1
Assim, sua tabela de roteamento padrão será semelhante a (comando: netstat -rn
)
Dest Gw Genmask Flags ... ... Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG eth0
192.168.1.0 0.0.0.0 255.255.255.0 U eth0
192.168.1.0 0.0.0.0 255.255.255.0 U eth1
Aqui está o seu problema, toda a saída irá via eth0
, porque é o primeiro hit na sua tabela de roteamento. Então, se você usar outro computador (ou mesmo esta mesma caixa) para pingar 192.168.1.3
( eth1
), você não receberá uma resposta? Por quê? Porque está vindo de 192.168.1.2
.
Você terá que usar iproute2
para configurar tabelas de roteamento individuais para cada dispositivo. Dessa forma, quando um dispositivo recebe algo na cadeia INPUT
, ele responde por meio do mesmo dispositivo.
edite /etc/iproute2/rt_tables
add:
1 my_eth0
2 my_eth1
execute então o seguinte:
ip route add 192.168.1.0/24 dev eth0 table my_eth0
ip route add default via 192.168.1.1 dev eth0 table my_eth0
ip route add 192.168.1.0/24 dev eth1 table my_eth1
ip route add default via 192.168.1.1 dev eth1 table my_eth1
Agora adicione as regras para as tabelas a serem usadas executando:
ip rule add from 192.168.1.2 table my_eth0
ip rule add from 192.168.1.3 table my_eth1
Isso dirá ao seu sistema que, quando receber uma solicitação em eth0
, use a tabela de roteamento my_eth0
para responder. Quando receber uma solicitação em eth1
, responda usando a tabela de roteamento my_eth1
. Quando você obtiver os comandos trabalhando, coloque-os em seu arquivo /etc/rc.local
e torne o rc.local
executável executando sudo chmod u+x /etc/rc.local
dessa maneira que suas rotas não são eliminadas quando você reinicializa. Divirta-se!