DNAT com alteração de porta não funcionando

0

Estou usando esse comando para estabelecer o NAT no meu contêiner de VMs:

iptables -t nat -A PREROUTING -d ${MAIN_IP} -p tcp --dport ${2} -j DNAT --to-destination ${SUBNET}${3}

com

  • MAIN_IP sendo o IP global do servidor principal
  • SUBNET sendo os primeiros três números da minha sub-rede da VM, por exemplo "192.168.1."
  • $ 2 sendo a porta que desejo encaminhar
  • $ 3 é o último segmento de sub-rede, por exemplo 20

Isso funciona bem para o NAT direto.

Mas hoje eu queria declarar uma porta DNAT para SSH, então defini $ 2 a 5022 e $ 3 a 20:22, resultando na seguinte linha, para maior clareza:

iptables -t nat -A PREROUTING -d ${MAIN_IP} -p tcp --dport 5022 -j DNAT --to-destination 192.168.1.20:22

No entanto, este não funciona: as conexões esgotam quando eu tento ssh para a VM. Note que eles não têm tempo limite quando eu não uso nat, então ssh [email protected] funciona muito bem. Só não funciona através do NAT.

O UFW não está ativado no servidor de contêiner. Não ouve praticamente nada, então não há necessidade de fechar nada - ou assim espero.

Estou assumindo que a regra DNAT está correta, então como determinar o que está me bloqueando?

Editar: saída da tabela nat:

#iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target     prot opt source               destination
DNAT       tcp  --  anywhere             my-server         tcp dpt:2113 to:192.168.1.35
DNAT       tcp  --  anywhere             my-server         tcp dpt:2115 to:192.168.1.35

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
MASQUERADE  all  --  anywhere             anywhere

Editar 2: Estou resolvendo temporariamente o problema de ter o VM sshd ouvindo várias portas. Desta forma, o NAT funciona bem.

    
por velis 03.06.2018 / 08:02

0 respostas