Linux防火牆netfilter/ebtables簡介


備註:本文翻譯於ebtables官方用戶手冊,翻譯中有用詞不當的地方請指正


NAME

ebtables (v2.0.10-1) - Ethernet bridge frame table administration

SYNOPSIS(概要)

ebtables [-t table ] -[ACDI] chain rule specification [match extensions] [watcher extensions] target
ebtables [-t table ] -P chain ACCEPT | DROP | RETURN
ebtables [-t table ] -F [chain]
ebtables [-t table ] -Z [chain]
ebtables [-t table ] -L [-Z] [chain] [ [–Ln] | [–Lx] ] [–Lc] [–Lmac2]
ebtables [-t table ] -N chain [-P ACCEPT | DROP | RETURN]
ebtables [-t table ] -X [chain]
ebtables [-t table ] -E old-chain-name new-chain-name
ebtables [-t table ] –init-table
ebtables [-t table ] [–atomic-file file] –atomic-commit
ebtables [-t table ] [–atomic-file file] –atomic-init
ebtables [-t table ] [–atomic-file file] –atomic-save

DESCRIPTION

ebtales 是一個應用程序,主要用於設置和維護那些用於監視以太幀的規則表,它和iptables類似,但又比iptables簡單,主要是由於以太層協議要比ip層協議簡單

CHAINS

Linux內核中有三個帶有內置鏈的ebtables表,不同的表代表着不同的功能集,每個表上都有一套規則。這套規則就叫做鏈,每套規則稱爲一條鏈chain。每個鏈都是可以與以太幀匹配的規則的有序列表。如果一條規則與一個以太幀匹配之後,指定的處理程序會對匹配的以太幀進行處理,這個指定的處理程序我們把他稱爲目標(target),然而,如果這個以太幀沒有與鏈中的這條規則匹配,那麼就檢查鏈中的下一條規則,以此類推。用戶可以爲自己創建一條自定義鏈,這條自定義鏈的名稱被當成target放在另一條規則當中。比起在鏈中逐條遍歷檢查規則,定義自己的自定義鏈可能更爲好用,性能更佳,並且對於將過濾規則構造爲組織良好且可維護的規則集至關重要。

TARGETS

一條防火牆規則指定了以太幀的範圍(什麼樣的以太幀是可以匹配)以及匹配之後的被稱爲target的指定處理程序。當一個幀匹配了一條規則之後,接下來內核就會執行這條規則中的target部分。這個target可以是以下這幾個值中的一個:ACCEPT,DROP,CONTINUE,RETURN,‘externsion’(跳轉到用戶自定義鏈)
ACCEPT的意思是讓以太幀通過防火牆。DROP就意味着被匹配的以太幀必須得被丟棄,然而,當ACCEPT和DROP這兩個target出現在BROUTING鏈的規則中時,他們所表示的意思還有所不同,這個會在下面的-t目錄中會詳細講解。CONTINUE就意味着繼續檢查下一條規則,這點很好用,比如可以知道在這個鏈中有多少個幀通過了一個確定的點,你可以選擇通過日誌的方式把這些幀記錄下來,也可以在這個幀上添加多個target的方式。RETURN意味值停止遍歷這條鏈然後回到上層嵌套的鏈中繼續執行下一條規則,'externsion’請參考用戶手冊中TARGET EXTENSIONS章節

TABLES

正如上面提到,linux內核有三個ebtables的表,在三個表的名字爲filter,nat,broute。在這三個表中,filter是命令行操作時默認的,如果你要在filter上操作,你可以在ebtables的命令行選項中不攜帶**-t filter這個選項,但是如果你需要對其他兩個表進行處理,就需要攜帶-t選項,且-t**選項必須爲ebtables的第一個參數
-t, --table

  • filter 是默認表,該表包含三個內置鏈:INPUT(用於目的地爲網橋本身的幀,以目的MAC的角度),OUTPUT(本地產生的數據包或者路由轉發的數據包或者網橋轉發的數據包),FORWARD(網橋轉發的幀)
  • nat 主要用於修改mac地址,包含三個內置鏈:PREROUTING(以太幀進來時對其進行修改),OUTPUT(用於本地產生的幀或者在橋接之前選擇路由或者橋接),POSTROUTING(改變那些將要出去的幀),關於鏈的名稱PREROUTING和POSTROUTING的小注釋:將它們命名爲PREFORWARDING和POSTFORWARDING會更準確,但是對於所有來自iptables世界到ebtables的人來說,使用相同的名字會更容易。請注意,如果您不喜歡默認名稱,則可以使用(-E)更改名稱。
  • broute 用於創建橋接,它具有一個內置鏈:BROUTING。目標DROP和ACCEPT在broute表中具有特殊含義(使用這些名稱而不是更具描述性的名稱主要是爲了和其他表保持通用性)。DROP實際上意味着必須對幀進行路由,而ACCEPT意味着必須對幀進行橋接。BROUTING鏈很早就被遍歷了。但是,只有進入處於轉發狀態的網橋端口上的幀才能遍歷它。通常,這些幀將被橋接,但是您可以在此處另行決定。重定向目標在這裏非常方便。

未完待續…

發佈了6 篇原創文章 · 獲贊 5 · 訪問量 506
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章