Encaminhamento de porta entre interfaces públicas e privadas

1

Esta pergunta foi feita inúmeras vezes. Algumas semanas atrás, consegui fazer isso funcionar entre esta postagem ServerFault e esta postagem no blog Digital Ocean . Eu devo estar perdendo algo simples.

Meu objetivo é simplesmente encaminhar pacotes entre duas interfaces que realizam NAT ao longo do caminho. Especificamente, desejo encaminhar pacotes entre uma interface pública e uma NIC USB externa.

Verifiquei se o Kernel estava configurado para permitir o encaminhamento de porta:

$ sysctl net.ipv4.ip_forward
net.ipv4.ip_forward = 1

Além das configurações de encaminhamento específicas da interface:

net.ipv4.conf.enp0s20u4u3.forwarding = 1
net.ipv4.conf.eno1.forwarding = 1

As regras iptables que criei são:

iptables -t nat -A PREROUTING -i eno1 --protocol tcp --destination-port 10000 -j DNAT --to-destination 192.168.10.2:1234
iptables -A FORWARD -i eno1 -o enp0s20u4u3 --protocol tcp --destination-port 1234 -j ACCEPT
iptables -t nat -A POSTROUTING -o enp0s20u4u3 --protocol tcp --source 192.168.10.2 --source-port 1234 -j SNAT --to-source 192.168.10.1

Tentei testar essa configuração tentando estabelecer uma conexão TCP pela porta 10000 (se meu IP externo fosse 192.168.2.50).

$ nc -v 192.168.2.50 10000
nc: connect to 192.168.2.50 port 10000 (tcp) failed: Connection refused

Esse comportamento faz sentido se minhas entradas de regra estiverem incorretas. Então, eu despejei as estatísticas da regra

$ iptables -t nat -L -v
Chain PREROUTING (policy ACCEPT 15 packets, 2885 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DNAT       tcp  --  eno1   any     anywhere             anywhere             tcp dpt:ndmp to:192.168.10.2:1234

Chain INPUT (policy ACCEPT 15 packets, 2885 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 SNAT       tcp  --  any    enp0s20u4u3  192.168.10.2         anywhere             tcp spt:search-agent to:192.168.10.1

Portanto, os pacotes TCP de entrada não estão correspondendo à primeira regra de PREROUTING da cadeia. Não tenho certeza de onde está o erro; a primeira regra é tão simples. A ideia é:

O tráfego de entrada para 192.168.2.50:10000 recebe NAT para 192.168.10.2:1234 em uma interface privada.

    
por sherrellbc 24.01.2017 / 14:35

0 respostas