Netfilter
Netfilter是Linux內核中的一個數據包處理模塊,它可以提供數據包的過濾、轉發(fā)、地址轉換NAT功能。Iptables是一個工具,可以用來在Netfilter中增加、修改、刪除數據包處理規(guī)則。
Netfilter是位于網卡和內核協(xié)議棧之間的一堵墻,是一種免費的軟件防火墻。
Netfilter中有三個主要的概念:規(guī)則、表、鏈,等級依次遞增。
- 規(guī)則是對特定報文的處理說明,包括匹配字段和action。
- 鏈是一組規(guī)則的集合。
- 表是鏈中相同功能的規(guī)則集合。
規(guī)則
鏈
鏈可以看作網卡和內核協(xié)議棧之前的多道關卡,對于不通類型的報文,走不通的關卡進行處理,即匹配不通的鏈。
- 由網卡上送到內核協(xié)議棧的報文:PREROUTING -> INPUT
- 由網卡出來不能上送到內核協(xié)議棧的報文:PREROUTING -> FORWARD -> POSTROUTING
- 由內核協(xié)議棧送往網卡的報文:OUTPUT -> POSTROUTING
表
為了管理方便,鏈中相同功能的規(guī)則被組織在了一張表中,iptables已經為我們定義了四張表。
表的優(yōu)先級次序(由高到低):raw -> mangle -> nat -> filter
表鏈關系
一張鏈中可以有多張表,但是不一定擁有全部的表。
數據包的處理是根據鏈來進行的,但是實際的使用過程中,是通過表來作為操作入口,來對規(guī)則進行定義的。
iptables
iptables介紹
linux的包過濾功能,即linux防火墻,它由netfilter 和 iptables 兩個組件組成。
netfilter 組件也稱為內核空間,是內核的一部分,由一些信息包過濾表組成,這些表包含內核用來控制信息包過濾處理的規(guī)則集。
iptables 組件是一種工具,也稱為用戶空間,它使插入、修改和除去信息包過濾表中的規(guī)則變得容易。
iptables基礎
我們知道iptables是按照規(guī)則來辦事的,規(guī)則其實就是網絡管理員預定義的條件,規(guī)則一般的定義為"如果數據包頭符合這樣的條件,就這樣處理這個數據包"。規(guī)則存儲在內核空間的信息包過濾表中,這些規(guī)則分別指定了源地址、目的地址、傳輸協(xié)議(如TCP、UDP、ICMP)和服務類型(如HTTP、FTP和SMTP)等。當數據包與規(guī)則匹配時,iptables就根據規(guī)則所定義的方法來處理這些數據包,如放(accept)、拒絕(reject)和丟棄(drop)等。配置防火墻的主要工作就是添加、修改和刪除這些規(guī)則。
當客戶端訪問服務器的web服務時,客戶端發(fā)送報文到網卡,而tcp/ip協(xié)議棧是屬于內核的一部分,所以,客戶端的信息會通過內核的TCP協(xié)議傳輸到用戶空間中的web服務中,而此時,客戶端報文的目標終點為web服務所監(jiān)聽的套接字(IP:Port)上,當web服務需要響應客戶端請求時,web服務發(fā)出的響應報文的目標終點則為客戶端,這個時候,web服務所監(jiān)聽的IP與端口反而變成了原點,我們說過,netfilter才是真正的防火墻,它是內核的一部分,所以,如果我們想要防火墻能夠達到"防火"的目的,則需要在內核中設置關卡,所有進出的報文都要通過這些關卡,經過檢查后,符合放行條件的才能放行,符合阻攔條件的則需要被阻止,于是,就出現(xiàn)了input關卡和output關卡,而這些關卡在iptables中不被稱為"關卡",而被稱為"鏈"。
到此這篇關于Linux netfilter/iptables知識點詳解的文章就介紹到這了,更多相關Linux - netfilter/iptables內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!