iptables語句是用來管理主機數據包的,鏈的作用是用來分別管理iptables規則語句的。 默認顯示中間三個,並沒有顯示到數據流入和流出的兩個鏈。
鏈的作用根據不同的規則組合起來實現特定場景的功能。
五鏈:
prerouting:數據包進行路由決策前應用的規則,一般用於改變數據包的目標地址,不讓別人知道我找的是誰(對進入的數據包進行預處理)
input:數據包經由路由決策后,進入到本機處理時應用的規則,一般用於本機進程處理的數據包(數據包本機處理)
output:新建數據包經路由決策后,從本機輸出時應用的規則,一般用於本機處理后的數據包(數據包本機發出)
forward:數據包經由路由決策后,本機不做處理,僅僅是轉發數據包時應用的規則(數據包本機轉發)
postrouting:數據包從本機出去前,對數據包應用的規則,一般用於更改數據包的源地址信息,不讓給別人知道我是誰(對輸出的數據包進行預處理)
常見的場景:
本機處理數據包:prerouting->input
本機轉發數據包:prerouting->forward->postrouting
本機相應數據包:output->postrouting
1)192.168.8.14這台
然后再15這台主機上ping 192.168.8.15 發現ping不同 ok
2)14這台主機上接着增加規則。
規則相同,一個拒絕,一個接受。按照優先級的原則,拒絕生效。
3) byets數據包。在15機器上ping 192.168.8.14,就會發現bytes數據包增多。鏈中的規則多個,按照從上到下的順序匹配
4)-N 增加自定義鏈
-X 刪除自定義鏈
-E old-chain new-chain 更改自定義鏈。標准的鏈名無法更改。
五表
security表:主要針對的是數據鏈路層的管理規則組合,只不過它是基於target目標來操作的。
filter表:是netfilter中最重要的表,也是默認的表,主要負責數據包的過濾功能
nat表:主要實現網絡地址轉換的表。可以自由轉換數據報文中的ip和port
mangle表:主要實現數據包的拆分-修改-封裝動作
raw表:通過關閉nat表的追蹤功能,從而實現加速防火牆過濾的表
(連接追蹤:就是記錄用戶的操作,下次再來加速訪問,體驗好。但是大用量的情況下,花費大量資源來記錄歷史記錄,導致其他用戶在等待,導致防火牆的性能非常差)
#iptables -t 表名 -L
#iptables -t nat/managle/raw/security -nvL
==>在不同表中,已經定義好了各自的鏈組合,mangle表包含的鏈最多,raw表包含的鏈最少。
表鏈關系
表中存放的不同的鏈,聯眾存在不同數據包規則
netfilter為了更高質量的進行表之間的規則運行,已經定制好了這些表的優先級,從高到低:security > raw > mangle > nat >filter
鏈中的優先級 是從上到下
規則編寫:
必須遵循的原則:限定方向、再定先后