元件 netfilter 與 iptables 負責過濾及操作網路封包,以及網路位址轉譯 (NAT,Network Address Translation)。過濾標準和任何與其關聯的動作以鏈結方式儲存,在個別網路封包抵達時必須相互符合。符合的鏈結儲存於表格內。iptables 指令允許您變更這些表格和規則集。
Linux 核心維護三個表格,每個針對封包過濾器的特定功能種類:
此表格保存一組過濾器規則,因為它以更嚴格的方式執行封包過濾 (packet filtering)機制,例如,決定封包是否允許通過 (ACCEPT) 或放棄 (DROP)。
此表格定義對封包之來源和目標位址的任何變更。使用這些功能也可以讓您執行「偽裝」(masquerading),這是 NAT 用來連結私有網路與網際網路的一種特殊方式。
此表格中的規則可以操作儲存於 IP 標頭中的值 (如服務類型)。
圖 39-1 iptables:封包的可能路徑
這些表格包含數個符合封包的預先定義鏈結:
此鏈結套用到內送封包。
此鏈結套用到預定送到系統內部程序的封包。
此鏈結套用到僅透過系統路由的封包。
此鏈結套用到來自於從系統本身的封包。
此鏈結套用到所有外送封包。
圖 39-1說明網路封包在指定系統上傳送的路徑。為了簡化的緣故,圖中將表格列為鏈結的各部份,但是實際上,這些鏈結是在表格本身內。
所有可能情況中最簡單的一種,系統本身預定的內送封包抵達 eth0 介面。封包先參照 mangle 表的 PREROUTING 鏈結,然後再參照 nat 表的 PREROUTING 鏈結。下一個步驟有關封包的路由,決定封包的實際目標是系統本身的程序。傳遞 mangle 與 filter 表的 INPUT 鏈結後,封包最後會到達其目標,也就是確定符合 filter 表的規則。