我有一个运行 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/
浏览器时,它会尝试连接主机很长时间,然后显示服务器没有响应的消息。
什么会导致这个问题?