什么时候使用DNAT而不使用SNAT?

我想使用iptables将Ubuntu 12.04服务器上的端口2222转发到远程主机1.2.3.4端口22。

在阅读了许多关于端口转发的网页之后,我就问

$ sysctl net.ipv4.conf.eth0.forwarding net.ipv4.conf.eth0.forwarding = 1 $ sudo iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 2222 -j DNAT --to-destination 1.2.3.4:22 

哪个转发我想要的stream量。 但SSH不起作用。 原来我需要也提供

 $ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE 

现在很好。 我明白上面的命令; 我不明白的是过多的网站给予第一个命令,没有给第二个。 第一个命令在什么条件下就足够了?

注意:仅给出DNAT命令的示例站点 。

您所指的网站可能会在将内部LAN连接到公共Internet的路由器上使用iptables的情况下推荐使用DNAT 。 在这种情况下,因为互联网和内部局域网之间的所有stream量都必须stream经iptables路由器,所以返回的数据包也会自动为您重写。

在您的configuration中,您正尝试将stream量导向远程主机。 MASQUERADE行是必要的,以便重写到1.2.3.4的数据包,使得从1.2.3.4返回的数据包将到达你的iptables框,以便被重写并正确地返回到原始发送者。

大图:你想完成什么? 端口转发可能不是正确的工具。