Linux

iptables - 橋接和轉發鏈

  • January 24, 2019

我已經設置br0了包含兩個介面eth0tap0

brctl addbr br0
brctl addif eth0
brctl addif tap0
ifconfig eth0 0.0.0.0 promisc up
ifconfig tap0 0.0.0.0 promisc up
ifconfig br0 10.0.1.1 netmask 255.255.255.0 broadcast 10.0.1.255 

我的預設FORWARD鏈策略是DROP

iptables -P FORWARD DROP

當我不添加以下規則時,流量不會通過網橋。

iptables -A FORWARD -p all -i br0 -j ACCEPT

據我了解iptables只負責IP層。

ebtables應該負責過濾乙太網橋上的流量。

那麼為什麼我必須在 iptable 的 FORWARD 鏈中添加 ACCEPT 規則呢?

由於 br-nf 程式碼可用作 linux 2.4 的更新檔並在 linux 2.6 中使用:

br-nf 程式碼使橋接的 IP 幀/數據包通過 iptables 鏈。Ebtables 過濾乙太網層,而 iptables 只過濾 IP 數據包。

由於您正在處理的流量是 ip,iptables因此規則仍然適用,因為br-nf將橋接數據包傳遞到iptables.

是一個很好的閱讀互動的資源,詳細介紹了br-nf程式碼的功能,包括如何禁用所有或部分功能(即不將橋接流量傳遞給 iptables)。

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