1. 程式人生 > >iptables過濾命令小記

iptables過濾命令小記

先將iptables命令會用到的組成部分根據man手冊先寫置前面,便於後續說明。

iptables [-t table] {-A|-C|-D} chain rule-specification
rule-specification = [matches...] [target]
match = -m matchname [per-natch-options]
target = -j targetname [per-target-options]

iptables可以理解為上層應用,通過下發相應的規則給核心,由底層去實現生效。

-t 引數用於指定所要操作的表。核心預設維護三張表:filter過濾表、nat地址轉換表、mangle資料包修改表
本文只講述資料包的過濾,因此只使用filter過濾表。該表是預設使用的表,固可以不顯示使用-t引數

filter過濾表包含三個內建連結串列:INPUT(送往該裝置的資料包)、FORWARD(不是送往該裝置的資料包,待轉)、OUTPUT(裝置資料包傳送出去)。也就是命令中chain所要指定的連結串列。

對這三個表的理解,可通過如下圖所示:

 

每個連結串列由一條條的規則組成(即命令中的組成部分 rule-specification)
對於一個連結串列可以新增規則、刪除規則、檢測是否存在該條規則等操作,相應的命令選項如下:

-A, --append chain rule-specification 在指定連結串列chain末尾新增規則rule-specification
 (--append 可以代替 -A 選項使用)
-C, --check chain rule-specification 檢測是否存在該規則
-D, --delete chain rule-specification 刪除指定規則
-D, --delete chain rulenum   刪除指定規則序號對應的那條規則
 上面的rulenum 可通過 --line-numbers 附加選項顯示,每個連結串列的第一條規則對應序號1
-I, --insert chain [rulenum] rule-specification 向指定連結串列的對應規則序號前面插入規則,預設是序號1
-R, --replace chain rulenum rule-specification 替換規則
-L, --list [chain] 顯示所有的規則,一般緊跟使用-n選項,避免轉換成主機名形式,預設顯示所有連結串列
 ([] 中括號表示該引數是可選的)
-S, --list-rules [chain] 顯示所有的規則
-F, --flush [chain] 預設刪除所有連結串列裡的規則
-Z, --zero [chain, [rulenum]] 清空包和位元組的個數 (可能理解有誤)
-N, --new-chain chain 建立新的使用者自定義連結串列
-X, --delete-chain [chain] 刪除使用者自定義的連結串列,且必須是空的,無規則的
-P, --policy chain target 指定該連結串列的預設操作
-E, --rename-chain old-chain new-chain 重新命名使用者自定義的連結串列名稱


通用匹配
[!] -p, --protocol protocol   指定協議,如tcp、udp等,或對應的數字,可檢視/etc/protocols。 數字0和‘all’表示所有的協議。可選引數 ! 表示取反的意思
[!] -s, --source address[/mask][,...] 指定源地址,可以是主機名也可以是IP形式的地址,主機名會先dns解析得到相應的IP地址再新增到過濾表當中
[!] -d, --destionation address[/mask][,...]
-j, --jump target 指定要進行的處理動作
-g, --goto chain  
[!] -i, --in-interface name 對於連結串列INPUT、FORWARD、PREROUTING的資料指定介面名
[!] -o, --out-interface name

顯示匹配

通過-m選項指定所要載入的匹配模組名稱,後面再跟相應的選項即可。
如過濾mac地址操作,指定模組mac,選項如下:
[!] --mac-source address    
匹配的源MAC地址,格式必須是XX:XX:XX:XX:XX:XX,只能用於過濾進入的資料
例子:過濾從XX:XX:XX:XX:XX:XX發過來的資料包
iptables -A INPUT -m mac --mac-source XX:XX:XX:XX:XX:XX



最後說下基本的目標部分,通過引數-j指定
ACCEPT:允許
DROP:丟棄

原始碼下載地址:www.netfilter.org
推薦連結 
http://man.lupaworld.com/content/network/iptables-tutorial-cn-1.1.19.html
http://blog.chinaunix.net/uid-23069658-id-3160506.html