Remova o gateway definido para eth0 (192.168.5.1). Se você precisar de múltiplas rotas padrão, você precisará usar iproute2 para criar uma política para isso.
Eu tenho duas placas de rede, configuradas assim:
eth0 Link encap:Ethernet HWaddr 00:19:d1:31:08:e8
inet addr:192.168.5.104 Bcast:192.168.5.255 Mask:255.255.255.0
inet6 addr: fe80::219:d1ff:fe31:8e8/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:4564126 errors:590 dropped:0 overruns:0 frame:329
TX packets:9707383 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1151788275 (1.0 GiB) TX bytes:189318786 (180.5 MiB)
Interrupt:20 Memory:e0300000-e0320000
eth1 Link encap:Ethernet HWaddr 00:e0:4c:51:0d:55
inet addr:85.255.103.4 Bcast:85.255.103.255 Mask:255.255.255.0
inet6 addr: fe80::2e0:4cff:fe51:d55/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:5466 errors:0 dropped:0 overruns:0 frame:0
TX packets:499 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:518961 (506.7 KiB) TX bytes:34236 (33.4 KiB)
Interrupt:22 Base address:0x1000
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:136 errors:0 dropped:0 overruns:0 frame:0
TX packets:136 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:15556 (15.1 KiB) TX bytes:15556 (15.1 KiB)
A rota do ip:
$ ip route
192.168.5.0/24 dev eth0 proto kernel scope link src 192.168.5.104
85.255.103.0/24 dev eth1 proto kernel scope link src 85.255.103.4
default via 192.168.5.1 dev eth0
default via 85.255.103.1 dev eth1
Quando faço ping no endereço IP da eth1, não obtenho resposta.
Com o tcpdump, percebi que todas as solicitações de eco ICMP enviadas para a eth1 são respondidas através da interface eth0.
Como posso conseguir que as duas interfaces funcionem corretamente? Se eu pingar eth1, ele também deve retornar a resposta na eth1.
O eth0 tem uma conexão de internet mais rápida, eu só quero manter a eth1 por perto e passar por isso quando o aplicativo for ligado ao ip específico.
Remova o gateway definido para eth0 (192.168.5.1). Se você precisar de múltiplas rotas padrão, você precisará usar iproute2 para criar uma política para isso.
Parece que você precisa remover um segundo gateway padrão:
route del default 192.168.5.1
Depois disso, o IP 85.255.103.4 funcionará, mas você terá problemas com a sub-rede 192.168.5.0/24. Para corrigir isso, você precisa rotear todos os pacotes com um IP de origem 192.168.5.10 via 192.168.5.1. Para isso, use o roteamento de políticas:
echo '300 eth0tbl' >> /etc/iproute2/rt_tables
ip route add default via 192.168.5.1 table eth0tbl
ip rule add from 192.168.5.10 table eth0tbl
Em situações como esta, é melhor ser explícito.
Existem muitos motivos pelos quais você pode não conseguir fazer ping ou ssh para o IP na eth1, mas para iniciantes você deve configurar o roteamento baseado em política que força o tráfego a usar a mesma interface para TX usada para RX.
Você quer que o tráfego use a eth0 para a conexão mais rápida, então deixaremos isso para a rota padrão.
Em seguida, vamos definir as tabelas, criar as regras e criar as rotas.
Defina duas tabelas em / etc / iproute2 / rt_tables da seguinte forma:
100 eth0if
101 eth1if
Crie duas regras (o tráfego TX de 192.168.5.104 é forçado a usar a tabela eth0if, etc ...):
from 192.168.5.104 table eth0if
from 85.255.103.4 table eth1if
Em seguida, crie as rotas para cada interface:
Para eth0:
default via 192.168.5.1 dev eth0 table eth0if
192.168.5.0/24 via 192.168.5.104 dev eth0 table eth0if
192.168.5.0/24 via 192.168.5.104 dev eth0 table main
Para a eth1:
default via 85.255.103.1 dev eth1 table eth1if
85.255.103.0/24 via 85.255.103.4 dev eth1 table eth1if
85.255.103.0/24 via 85.255.103.4 dev eth1 table main
Agora, qualquer conexão de soquete feita com eth1 deve responder a partir de eth1 e ser bem-sucedida. No entanto, qualquer conexão remota feita a partir de esta caixa que não é destinada a 85.255.103.0/24 ainda usará a rota padrão (eth0).
REGRA: (Se uma rota não existe, o padrão é usado)
Se você precisar usar a eth1 para conexões de saída onde estiver usando software que não permite definir a interface / IP de origem, será necessário criar rotas para ela.
Por exemplo, se você precisar de uma rota de host para um servidor do Google específico, use:
74.125.224.194/32 via 85.255.103.1 dev eth1 src 85.255.103.4 table eth1if
Ou se você quiser fazer o mesmo com a sub-rede, faça o seguinte:
74.125.224.0/24 via 85.255.103.1 dev eth1 src 85.255.103.4 table eth1if