将192.168.1.x转发到95.211.xx

我想转发一个内部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将不起作用。