iptables 詳解


Iptables 是用於設置、維護和檢查 Linux 內核中的 IPv4 和 IPv6 包過濾規則表和網絡地址轉換的一個命令行工具,位於用戶空間。

Netfilter 才是真正起作用的內核模塊,位於內核空間。

1、鏈表的概念

在了解鏈表概念之前,先看下面報文在主機中的流向圖。

假設我們要訪問主機中的web服務,那么我們的請求經過網卡后,流向內核空間,先經過PREROUTING鏈,再經過INPUT鏈,到達用戶空間的web服務。

web服務回答我們的請求,則先經過OUTPUT鏈,再經過POSTROUTING鏈到達我們。

1.1、表(table)的概念

表名 作用
filter 負責過濾功能,防火牆
nat network address translation,網絡地址轉換功能
mangle 拆解報文,做出修改,並重新封裝 的功能
raw 關閉nat表上啟用的連接追蹤機制

 1.2、鏈(chain)的概念

鏈名 解釋 可以包含的表(優先級由前到后)
PREROUTING 路由前 raw,mangle,nat
INPUT 輸入 mangle,nat,filter
OUTPUT 輸出 raw,mangle,nat,filter
FORWARD 轉發 mangle,filter
POSTROUTING 路由后 mangle,nat

1.3、處理動作(target)

ACCEPT:允許數據包通過。

DROP:直接丟棄數據包,不給任何回應信息,這時候客戶端會感覺自己的請求泥牛入海了,過了超時時間才會有反應。

REJECT:拒絕數據包通過,必要時會給數據發送端一個響應的信息,客戶端剛請求就會收到拒絕的信息。

SNAT:源地址轉換,解決內網用戶用同一個公網地址上網的問題。

MASQUERADE:是SNAT的一種特殊形式,適用於動態的、臨時會變的ip上。

DNAT:目標地址轉換。

REDIRECT:在本機做端口映射。

LOG:在/var/log/messages文件中記錄日志信息,然后將數據包傳遞給下一條規則,也就是說除了記錄以外不對數據包做任何其他操作,仍然讓下一條規則去匹配。

2、匹配條件

2.1、規則查詢

  • 查看對應表的所有規則,-t選項指定要操作的表,省略"-t 表名"時,默認表示操作filter表,-L表示列出規則,即查看規則。
iptables -t 表名 -L

 

  • 查看指定表的指定鏈中的規則。
iptables -t 表名 -L 鏈名

 

  • 查看指定表的所有規則,並且顯示更詳細的信息(更多字段),-v表示verbose,表示詳細的,冗長的,當使用-v選項時,會顯示出"計數器"的信息,由於上例中使用的選項都是短選項,所以一般簡寫為iptables -t 表名 -vL
iptables -t 表名 -v -L

 

  • 表示查看表的所有規則,並且在顯示規則時,不對規則中的IP或者端口進行名稱反解,-n選項表示不解析IP地址。
iptables -t 表名 -n -L

 

  • 表示查看表的所有規則,並且顯示規則的序號,--line-numbers選項表示顯示規則的序號,注意,此選項為長選項,不能與其他短選項合並,不過此選項可以簡寫為--line,注意,簡寫后仍然是兩條橫杠,仍然是長選項。
iptables --line-numbers -t 表名 -L

 

  • 表示查看表中的所有規則,並且顯示更詳細的信息(-v選項),不過,計數器中的信息顯示為精確的計數值,而不是顯示為經過可讀優化的計數值,-x選項表示顯示計數器的精確值。
iptables --line -t filter -nvxL

 

2.2、規則管理

2.2.1、添加規則

我的這篇文章匯總了一些常見的匹配條件,iptables之匹配條件

  • 在指定表的指定鏈的尾部添加一條規則,-A選項表示在對應鏈的末尾添加規則,省略-t選項時,表示默認操作filter表中的規則
命令語法:iptables -t 表名 -A 鏈名 匹配條件 -j 動作
示例:iptables -t filter -A INPUT -s 192.168.1.146 -j DROP

 

  • 在指定表的指定鏈的首部添加一條規則,-I選型表示在對應鏈的開頭添加規則
命令語法:iptables -t 表名 -I 鏈名 匹配條件 -j 動作
示例:iptables -t filter -I INPUT -s 192.168.1.146 -j ACCEPT

 

  • 在指定表的指定鏈的指定位置添加一條規則
命令語法:iptables -t 表名 -I 鏈名 規則序號 匹配條件 -j 動作
示例:iptables -t filter -I INPUT 5 -s 192.168.1.146 -j REJECT

 

  • 設置指定表的指定鏈的默認策略(默認動作)
命令語法:iptables -t 表名 -P 鏈名 動作
示例:iptables -t filter -P FORWARD ACCEPT

 

2.2.2、刪除規則

  • 按照規則序號刪除規則,刪除指定表的指定鏈的指定規則,-D選項表示刪除對應鏈中的規則。
命令語法:iptables -t 表名 -D 鏈名 規則序號
示例:iptables -t filter -D INPUT 3

 

  • 按照具體的匹配條件與動作刪除規則,刪除指定表的指定鏈的指定規則。
命令語法:iptables -t 表名 -D 鏈名 匹配條件 -j 動作
示例:iptables -t filter -D INPUT -s 192.168.1.146 -j DROP

 

  • 刪除指定表的指定鏈中的所有規則,-F選項表示清空對應鏈中的規則
命令語法:iptables -t 表名 -F 鏈名
示例:iptables -t filter -F INPUT

 

  • 刪除指定表中的所有規則
命令語法:iptables -t 表名 -F
示例:iptables -t filter -F

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM