iptables簡介
iptables基礎
規則(rules)
iptables和netfilter的關系:
數據包在netfilter的轉發過程
- 當一個數據包進入網卡時,它首先進入PREROUTING鏈,內核根據數據包目的IP判斷是否需要轉送出去。
- 如果數據包就是進入本機的,它就會沿着圖向下移動,到達INPUT鏈。數據包到了INPUT鏈后,任何進程都可以收到它。本機上運行的程序可以發送數據包,這些數據包會經過OUTPUT鏈,然后到達POSTROUTING鏈輸出。
- 如果數據包是要轉發出去的,且內核允許轉發(sysctl net.ipv4.ip_forward,sysctl -w net.ipv4.ip_forward=1),數據包就會如圖所示向右移動,經過FORWARD鏈,然后到達POSTROUTING鏈輸出
iptables的規則表和鏈:

規則表:
規則鏈:
規則表之間的優先順序:
管理和設置iptables規則

iptables的基本語法格式
iptables [-t 表名] 命令選項 鏈名 條件匹配 -j 目標動作或跳轉
iptables命令選項詳解
iptables命令目標動作參數詳解
常用語法解析
1.定義默認策略
當數據包不符合鏈中任一條規則時,iptables將根據該鏈預先定義的默認策略來處理數據包,默認策略的定義格式如下。
iptables [-t表名] <-P> <鏈名> <動作> ?參數說明如下。
[-t表名]:指默認策略將應用於哪個表,可以使用filter、nat和mangle,如果沒有指定使用哪個表,iptables就默認使用filter表。
<-P>:定義默認策略。
<鏈名>:指默認策略將應用於哪個鏈,可以使用INPUT、OUTPUT、FORWARD、PREROUTING、OUTPUT和POSTROUTING。
<動作>:處理數據包的動作,可以使用ACCEPT(接受數據包)和DROP(丟棄數據包)。
2.鏈的常用操作
3.查看iptables規則
查看iptables規則的命令格式為:
iptables [-t表名] <-L> [鏈名]
參數說明如下。
[-t表名]:指查看哪個表的規則列表,表名用可以使用filter、nat和mangle,如果沒有指定使用哪個表,iptables就默認查看filter表的規則列表。
<-L>:查看指定表和指定鏈的規則列表。
[鏈名]:指查看指定表中哪個鏈的規則列表,可以使用INPUT、OUTPUT、FORWARD、PREROUTING、OUTPUT和POSTROUTING,如果不指明哪個鏈,則將查看某個表中所有鏈的規則列表。
附加子命令
4.增加、插入、刪除和替換規則
相關規則定義的格式為:
iptables [-t表名] <-A | I | D | R> 鏈名 [規則編號] [-i | o 網卡名稱] [-p 協議類型] [-s 源IP地址 | 源子網] [--sport 源端口號] [-d目標IP地址 | 目標子網] [--dport目標端口號] <-j動作>
參數說明如下。
[-t表名]:定義默認策略將應用於哪個表,可以使用filter、nat和mangle,如果沒有指定使用哪個表,iptables就默認使用filter表。
-A:新增加一條規則,該規則將會增加到規則列表的最后一行,該參數不能使用規則編號。
-I:插入一條規則,原本該位置上的規則將會往后順序移動,如果沒有指定規則編號,則在第一條規則前插入。
-D:從規則列表中刪除一條規則,可以輸入完整規則,或直接指定規則編號加以刪除。
-R:替換某條規則,規則被替換並不會改變順序,必須要指定替換的規則編號。
<鏈名>:指定查看指定表中哪個鏈的規則列表,可以使用INPUT、OUTPUT、FORWARD、PREROUTING、OUTPUT和POSTROUTING。
[規則編號]:規則編號用於插入、刪除和替換規則時用,編號是按照規則列表的順序排列,規則列表中第一條規則的編號為1。
[-i | o 網卡名稱]:i是指定數據包從哪塊網卡進入,o是指定數據包從哪塊網卡輸出。網卡名稱可以使用ppp0、eth0和eth1等。
[-p 協議類型]:可以指定規則應用的協議,包含TCP、UDP和ICMP等。
[-s 源IP地址 | 源子網]:源主機的IP地址或子網地址。
[--sport 源端口號]:數據包的IP的源端口號。
[-d目標IP地址 | 目標子網]:目標主機的IP地址或子網地址。
[--dport目標端口號]:數據包的IP的目標端口號。
<-j動作>:處理數據包的動作,各個動作的詳細說明可以參考前面的說明。
擴展匹配
顯式擴展匹配(-m)
詳解-j ACTION
狀態檢測
5.清除規則和計數器
在新建規則時,往往需要清除原有的、舊的規則,以免它們影 ?響新設定的規則。如果規則比較多,一條條刪除就會十分麻煩, ?這時可以使用iptables提供的清除規則參數達到快速刪除所有的規 ?則的目的。
定義參數的格式為:
iptables [-t表名] <-F | Z>
參數說明如下。
[-t表名]:指定默認策略將應用於哪個表,可以使用filter、nat和mangle,如果沒有指定使用哪個表,iptables就默認使用filter表。
-F:刪除指定表中所有規則。
-Z:將指定表中的數據包計數器和流量計數器歸零。



#