DNAT с изменением порта не работает

DNAT с изменением порта не работает

Я использую эту команду для установки NAT на моем контейнере виртуальной машины:

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

с

  • MAIN_IP — глобальный IP-адрес главного сервера
  • SUBNET — это первые три цифры подсети моей виртуальной машины, например, «192.168.1».
  • $2 — это порт, который я хочу переслать
  • $3 — последний сегмент подсети, например 20

Это отлично работает для прямого NAT.

Но сегодня я хотел объявить DNAT для порта SSH, поэтому я установил $2 на 5022, а $3 на 20:22, в результате чего получилась следующая строка для ясности:

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

Но это не работает: соединения истекают по тайм-ауту, когда я пытаюсь подключиться к виртуальной машине по ssh. Обратите внимание, что они не истекают по тайм-ауту, когда я не использую nat, так что все работает отлично. Он не работает только через NAT.ssh [email protected]

UFW не включен на сервере контейнера. Он практически ничего не слушает, так что нет необходимости что-либо закрывать — или я на это надеюсь.

Я предполагаю, что правило DNAT верно, но как мне определить, что именно меня блокирует?

Редактировать: вывод таблицы 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

Редактировать 2: Я временно решаю проблему с помощью VM sshd, прослушивающего несколько портов. Таким образом NAT работает просто отлично.

Связанный контент