iptables防火牆

一、防火牆基礎

Linux防火牆主要工作在網絡層,屬於典型的包過濾防火牆。

 

1、iptables的表、鏈結構

Iptables採用了表和鏈的分層結構,每個規則表相當於內核空間的一個容器,根據規則集的不同用途劃分爲默認的四個表,raw表,mangle表,nat表,filter表,每個表容器內包括不同的規則鏈,根據處理數據包的不同時機劃分爲五種鏈,而決定是否過濾或處理數據包的各種規則,按先後順序存放在各規則鏈中。

 

規則表分爲以下4

1)filter表:用來對數據包進行過濾,表內包含三個鏈,即:INPUT,FORWARD,OUTPUT

2)Nat表:nat表主要用來修改數據包的ip地址、端口號等信息。包含三個鏈,即PREROUTING,POSTROUTING,OUTPUT

3)Mangle表:用來修改數據包的TOSTTL,或者爲數據包設置MARL標記,實現流量×××,策略路由等高級應用,包含五個鏈,PREROUTING,POSTROUTING,INPUT,OUTPUT,FORWARD

4)Raw表:用來決定是否對數據包進行狀態跟蹤,包含兩個鏈:即OUTPUT,PREROUTING

 blob.png

規則鏈分爲以下5

1)INPUT鏈:當收到訪問防火牆本機地址的數據包(入站),應用此鏈中的規則。

2)OUTPUT鏈:當防火牆本機向外發送數據包(出站)時,應用此鏈中的規則。

3)FORWARD鏈:當收到需要通過防火牆中轉發送給其他地址的數據包(轉發)時,應用此鏈中的規則。

4)PREROUTING鏈:在對數據包做路由選擇之前,應用此鏈中的規則。

5)POSTROUTING鏈:在對數據包做路由選擇之後,應用此鏈中的規則。

 

 

2、數據包過濾的匹配流程

1)規則表的順序

當數據包抵達防火牆時,將依次應用raw表,mangle表,nat表和filter表中對應鏈內的規則,應用順序爲raw-mangle-nat-filter

 

2)規則鏈之間的順序

入站數據流向:來自外界的數據包到達防火牆後,首先被PRETOUTING鏈處理,然後進行路由選擇,如果數據包的目標地址是防火牆本機,那麼內核將其傳遞給INPUT鏈進行處理,通過以後再講給系統的上層應用程序進行響應。

 

轉發數據流向:來自外界的數據包到達防火牆後,首先被PREROUTING鏈處理,然後再進行路由選擇,如果數據包的目的地址是其他外部的地址,則內核將其傳遞給FORWARD鏈進行處理,最後交給POSTROUTING鏈進行處理。

 

出站數據流向:防火牆本機向外部地址發送的數據包,首先被OUTOUT處理,然後進行路由選擇,再交給POSTROUTING鏈進行處理。

 

3)規則鏈內部各條防火牆規則之間的順序

當數據包經過每條規則鏈時,依次按第一條規則,第二條規則......的順序進行匹配和處理,鏈內的過濾遵循“匹配即停止”的原則,一旦找到一條相匹配的規則,則不再檢查本鏈內後續的其它規則,如果比對完整個鏈,也找不到與數據包相匹配的規則,就按照規則鏈的默認策略進行處理。



nat表主要是對轉發的數據包進行處理,負責轉發數據流方向,上一章我們通過網關服務器連接兩個網段,但是外網的服務器是需要執行本地的網關,才能夠實現路由轉發,實際上這種功能就是轉發兩個直連路由,但是實際情況下是不存在這種事情的,那麼如何實現,公司內部可以共享互聯網資源呢?今天我們就通過nat解決這個問題,NAT技術我們之前在路由器上做過,有natpat、端口多路複用。今天我們所講的知識與其相似。




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