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
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.