Linux
這些 iptables 規則是否等效?
有人可以判斷這些 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/