iptables對比Netfilter
iptables與Netfilter的關係
iptables很多人都熟知,相比於iptables,Netfilter知道的人就會少很多。
有些人可能也沒有明白兩者的區別
我們可以先看如下這樣的幅圖
我們可以看得到的是。iptables是位於用戶空間,而Netfilter卻是位於內核空間
兩者的區別可以歸納於下
Netfilter是官方內核中提供對報文數據包過濾和修改的一個功能,它位於內核中的tcp/ip協議棧的報文處理框架,它可以用於在不同階段將某些鉤子函數(hook)作用域網路協議棧。
Netfilter 本身並不對數據包進行過濾,它只是允許可以過濾數據包或修改數據包的函數掛接到內核網路協議棧中的適當位置。這些函數是可以自定義的。
iptables是用戶層的工具,它提供命令行介面,能夠向 Netfilter 中添加規則策略,從而實現報文過濾,修改等功能。在linux中的這樣的工具有很多,在centos6上面是iptables,在centos7上面則是firewalld,不過在7上面的時候,依習慣依然會稱為iptables。
可以簡單的這樣理解,我們驅車旅遊,Netfilter是車,而iptables是坐在車裡面的人,車並沒有對路線選擇的能力,但是有車能提供行駛及改變路線的能力,決定是否行駛以及行駛到哪裡去,這則是由坐在車裡面的人來決定的。
Netfilte為什麼能攔截數據
在回答這個問題之前,我們可以看一下通信過程的原理圖
數據從發送方送至接收方,是通過光纖這樣的基礎設備完成,光纖屬於物理層,在數據從用戶的應用發出之後,通過應用層向下傳遞,一層一層的進行封裝,然後到達物理層之後,通過物理層進行傳輸,到達接收方物理層之後,再嚮應用一層一層的解包。
因為這樣的封裝和解包,所以每段數據上面都會有相應的tag,當數據進行路由之後,會依據對應的tag來決定此數據的動向,是轉發出去,還是流入接收。
其整個流程如下:
我們可以看出,Netfilter一共有五個協議棧點,分別是prerouting,input,forward,output,postrouting。
通過這五個棧點,對數據的流向進行管理。
每個鏈中有都對應的函數,稱之為hook函數,這函數可以自定義。當hook函數遇到匹配自身設定規則的數據之後,它會跳出來進行處理,形如hook(鉤子)把數據鉤一下。如果沒有匹配自身規則設定,則不處理。
某個數據在送達至路由前,存在一個prerouting鏈,如果規則設定中對該類型的數據拒收,而該數據不會流入後面的其它棧點。
表和鏈的區別
iptables中經常聽到的概念就是三表五鏈,但是這些又都是什麼
鏈,我們可以很容易聯想到鉤子,就是上圖中的那五個協議棧中出現的概念。
五鏈:
PREROUTING
INPUT
FORWARD
OUTPUT
POSTROUTING
表,表就是鏈的集合,多條鏈的組成,就形成了一張表,也因為不同鏈之間的組合,所以不同的表對數據有著不同的處理功能。
每個表中均會內置一組鏈。
常見的表中鏈的組合如下:
raw:PREROUTING,OUTPUT
mangle:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING
nat:PREROUTING,OUTPUT,POSTROUTING,INPUT(centos 7新增)
filter:INPUT,FORWARD,OUTPUT
因為nat表是在centos7中新增的,所以現在基礎的應該是四表五鏈。
四表的基礎功能:
raw:關閉nat表上啟用的連接追蹤機制
mangle:拆解報文,做出修改,並重新封裝起來
nat:network address translation,用於修改報文源地址或目標地址,甚至埠
filter:過濾,防火牆
平時我們所常用的是filter表
其中的鏈我們可以使用iptables -vnL查看
可以看到其中有三條鏈
而查看nat表時,可以看到其中有四條鏈
表的執行優先順序
raw-->mangle-->net-->filter
中公優就業IT培訓,總有你想學的:http://xue.ujiuye.com
勤工儉學計劃,0元學IT!
http://www.ujiuye.com/zt/qgjx/?wt.bd=mmxtt
找工作太難?我們來幫你一舉拿下!
http://www.ujiuye.com/zt/jycj/?=mmxtt
※SpringMVC詳解——參數綁定
※利用ES6的Promise.all實現至少請求多長時間
※spring boot / cloud異常處理思路
※「js高手之路」從原型鏈開始圖解繼承到組合繼承的產生
TAG:IT優就業 |
※Linux 防火牆:關於 iptables 和 firewalld 的那些事
※linux內核將用BPF給iptables「換心」
※使用redis來調用iptables,封禁惡意IP
※CentOS下實現iptables持久化
※Linux的銅牆鐵壁:防火牆之iptables
※如何暫時禁用 iptables 防火牆
※掃盲Iptables入門教程
※系統管理員需知的 16 個 iptables 使用技巧
※20條IPTables防火牆規則用法!