如何配置端口转发以使另一台机器可以访问内部服务?

如何配置端口转发以使另一台机器可以访问内部服务?

我有一个正在监听的现有服务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 命令行有任何错误吗?

答案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

答案2

有一个sysctl设置可以防止dnat环回。eth0请将以下内容替换为您流入的外部接口流量。

允许它

# sysctl -w net.ipv4.conf.eth0.route_localnet=1

并检查设置。

# cat /proc/sys/net/ipv4/conf/eth0/route_localnet 

现在将您的设置dnat127.0.0.1可以工作。

相关内容