歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> iptables 學習筆記

iptables 學習筆記

日期:2017/2/28 14:52:15   编辑:Linux教程
1. ipatales表:

filter: 用於過濾的時候。

nat : 用於做NAT的時候。

mangle: 用於修改封包內容。

鏈:

INPUT: 位於filter表,匹配目的ip是本機的數據包

FORWARD: 位於filter表,匹配穿過本機的數據包。

PREROUTING:位於nat表,用於修改目的地址(DNAT)

POSTROUTING:位於nat表,用於修改源地址(SNAT)

2.iptables語法格式:

iptables [-t 要操作的表]<操作命令>[要操作的鏈][規則號碼][匹配條件][-j匹配到以後的動作]

【操作命令】:( -A -I -D -R -P -F)

查看命令(-[vnx]L)

(1)-A <鏈名>

APPEND,追加一條規則(放到最後)

例:iptables -t filter -A INPUT -j DROP

(2)-I<鏈名>[規則號碼]

INSERT,插入一條規則

例:iptables -I INPUT -j DROP #在filter表的INPUT 鏈裡插入一條規則(插入成第一條)

iptables -I INPUT 3 -j DROP #在filter鏈裡插入一條規則(插入成第三條)

(3)-D<鏈名><規則號碼|具體規則內容>

DELETE,刪除一條規則

例:iptables -D INUT 3 #刪除filter表INPUT鏈中的第三條規則(不管它的內容是什麼)

iptables -D INPUT -s 192.168.0.2 -j DROP (按內容匹配)#刪除filter表INPUT鏈中的內容"-s 192.168.0.2 -j DROP"的規則

(4)-R <鏈名><規則號碼><具體規則內容>

REPLACE,替換一條規則

例; iptables -R INPUT 3 -j ACCEPT

(5)-P <鏈名><動作> POLICY ,設置某個鏈的默認規則

例:iptables -P INPUT DROP #設置filter表INPUT 鏈的默認規則DROP

(6)-F[鏈名]FLUSH,清空規則

例; iptables -F INPUT #清空filter 表INPUT鏈中的所有規則

iptables -t nat -F PREROUTING #清空nat表PREROUTING鏈中的所有規則

(6)-L[鏈名]LIST,列出規則

v:顯示詳細信息,包括每條規則的匹配包數量和匹配字節數。

x:在v的基礎上,禁止自動單位換算(k,M)

n:只顯示ip地址和端口號碼,不顯示域名和服務名稱。

例:iptables -L #粗略出filter表所有鏈所有規則。

iptables -t nat -vnL #用詳細方式列出nat表所有鏈的所有規則,只顯示ip地址和端口號

iptables -t nat -vxnL PREROUTING #用詳細方式列出nat表PREROUTING鏈的所有規則以及詳細數字

【匹配條件】

匹配條件:

流入,流出接口 (-i ,-o)

來源,目的地址 (-s,-d)

協議類型 (-p)

來源,目的端口(--sport,--dport)

(1),按網絡接口匹配

-i <匹配數據進入網絡接口>

例: iptables -A INPUT -i eth0 -j ACCEPT

iptables -A INPUT -i eth0 -s 192.168.100.1 -j ACCEPT #允許這個網段數據從eth0 進入

(2),按源地址目的地址匹配

-s<匹配來源地址>

可以是IP ,NET,DOMAIN,也可以(任何地址)

例:iptables -A INPUT -s 192.168.10.0/24 -j ACCEPT #允許來自這個網段的數據進入

-d<匹配目的地址>

可以使IP ,NET,DOMAIN,也可以空

例:iptables -A INPUT -d 192.168.10.1 -j DROP #拒絕去往這個網段的數據包

(3)按協議類型匹配

-p <匹配協議類型>

可以使TCP,UDP,ICMP等,可以是空

-p tcp

-p udp

-p icmp --icmp-type 類型

例:iptables -A INPUT -s 192.168.1.0/24 -p tcp -j ACCEPT #允許來源這個網段的數據用tcp傳輸數據

(4)按來源目的的端口匹配

--sport<匹配源端口> 可以是個別端口,可以是端口范圍

--sport 1000 匹配源端口是1000的數據包

--sport 1000:2000 匹配端口1000-2000的數據包(含1000,3000)

--sport :3000 匹配源端口3000以下的數據包(含3000)

--sport 1000: 匹配源端口是1000以下的數據包(1000)



例: iptables -A INPUT -s 192.168.11.0/24 -p tcp --sport 1000 -j ACCEPT #允許來源這個網段的數據使用tcp的1000端口上傳輸數據

iptables -A INPUT -s 192.168.33.0/24 -p tcp --sport 1000:2000 -j ACCEPT

--dport<匹配目的的端口>可以是個別端口,也可以是端口范圍

--dport 80 匹配目的端口是80的數據包

--dport 1000:2000 匹配目的端口是1000-2000的數據包(含1000,2000)

--dport :3000 匹配目的端口是3000以下的數據包(含3000)

--dport 1000: 匹配目的的端口是1000以下的數據包(含1000)

例: iptables -A INPUT -s 192.168.6.0/24 -p tcp --dport 80 -j ACCEPT #允許去往這個網段的數據使用tcp的80端口上傳輸數據

注意: --sport 和 --dport 必須配合-p參數使用
Copyright © Linux教程網 All Rights Reserved