學習筆記,詳細内容請參閱http://www.zsythink.net/archives/1199/。
防火牆分類:網絡 /主機 硬體/軟體。
防火牆相當于一個關口,所有的網絡資料包都要通過這個關口。防火牆對通過的資料包進行檢查,根據資料包的特征,如:源位址是什麼,目的位址是什麼,端口是什麼,所用的傳輸協定(tcp,udp,icmp),應用協定(http,ftp,smtp)等等,進行不同的處理,如:放行,抛棄,拒絕,轉發,修改包内容等等。這也就是防火牆所應用的規則:根據比對條件,執行相應動作。
實際實作防火牆功能中,在每個關口資料包都要經過不止一條規則的檢查,因為這些規則是按順序連結成一個規則鍊,是以關口在防火牆中被稱為“鍊”(chain)。根據資料包傳輸路徑的不同提供了5種鍊: PREROUTING,INPUTING, FORWARD, ,OUTPUT,POSTROUTING。
防火牆規則的功能分為了4類,存儲的規則也按照功能的分類分别存儲在4個相應的表中:
raw表: 關閉nat表中啟用的連接配接追蹤機制。核心子產品:iptables_raw。
mangle表:拆解封包過濾,修改内容,重新封裝。核心子產品:iptables_mangle。
nat表:網絡位址轉換。iptables_nat。
filter表:過濾資料包。核心子產品 iptables_filter。
鍊上的規則存儲在不同的表中,但各表中的優先級不同:raw->mangle->nat->filter. 在一個鍊上執行規則時,按照上述規則的優先級先執行raw表中的規則,最後執行filter表中的規則。
不同鍊上的規則可以存儲在哪些表中:
PREROUTING: raw表,mangle表,nat表
INPUT:mangle表,filter表(centos7 還有nat表)
FORWARD:mangle表,filter表
OUTPUT:raw表,mangle表,nat表,filter表
POSTROUTIN:mangle表,nat表
一個資料包通過防火牆的流程場景如下圖所示:

場景一:網絡->PREROUTING->INPUT->主機.
規則處理順序:PREROUTING.raw->PREROUTING.mangle->PREROUTING.nat->INPUT.mangle->INPUT.filter.
場景二:網絡->PREROUTING->FORWARD->POSTROUTING->網絡.
規則處理順序:
PREROUTING.raw->PREROUTING.mangle->PREROUTING.nat->FORWARD.mangle->FORWARD.filter->POSTROUTING.mangle->POSTROUTING.nat
場景三:主機->OUTPUT->POSTROUTING->網絡.
規則處理順序:
OUTPUT.raw->OUTPUT.mangle->OUTPUT.nat->OUTPUT.filter->POSTROUTING.mangle->POSTROUTING.nat
由上可以發現 一次資料包的傳輸會被不同的鍊處理,因而mangle表和nat表可能會被多次通路。