IPTABLES:ping和wget工作,虽然他们没有

时间:2012-04-04 12:06:04

标签: iptables forwarding nat

似乎我不理解IPTABLES逻辑。

我在服务器上重新安装了ubuntu服务器11.10并启用了转发(/etc/sysctl.conf中的net.ipv4.ip_forward = 1)。服务器有两个网络接口 - eth0(ip 192.168.1.1)查找本地网络,eth1(ip 213.164.156.130)查找Internet。

本地网络中还有另一台计算机使用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运行这些命令,它们也可以工作,这意味着转发工作。

1 个答案:

答案 0 :(得分: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