我想转发一个内部IP地址到外部。
所以这就是我所做的:
echo 1 > /proc/sys/net/ipv4/ip_forward
然后我使用iptables:
iptables -t nat -A PREROUTING -s 192.168.1.x -j DNAT --to-destination 95.211.yz iptables -t nat -A POSTROUTING -j MASQUERADE
在这一点之后,当我ping 192.168.1.x时,我希望到达95.211.yz的服务器。 换句话说,我希望把所有针对内部IP的stream量都转换成外部IP,但这种情况不会发生。
我错在哪里?
在这种情况下,不一定,例如在ICMP客户端中看到的是真正发生的事情。 DNAT连接将按预期工作,但对于ICMP客户端将继续显示您的私有IP地址。
确保也允许从目标服务器到客户端/networking的响应。
http://www.mad-hacking.net/documentation/linux/security/iptables/nat.xml
我假设你的意思是你希望能够使用私有IP空间中的地址,从局域网上的主机到达WAN上的主机。 如果这是不正确的,那么这个答案可能没有帮助。
您需要将到达LAN接口的stream量与设置为要重新映射的专用地址( 192.168.1.5 )的目标匹配。 您也只需要在WAN接口上退出MASQUERADEstream量。
iptables -t nat -A PREROUTING -i ethLAN -d 192.168.1.5 -j DNAT --to-destination 95.211.1.1 iptables -t nat -A POSTROUTING -o ethWAN -j MASQUERADE
你的主要错误是-s应该是-d ,但你也应该指定接口。 您还需要确保您select的私有空间地址与LAN上的任何networking不在同一个子网中。 这是必要的,因为如果你在同一个子网上使用一个地址,发起方主机将发送ARP请求,而不是沿着默认路由发送数据包。 没有人会回答ARP请求,您尝试创build的path将不起作用。