Linux

這些 iptables 規則是否等效?

  • October 21, 2011

有人可以判斷這些 iptables 是否等效?

版本 1

$IPT -F
$IPT -X

$IPT -t nat -A POSTROUTING -s 192.168.0.1/24 -o eth0 -j MASQUERADE

$IPT -A FORWARD -j ACCEPT -i eth1 -s 192.168.0.1/24
$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

版本 2

$IPT -F
$IPT -X
$IPT -P INPUT ACCEPT
$IPT -P FORWARD ACCEPT
$IPT -P OUTPUT ACCEPT

$IPT -t nat -F
$IPT -t nat -X
$IPT -t nat -P PREROUTING ACCEPT
$IPT -t nat -P INPUT ACCEPT
$IPT -t nat -P OUTPUT ACCEPT

$IPT -t nat -P POSTROUTING ACCEPT
$IPT -t nat -A POSTROUTING -s 192.168.245.0/24 -j MASQUERADE 

我感到困惑的是版本 1沒有明確的接受規則和路由後接受策略。

規則集是等效的,但是:

  • 第一個版本在傳入介面 eth1 上接受 192.168.0.1/24 的數據包,但所有其他數據包都沒有最終丟棄。
  • 啟動時的初始規則集是“全部接受”,因此您無需將其設置為該狀態。

所以第一個版本看起來像這樣:

   $IPT -t nat -A POSTROUTING -s 192.168.0.1/24 -o eth0 -j MASQUERADE

   $IPT -A FORWARD -j ACCEPT -i eth1 -s 192.168.0.1/24
   $IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

第二個:

   $IPT -F
   $IPT -X

   $IPT -t nat -A POSTROUTING -s 192.168.245.0/24 -j MASQUERADE 

不同的是這兩個 ACCEPT 規則,它們沒有效果,因為對於其他數據包沒有 DROP 規則。

不建議“過濾器”表之外過濾數據包。所以不要在“過濾”表之外丟棄數據包。一個例子:

   $IPT -t nat -A PRETROUTING -s 192.168.245.0/24 -j DROP

iptables/netfilter的包遍歷圖:http ://www.frozentux.net/iptables-tutorial/images/tables_traverse.jpg

關於 iptables/netfilter 的一個非常精彩和完整的教程在這裡:http ://www.frozentux.net/documents/iptables-tutorial/

引用自:https://serverfault.com/questions/323578