2

看来我不明白 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 运行这些命令,它们也可以工作,这意味着转发工作在这里。

4

1 回答 1

3

这些是 NAT 规则。

在您的第一条规则中,地址转换发生在路由数据包之前。您将目标地址更改为 192.168.1.2,在第二条规则中,您将在路由到 213.164.156.130 之前更改源地址。

我猜你可以 ping & wget 因为你的 INPUT 和 OUTPUT 链有一个默认操作。

TBH,我对你真正想要做什么感到困惑,但如果你想转发数据包,你需要修改 FORWARD 链。这是有关 iptables 的详细和有用信息的链接,因此您可以更好地理解逻辑 - Ch14:_Linux_Firewalls_Using_iptables">http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_: Ch14 :_Linux_Firewalls_Using_iptables。

于 2012-05-11T15:24:21.877 回答