Eu tenho 2 servidores, cada um deles tem 3 interfaces de rede. 1 interface ("eno") é usada para conexão de internet via gateway e 2 interfaces ("ens0", "ens1") são usadas para conectar os dois servidores diretamente ponto a ponto. Parece:
|
gw
| |
S1 == S2
Eu preciso enviar dados de "ens0" para "ens0" e de "ens1" para "ens1" independentemente. Quando estou tentando fazer isso no servidor S2, descobri que todo o tráfego passa por ens0 apesar de eu ligar 2 soquetes (C ++) a interfaces diferentes. Quando faço isso no S1, funciona bem. Então eu verifiquei "tabelas ip". Eles são:
S1 (funciona corretamente):
default via 192.168.1.4 dev eno1
192.168.1.0/24 dev eno1 proto kernel scope link src 192.168.1.3
192.168.2.0/24 dev ens3f0 proto kernel scope link src 192.168.2.1
192.168.2.0/24 dev ens3f1 proto kernel scope link src 192.168.2.2
S2 (funciona errado):
default via 192.168.1.4 dev eno2 proto static metric 100
default via 192.168.1.4 dev ens3f0 proto static metric 101
default via 192.168.1.4 dev ens3f1 proto static metric 102
192.168.1.0/24 dev eno2 proto kernel scope link src 192.168.1.2 metric 100
192.168.1.4 dev ens3f0 proto static scope link metric 100
192.168.1.4 dev ens3f1 proto static scope link metric 101
192.168.2.0/24 dev ens3f0 proto kernel scope link src 192.168.2.3 metric 100
192.168.2.0/24 dev ens3f1 proto kernel scope link src 192.168.2.4 metric 101
A tabela para S2 foi gerada pelo sistema operacional.
Para consertar o problema, tentei alterar a tabela S2 ip para S1. Eu mudei para o estado:
default via 192.168.1.4 dev eno2 proto static
192.168.1.0/24 dev eno2 proto kernel scope link src 192.168.1.2
192.168.2.0/24 dev ens3f0 proto kernel scope link src 192.168.2.3
Então, quando estou tentando fazer
sudo ip route add 192.168.2.0/24 dev ens3f1 src 192.168.2.4
Eu recebi o erro
RTNETLINK answers: File exists
net.ipv4.ip_forward = 0 for both servers.
Minhas perguntas são:
1) Por que não posso adicionar a última entidade no S2 quando está no S1?
2) Como configurar corretamente as tabelas ip para ambas as interfaces poderia operar independentemente e o encaminhamento de tráfego para elas era impossível? (Eu quero ter certeza se eu enviar tráfego para uma interface específica - ele nunca passará por outro).
Tags networking routing linux