1. 程式人生 > >數據包通過防火墻時的過程

數據包通過防火墻時的過程

table 防火墻 示例 routing 區別 acc 6.0 put 過程

數據包通過防火墻時的情況分為三種:

1、以本地為目標的包

  當一個數據包進入防火墻後,如果目的地址是本機,被防火墻進行檢查的順序如下:

如果在某一個步驟數據包被丟棄,就不會執行後面的檢查

步驟 說明
1 數據包在鏈路上進行傳輸
2 數據包進入網絡接口
3 mangle PREROUTING 這個鏈路用來mangle數據包,如對包進行改寫或做標記
4 nat PREROUTING 這個鏈主要用來做DNAT
5 路由判斷,如包是發往本地的還是要轉發的
6 mangle  INPUT 在路由之後,被送往本地程序之前如對包進行改寫或做標記
7 filter INPUT 所有以本地為目的的包都需要經過這個鏈,包的過濾規則設置在此
8 數據包到達本地程序,如服務程序或客戶程序

2、以本地為源的包

  本地應用程序發出的數據包,被防火墻進行檢查的順序如下:

步驟 說明
1 本地程序,如服務程序或客戶程序
2 路由判斷
3 mangle OUTPUT 用來mangle數據包,如對包進行改寫或標記
4 nat   OUTPUT 對發出的包進行DNAT操作
5 filter OUTPUT 對本地發出的包過濾,包的過濾規則設置在此
6 mangle POSTROUTING 進行數據包的修改
7 filter   POSTROUTING 在這裏做SNAT
8 數據包離開網絡接口並在鏈路上傳輸

3、被轉發的數據包

  需要通過防火墻轉發的數據包,被防火墻進行檢查的順序如下;

步驟 說明
1 數據包在鏈路上傳輸
2 進入網絡接口
3 mangle PREROUTING mangle數據包,對包進行改寫或做標記
4 nat  PREROUTING 這個鏈主要做DNAT
5 路由判斷,如包是發往本地的,還是要轉發
6 mangle FORWARD

包繼續被發送至mangle表的FORWARD鏈,這是非常特殊的情況

下才會用到的,在這裏,包被mangle。這次mangle發生在最初

的路由判斷之後,在最後一次更改包的目的之前

7 filter FORWARD

FORWARD包斷續被發送到這條FORWARD鏈,只有需要轉發的包

才會走到這裏,並且針對這些包的所有過濾也在這裏進行,註意,所有

轉發的包都要經過這裏

8 mangle POSTROUTING

這個鏈也是針對一些特殊類型的包,這一步mangle是在所有更改

包的目的地址的操作完成之後做的,但這時包還在本地上

9 nat POSTROUTING

這個鏈就是用來做SNAT的,不推薦在此處過濾,因為某些包即使

不滿足條件也會通過

10 離開網絡接口
11 數據包在鏈路上傳輸

  在對包進行過濾時,常有以下3個動作。

(1)ACCEPT:一旦數據包滿足了指定的匹配條件,數據包就會被ACCEPT,並且不會再去匹配當前鏈中的其他的規則或

同一個表內的其他規則,但數據仍然需要通過其他表中的鏈

(2)DROP:如果包符合條件,數據包被會丟掉,並且不會向發送者返回任何信息,也不會向路由返回信息

(3)REJECT: 和DROP基本一樣,區別在於除了將包丟棄並且向發送者返回錯誤信息。

  示例如下:

技術分享圖片

  其中“ policy DROP " 表示該鏈的默認規則為DROP操作,如現有一數據包,源地址為

192.168.1.58,目的地址為137.254.60.6,協議為TCP,目的的端口為80,當該數據包通過FORWARD鏈時,

從上往下開始匹配,過程如下:

  (1) 與第1條規則:源為192.168.100.0/24,源地址不匹配

  (2) 與第2條規則:目的為69.147.0.0/24,目標不匹配

  (3)與第3條規則: 源為172.16.0.0/16,源不匹配

  (4)與第4條規則:源為10.0.0.0/24, 源不匹配

由於經過匹配以上所有規則都不符合,數據包則轉交給默認規則處理,由於本示例默認的規則為DROP,

因為該數據包被丟棄,

再看另一個數據包,源地址為192.168.1.58,目的地址為69.147.83.199,協議為TCP,目的端口為80,當該

數據包通過FORWARD鏈時,從上往下開始匹配:

  (1)與第1條規則:源為192.168.100.0/28, 源不匹配

  (2)與第2條規則:源地址為任意(0.0.0.0/0),匹配;目的地址為67.147.0.0/24

因為69.147.83.199在範圍內,匹配;源端口和目的端口為任意,匹配;協議為任意(all),匹配:規則鏈對該

數據包的動作為ACCEPT,因此該數據包通過。

如果數據包的源地址為10.0.0.35,目的地址為69.147.83.199,協議為TCP,目的端口為80,當該數據包

通過FORWARD鏈時,從上往下開始匹配,當匹配到第4條規則時匹配,動作為mychain,此時數據包會被

轉到用戶自己定義的規則鏈mychain進行處理

數據包通過防火墻時的過程