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