iptables的資料報的流程介紹

2021-08-26 10:58:19 字數 2156 閱讀 8725

**:

iptables 相關概念

匹配(match):符合指定的條件,比如指定的 ip 位址和埠。

丟棄(drop):當乙個包到達時,簡單地丟棄,不做其它任何處理。

接受(accept):和丟棄相反,接受這個包,讓這個包通過。

拒絕(reject):和丟棄相似,但它還會向傳送這個包的源主機傳送錯誤訊息。這個錯誤訊息可以指定,也可以自動產生。

目標(target):指定的動作,說明如何處理乙個包,比如:丟棄,接受,或拒絕。

跳轉(jump):和目標類似,不過它指定的不是乙個具體的動作,而是另乙個鏈,表示要跳轉到那個鏈上。

規則(rule):乙個或多個匹配及其對應的目標。

鏈(chain):每條鏈都包含有一系列的規則,這些規則會被依次應用到每個遍歷該鏈的資料報上。每個鏈都有各自專門的用途, 這一點我們下面會詳細討論。

表(table):每個表包含有若干個不同的鏈,比如 filter 表預設包含有 input,forward,output 三個鏈。iptables 有四個表,分別是:raw,nat,mangle和filter,每個表都有自己專門的用處,比如最常用filter表就是專門用來做包過濾的,而 nat 表是專門用來做nat的。

策略(police):我們在這裡提到的策略是指,對於 iptables 中某條鏈,當所有規則都匹配不成功時其預設的處理動作。

連線跟蹤(connection track):又稱為動態過濾,可以根據指定連線的狀態進行一些適當的過濾,是乙個很強大的功能,但同時也比較消耗記憶體資源。

經過iptables的資料報的流程介紹

乙個資料報到達時,是怎麼依次穿過各個鏈和表的(圖)。

基本步驟如下:

1. 資料報到達網路介面,比如 eth0。

2. 進入 raw 表的 prerouting 鏈,這個鏈的作用是趕在連線跟蹤之前處理資料報。

3. 如果進行了連線跟蹤,在此處理。

4. 進入 mangle 表的 prerouting 鏈,在此可以修改資料報,比如 tos 等。

5. 進入 nat 表的 prerouting 鏈,可以在此做dnat,但不要做過濾。

6. 決定路由,看是交給本地主機還是**給其它主機。

到了這裡我們就得分兩種不同的情況進行討論了,一種情況就是資料報要**給其它主機,這時候它會依次經過:

7. 進入 mangle 表的 forward 鏈,這裡也比較特殊,這是在第一次路由決定之後,在進行最後的路由決定之前,我們仍然可以對資料報進行某些修改。

8. 進入 filter 表的 forward 鏈,在這裡我們可以對所有**的資料報進行過濾。需要注意的是:經過這裡的資料報是**的,方向是雙向的。

9. 進入 mangle 表的 postrouting 鏈,到這裡已經做完了所有的路由決定,但資料報仍然在本地主機,我們還可以進行某些修改。

10. 進入 nat 表的 postrouting 鏈,在這裡一般都是用來做 snat ,不要在這裡進行過濾。

11. 進入出去的網路介面。完畢。

另一種情況是,資料報就是發給本地主機的,那麼它會依次穿過:

7. 進入 mangle 表的 input 鏈,這裡是在路由之後,交由本地主機之前,我們也可以進行一些相應的修改。

8. 進入 filter 表的 input 鏈,在這裡我們可以對流入的所有資料報進行過濾,無論它來自哪個網路介面。

9. 交給本地主機的應用程式進行處理。

10. 處理完畢後進行路由決定,看該往那裡發出。

11. 進入 raw 表的 output 鏈,這裡是在連線跟蹤處理本地的資料報之前。

12. 連線跟蹤對本地的資料報進行處理。

13. 進入 mangle 表的 output 鏈,在這裡我們可以修改資料報,但不要做過濾。

14. 進入 nat 表的 output 鏈,可以對防火牆自己發出的資料做 nat 。

15. 再次進行路由決定。

16. 進入 filter 表的 output 鏈,可以對本地出去的資料報進行過濾。

17. 進入 mangle 表的 postrouting 鏈,同上一種情況的第9步。注意,這裡不光對經過防火牆的資料報進行處理,還對防火牆自己產生的資料報進行處理。

18. 進入 nat 表的 postrouting 鏈,同上一種情況的第10步。

19. 進入出去的網路介面。完畢。

iptables 資料走向流程

鏈的規則存放於哪些表中 從鏈到表的對應關係 prerouting 的規則可以存在於 raw表,mangle表,nat表。input 的規則可以存在於 mangle表,filter表,centos7中還有nat表,centos6中沒有 forward 的規則可以存在於 mangle表,filter表。...

資料報在Linux中的流程

1.中斷處理函式中 網絡卡收到一幀 引發中斷 cpu呼叫相應的中斷處理函式 指向此網絡卡驅動中的相應的處理函式 把此packet讀到ram中 呼叫netif rx函式來打上timestamp,並把此skb放入到cpu設定的佇列中 標記軟中斷 cpu raise softirq 中斷完成。2 當軟中斷...

網路層資料報處理流程

網路位址為a,實體地址為10的計算機需要向網路位址為p,實體地址為95的計算機傳送乙個分組。這裡我們用字母表示邏輯位址,用數字表示實體地址。傳送方在網路層將資料封裝在乙個分組中,並加入兩個邏輯位址 a和p 注意在大多數協議中,邏輯源位址是出現在邏輯目的位址之前的 與實體地址的順序正好相反 網路層必須...