如果您要做 portforwarding 回到同一个网路﹐您要确定前向和回应封包双方都经过该 NAT 主机(这样它们才能被修改)。NAT 程序从现在开始(2.4.0-test6以后)﹐会挡掉后面情形所产生的传出 ICMP 重导向﹕哪些已经 NAT 的封包以它所进入的相同界面传出﹐而接收端伺服器仍尝试直接回应到客户端(不认可该回应)。
经典的情形是内部人员尝试连接到您的 `公有(public)' 网站伺服器﹐实际上是从公有地址(1.2.3.4) DNAT 到一个内部的机器(192.168.1.1)去﹐就像这样﹕
# iptables -t nat -A PREROUTING -d 1.2.3.4 \
-p tcp --dport 80 -j DNAT --to 192.168.1.1
一个方法是跑一台内部 DNS 伺服器﹐它知道您的公有网站的真正(内部) IP 地址﹐而将其它请求转传给外部的 DNS 伺服器。换而言之﹐关于您网站伺服器的记录会正确地显示为内部 IP 地址。
而另一个方法是同时让这台 NAT 主机将该等连线之来源 IP 地址映对为它自己的地址﹐我们可以像如下那样做(假设 NAT 主机之内部 IP 地址为 192.168.1.250)﹕
# iptables -t nat -A POSTROUTING -d 192.168.1.1 -s 192.168.1.0/24 \
-p tcp --dport 80 -j SNAT --to 192.168.1.250
因为 PREROUTING 规则是最先执行的﹐对内部网站伺服器而言﹐封包就已经被定向好了﹕我们可以内定好哪个为来源 IP 地址。