Erro ao configurar duas interfaces de rede no mesmo servidor

1

Estou configurando um servidor com duas interfaces de rede, cada uma com seu endereço IP. Eu tenho 2 programas diferentes escutando na porta 8080 (cada um em cada endereço IP) e estou usando o iptables para redirecionar o tráfego da porta 80 para 8080.

O problema é que, na verdade, não consigo me conectar ao endereço IP da eth1 de outro computador. Se eu tentar do mesmo servidor, ele funciona como esperado, mas a partir de outro computador a conexão expira. Eu estou supondo que o iptables está enviando todo o tráfego para eth0 e porque não há nenhum programa ouvindo aquele IP naquela interface, então a conexão expira, mas eu não tenho certeza de como consertá-lo.

Aqui está a saída da minha configuração de rede:

→  sudo iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination         
REDIRECT   tcp  --  anywhere             anywhere             tcp dpt:https redir ports 8443
REDIRECT   tcp  --  anywhere             anywhere             tcp dpt:http redir ports 8080

Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

Chain POSTROUTING (policy ACCEPT)
target     prot opt source               destination         


→  ip route               
default via 172.31.16.1 dev eth0 
172.31.16.0/20 dev eth0  proto kernel  scope link  src 172.31.21.84 
172.31.16.0/20 dev eth1  proto kernel  scope link  src 172.31.26.28 


→  route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.31.16.1     0.0.0.0         UG    0      0        0 eth0
172.31.16.0     0.0.0.0         255.255.240.0   U     0      0        0 eth0
172.31.16.0     0.0.0.0         255.255.240.0   U     0      0        0 eth1


→  ifconfig
eth0      Link encap:Ethernet  HWaddr 02:bb:c3:cc:8b:47  
          inet addr:172.31.21.84  Bcast:172.31.31.255  Mask:255.255.240.0
          inet6 addr: fe80::bb:c3ff:fecc:8b47/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:9001  Metric:1
          RX packets:6300 errors:0 dropped:0 overruns:0 frame:0
          TX packets:5564 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:1095572 (1.0 MB)  TX bytes:1064691 (1.0 MB)

eth1      Link encap:Ethernet  HWaddr 02:71:e7:b4:bc:52  
          inet addr:172.31.26.28  Bcast:172.31.31.255  Mask:255.255.240.0
          inet6 addr: fe80::71:e7ff:feb4:bc52/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:9001  Metric:1
          RX packets:238 errors:0 dropped:0 overruns:0 frame:0
          TX packets:11 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:11236 (11.2 KB)  TX bytes:1422 (1.4 KB)

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:65536  Metric:1
          RX packets:63 errors:0 dropped:0 overruns:0 frame:0
          TX packets:63 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:43236 (43.2 KB)  TX bytes:43236 (43.2 KB)
    
por Topo 23.06.2018 / 07:03

2 respostas

1

Acho que você precisa criar regras individuais para as duas NICs. Eu tentaria algo assim:

$ sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
$ sudo iptables -A PREROUTING -t nat -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 8080

$ sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 443 -j REDIRECT --to-port 8443
$ sudo iptables -A PREROUTING -t nat -i eth1 -p tcp --dport 443 -j REDIRECT --to-port 8443
    
por 23.06.2018 / 07:23
1

Eu tive que adicionar regras individuais para o iptables como o slm disse e também tive que usar 2 tabelas de pesquisa para as regras de cada interface, assim:

sudo ip route add default via 172.31.16.1 dev eth0 tab 1
sudo ip route add default via 172.31.16.1 dev eth1 tab 2

sudo ip rule add from 172.31.21.84/32 tab 1
sudo ip rule add from 172.31.26.28/32 tab 2
    
por 23.06.2018 / 13:50