Linux 之 iptalbes 簡介

學習筆記,詳細內容請參閱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表可能會被多次訪問。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章