У меня есть существующая служба, которая слушает 127.0.0.1:2009
, и я хочу получить доступ к этой службе с другого компьютера, поэтому я попытался настроить переадресацию портов для этого:
sudo /sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp -d xx.xx.xx.xx --dport 8192 -j DNAT --to-destination 127.0.0.1:2009
Но это не работает. Я даже не увидел этого правила, когда попытался перечислить все правила "nat", используя:
$ sudo /sbin/iptables -t nat -L -n
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
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
Есть ли ошибки в командной строке iptables выше?
Eсть sysctl
установка предотвращения dnat
к шлейфу. заменить eth0
ниже с вашим внешним интерфейсом входит трафик.
Позволить это
# sysctl -w net.ipv4.conf.eth0.route_localnet=1
и проверить настройку.
# cat /proc/sys/net/ipv4/conf/eth0/route_localnet
Теперь установите свой dnat
к 127.0.0.1
буду работать.
Я думаю, вам нужно избавиться от пункта назначения, у меня есть аналогичное правило, и это будет адаптированная версия для вашей проблемы:
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 8192 -j DNAT --to 127.0.0.1:2009
iptables -A INPUT -p tcp -m state --state NEW --dport 8192 -i eth0 -j ACCEPT
В противном случае опубликуйте свой полный список iptables с помощью
(sudo) iptables -L -n -v