Я пытаюсь перенаправить соединения с порта 18600 на порт 9980. У меня это в /etc/sysconfig/iptables
:
# Generated by iptables-save v1.3.5 on Mon Oct 21 18:30:43 2013
*nat
:PREROUTING ACCEPT [2:280]
:POSTROUTING ACCEPT [12:768]
:OUTPUT ACCEPT [12:768]
-A PREROUTING -p tcp -m tcp --dport 18600 -j REDIRECT --to-ports 9980
COMMIT
# Completed on Mon Oct 21 18:30:43 2013
и /etc/init.d/iptables status
показывает мне это:
Table: nat
Chain PREROUTING (policy ACCEPT)
num target prot opt source destination
1 REDIRECT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:18600 redir ports 9980
Однако я могу использовать telnet с localhost на порт 9980, но не на порт 18600. Что мне не хватает? (Это виртуальная машина на базе CentOS.)
Пакеты с локального компьютера не проходят через таблицу NAT PREROUTING.
Тест с другой машины.
Если вам нужно DNAT для трафика, исходящего с локального компьютера, используйте таблицу NAT OUTPUT.