Tenho 2 placas de rede com ips públicos. Estou executando 2 serviços. Então, como faço para rotear as conexões.
Por enquanto, apenas um IP de interface está funcionando, embora ambos possam executar ping na Internet.
Minha tabela de roteamento é assim atm:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.31.128.1 0.0.0.0 UG 0 0 0 eth1
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
172.31.128.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
172.31.129.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
Então, o que eu adiciono para que funcione?
Por enquanto, a eth1 funciona sem problemas.
Responder1
Estou assumindo o Linux por causa dos nomes das interfaces e da tag "iproute2".
Isso não está funcionando, porque simplesmente especificar uma rota padrão significará que todo o tráfego de saída passará por essa interface, até mesmo respostas para solicitações que vieram da outra interface!
No seu caso, você está dizendo que tem IPs públicos, mas as duas interfaces conectadas diretamente estão com endereços IP privados, então presumo que isso significa que você tem NAT em andamento. Sempre que você tiver NAT, você não pode usar este tipo de roteamento triangular, onde os pacotes de entrada e saída seguem caminhos diferentes, porque os pacotes foram alterados no caminho pela caixa NAT, e precisam ser alterados da mesma forma na saída. Seu cliente solicitante acaba recebendo pacotes de um endereço IP que não esperava e não reconhece a resposta.
O que você precisa fazer é informar ao sistema operacional que quaisquer pacotes com endereços IP originados em sua interface em 172.31.128.0/24 em direção à Internet precisam atingir o gateway em 172.31.128.1 e, correspondentemente, para a sub-rede 172.31.129.0/24. .
Isso pode ser feito assim:
ip route add 172.31.129.0/24 dev eth0 src 172.31.129.XXX table T1
ip route add default via 172.31.129.1 table T1
ip route add 172.31.128.0/24 dev eth1 src 172.31.128.XXX table T2
ip route add default via 172.31.128.1 table T2
ip rule add from 172.31.129.XXX table T1
ip rule add from 172.31.128.XXX table T2
Você precisará substituir XXX pelo endereço IP do seu servidor nessas sub-redes locais.
Isso deve começar. Você encontrará mais sobre este assunto emseção 4.2 do Linux Advanced Routing & Traffic Control HOWTO.