五、ebtables
iptables可以對ip層封包進行操作,那麼以太網層面呢?linux針對以太網網橋引入了ebtables,它在功能上和iptables相似(主要就是對以太網包進行操作)。它的出現為網橋裝置設定防火牆帶來了便利。在後文我們可以看到etables一般不會單獨使用而在核心開啟bridge-nf功能後和iptables一起工作。
首先在進入bridge之前會進行判定,此封包是不是需要進行bridge,當這個包不需要做bridge時刻,就直接走到Ip層的路由處理了。
隻有以太網幀需要做bridging是才會進入到網橋内部,此時ebtable才會生效。
1、主要功能(表):
過濾(filter),mac Nat和brouting
2、brouting
brouting是網橋的一種特殊工作模式,它指對于某些滿足以太網包直接送入ip層(由ip層進行路由),而對于其他包繼續送入到網橋内部進行以太網封包的處理。
當brouting決定送給ip 層進行routing時,routing使用的ip位址是網橋下屬的實體端口的ip位址。
預設的brouting動作就是讓資料包進入到bridge。
brouting是ebtable處理包的第一步。
2.1 brout表支援的鍊
brout表隻支援brouting鍊,brouting鍊的動作有:accept,drop,redirect,return。
注意:accept表示資料包送入bridge,drop表示資料包進入brouting的route。
2.2brouting 的brouting鍊的redirect動作和 prerouting的prerouting鍊redirect動作
brouting 的redirect是将目的mac位址設定為資料包接入接口的實體mac位址;nat表的prerouting鍊中redirect是将資料包目标mac位址設定為虛拟網橋的mac位址。
3、filter
ebtable的filter由三個鍊:input(幀發送給網橋自己的),output(網橋自己發出的或者route的),forward(網橋内部轉發的)
4、nat
ebtable的nat由三個鍊:prerouting output(網橋自己發出或route的包) postrouting
下圖總結了ebtable的所有鍊。
5、bridge-nf
ebtable最重要的應用是當核心開啟了bridge-nf功能後,将iptables和ebtables都整合到二層處理裡。後文将較長的描述。