看来我不明白 IPTABLES 逻辑。
我在我的服务器上重新安装了 ubuntu server 11.10 并打开了转发(/etc/sysctl.conf 中的 net.ipv4.ip_forward=1)。服务器有两个网络接口 - eth0(ip 192.168.1.1)寻找本地网络,eth1(ip 213.164.156.130)寻找互联网。
本地网络中还有另一台计算机,IP 为 192.168.1.2。
然后我在 ITABLE *nat 中添加了两个简单的规则:
-A PREROUTING -i eth1 -j DNAT --to-destination 192.168.1.2
-A POSTROUTING -o eth1 -j SNAT --to-source 213.164.156.130
我认为第一条规则意味着将每个传入的数据包转发到 192.168.1.2。
但是,如果我从服务器运行“ping google.com”、“wget google.com”,它们就会成功运行。服务器接收数据包并且不进行转发,我真的很坚持这一点。
如果我从 192.168.1.2 运行这些命令,它们也可以工作,这意味着转发工作在这里。