2012-04-04 74 views
2

看來我不明白IPTABLES邏輯。IPTABLES:ping和wget工作雖然他們不

我在我的服務器上重新安裝了ubuntu服務器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運行這些命令他們也工作,這意味着在這裏轉發的作品。

回答

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