iptables将端口转发到另一个网络

时间:2013-04-15 02:56:23

标签: linux iptables portforwarding

我有一个运行CentOS的VDS,有两个接口:eth0和ham0。 eth0是我的WAN接口,可从Internet访问外部IP,ham0是小型VPN网络(Logmein Hamachi)的接口。

VPN网络中有三台机器,其中一台是我家的Linux机箱,它在80端口运行Apache。这台机器在ISP的NAT后面,无法从外面看到。 我想在我的VDS上创建一个规则,将来自Internet(eth0接口)的端口8081的连接转发到我的VPN网络中的这个linux盒子。像这样:

[Internet]   --->  [VDS server with public IP]  --->  [Apache server inside VPN]

我使用了以下规则:

iptables -t nat -A PREROUTING -p tcp -d *external_ip* --dport 8081 -j DNAT --to *internal_ip*:80
iptables -A FORWARD -p tcp -d *internal_ip* --dport 80 -j ACCEPT
iptables -t nat -A POSTROUTING -p tcp --dst *internal_ip*  -j LOG --log-level warning --log-prefix "[REQUEST_FORWARDED]"

但它不起作用。我可以在/ var / log / messages中看到“REQUEST_FORWARDED”消息,但是当我在浏览器中转到http://my_eternal_ip:8081/时,它会尝试连接到主机很长一段时间,然后显示一条消息服务器没有回复。

什么可能导致这个问题?

1 个答案:

答案 0 :(得分:4)

我猜您需要确保已启用“/ proc / sys / net / ipv4 / ip_forward”,否则

echo 1 > /proc/sys/net/ipv4/ip_forward

以上命令可以帮助您进行IP转发。

希望这对你有所帮助。