官术网_书友最值得收藏!

2.2.1 理解iptables表和鏈

netfilter鉤子與iptables表和鏈的處理順序如圖2-1所示。

圖2-1 netfilter鉤子與iptables表和鏈的處理順序

netfilter有5個鉤子可以提供程序去注冊。在數據包經過網絡棧的時候,這些鉤子上注冊的內核模塊依次被觸發。這5個鉤子的處理時間如下。

·NF_IP_PRE_ROUTING:在數據流量進入網絡棧后立即被觸發,這個鉤子上注冊的模塊在路由決策前即被執行,如圖2-1中①所示的階段。

·NF_IP_LOCAL_IN:這個鉤子在路由判斷確定包是發送到本機時執行,如圖2-1中②所示的階段。

·NF_IP_FORWARD:這個鉤子在路由判斷是需要轉發給其他主機時執行,如圖2-1中的③所示的階段。

·NF_IP_LOCAL_OUT:這個鉤子在本機進程產生的網絡被送到網絡棧上時執行,如圖2-1中④所示的階段。

·NF_IP_POST_ROUTING:這個鉤子在數據包經過路由判斷即將發送到網絡前執行,如圖2-1中⑤所示的階段。

iptables中有以下5個鏈(Chain)。

·PREROUTING:NF_IP_PRE_ROUTING鉤子觸發。

·INPUT:NF_IP_LOCAL_IN鉤子觸發。

·FORWARD:NF_IP_FORWARD鉤子觸發。

·OUTPUT:NF_IP_LOCAL_OUT鉤子觸發。

·POSTROUTING:NF_IP_POST_ROUTING鉤子觸發。

iptables中有5種表(Table):

·filter表。iptables中使用最廣泛的表,作用是進行過濾,也就是由filter表來決定一個數據包是否繼續發往它的目的地址或者被拒絕丟棄。

·nat表。顧名思義,nat表用于網絡地址轉換,可以改變數據包的源地址或者目的地址。

·mangle表。用于修改IP的頭部信息,如修改TTL(Time to Live)。

·raw表。為iptables提供了一種不經過狀態追蹤的機制,在大流量對外業務的服務器上使用這個表可以避免狀態追蹤帶來的性能問題。

·security表。提供在數據包中加入SELinux特性的功能。在實際應用中,security一般不常用,因此在下面的章節中不再包含這一部分內容。

通過以上分析,我們知道netfilter僅僅有5個鉤子,而iptables有5個鏈和5種表,由此可見在一個鉤子上可能有多個表的不同鏈需要處理,如圖2-1中的raw表、mangle表、filter表都有POSTROUTING鏈,這些不同表中的鏈根據自己向內核注冊時的優先級(priority)依次處理。

主站蜘蛛池模板: 台南市| 松潘县| 广汉市| 集贤县| 麻栗坡县| 丁青县| 绿春县| 汤阴县| 井陉县| 天祝| 韶山市| 榆林市| 太仆寺旗| 上栗县| 涟水县| 安顺市| 广东省| 鄄城县| 三台县| 东乌珠穆沁旗| 诏安县| 开江县| 兴仁县| 绥江县| 五指山市| 兴国县| 卓资县| 秦皇岛市| 天气| 汉川市| 绥中县| 灵台县| 长沙县| 漳浦县| 兴宁市| 垣曲县| 丘北县| 肇东市| 延庆县| 登封市| 乌拉特后旗|