iptables包含有4個表,5個鏈,鏈在表中。html
4個表:filter,nat,mangle,raw。linux
默認表是filter(在沒有指定表的清空),表的優先級:rawtcp
>mangle>nat>filter.ide
filter:通常的過濾功能。
性能
nat:用於nat功能(端口映射,地址映射,)spa
mangle:對特定數據包的修改.net
raw:有限級最高,設置raw時通常是爲了避免再讓iptables作數據包的連接跟蹤處理,提升性能orm
5個鏈:PREROUTING,INPUT,FORWARD,OUTPUT,POSTROUTING。htm
INPUT: 位於 filter 表,匹配目的 IP 是本機的數據包
FORWARD: 位於 filter 表,匹配穿過本機的數據包,
PREROUTING: 位於 nat 表,用於修改目的地址(DNAT)
POSTROUTING:位於 nat 表,用於修改源地址 (SNAT)ip
PREROUTING:數據包進入路由表以前
INPUT:經過路由表後目的地爲本機
FORWARDING:經過路由表後,目的地不爲本機
OUTPUT:由本機產生,向外轉發
iptables語法使用:
iptables [-t 表名] <操做命令> [要操做的鏈] [規則號碼] [匹配條件] [-j 匹配到之後的動做]
操做命令:(-A -I -D -R -P -F)
-A <鏈名>:增長一條規則(在全部規則的後面)
例如:iptables -t filter -A INPUT -j DORP
#在filter表INPUT鏈中增長一條規則,匹配全部訪問本機ip的數據包,匹配到了就丟棄。
-I <鏈名> [規則號碼]:插入一條規則
例如:iptables -I INPUT 3 -j DORP
在filter表INPUT鏈插入一條規則,插入爲第3條,前面必需要有2條規則.若是沒有規則號碼,默認爲1,
-D <鏈名> [規則號碼|鏈的內容]:刪除一條規則
例如:iptables -D INPUT 2
#刪除filter表INPUT鏈的第2條規則
iptables -D INPUT -s 192.168.0.1 -j DROP
刪除filter表INPUT鏈內容爲 -s 192.168.0.1 -j DROP 的規則
若規則列表中有多條相同的規則時,按內容匹配只刪除序號最小的一條
-R <鏈名><規則號碼><內容>:替換一條規則
例如:iptables -R INPUT 3 -j ACCEPT
將規則號3的內容替換爲‘-j ACCEPT’
-P <鏈名> <動做> :設置某個鏈的默認規則
例如:iptables -P INPUT DORP
設置 INPUT表的默認規則爲DROP.若是數據包沒有匹配大規則裏的任何規則,就匹配默認規則
-F <鏈名>:狀況規則
例如:iptables -F INPUT
清空INPUT鏈的全部規則,-F僅是清空鏈中規則,-P設置的默認規則不被清空。
查看命令 [-(vnx)L]
-L<鏈名>:列出規則(通常用iptables -nvL)
v:顯示詳細信息
x:在v的基礎上,禁止自動單位換算(K,M)
n:只顯示ip地址和端口,不顯示域名和服務
例如:iptables -nvL #詳細列出filter表全部鏈的規則
iptables -t nat -nvL OUTPUT #列出nat表OUTPUT鏈的規則
匹配條件
-i:流入 -o:流出
-s:來源地址 -d:目的地址
-sport:來源端口 -dport:目的端口
-p:協議類型
-i和-o(匹配數據從網口的進和出)
-i eth0 #匹配從eth0網口進來的數據包
-o eth1 #匹配從eth1網口出去的數據包
-s(匹配來源地址)能夠是ip,網段,域名也能夠爲空(全部地址)
-s 192.168.10.130 #匹配來自192.168.10.130的數據包
-s 192.168.10.130/24 #匹配來自192.168.10.130/24網段的數據包
-d(匹配目的地址)能夠是ip,網段,域名也能夠爲空(全部地址)
-d www.cong.com 匹配去往域名www.cong.com的數據包
-p(匹配協議類型)能夠爲tcp udp icmp等,也可爲空
-p tcp
-p udp
--sport(匹配來源端口)能夠是個別端口,也能夠是端口範圍
--sport 80 匹配源端口是80的數據包
--sport 80-8080 匹配源端口80-8080的數據包(含80,8080)
--sport :80 匹配源端口是80如下的數據包(含80)
--sport 80: 匹配源端口是80以上的數據包(含80)
--dport(匹配目的端口)能夠是個別端口,能夠是端口範圍
--dport 80 匹配目的端口是80的數據包
--dport 80-8080 匹配目的端口80-8080的數據包(含80,8080)
--dport :80 匹配目的端口是80如下的數據包(含80)
--dport 80: 匹配目的端口是80以上的數據包(含80)
--sport 和--dport必須配合-p參數使用,必須指明協議類型
匹配舉例
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
在INPUT增長一條規則匹配 協議類型爲tcp 目的端口爲80的規則操做爲放行經過
iptables -I OUTPUT -s 192.168.10.12 -d 192.168.10.131 -j ACCEPT
在OUTPUT插入一條 匹配源地址192.168.10.12目的地址192.168.10.131的規則,放行經過
-s 192.168.10.12 -d www.cong.com -p tcp --dport 80
匹配來自192.168.10.12到www.cong.com 的80端口,tcp協議的數據包
動做/處理方式
ACCEPT:經過,容許數據包經過,不攔截
DROP:丟棄,阻止數據包經過本鏈而丟棄它
SNAT:源地址轉換 能夠是單個ip也能夠是ip地址池
DNAT:目的地址轉換 能夠是單個ip也能夠是ip地址池
MASQUERADE:動態源地址轉換
REDIRECT:用於把數據包轉發到另外一個端口
REJECT:和DROP同樣,可是DROP不返回信息,REJECT能夠返回指定錯誤信息
-j ACCEPT
匹配到的數據包容許經過
-j DROP
匹配到的數據包不容許經過,丟棄
-j SNAT --to ip[-ip:端口-端口](在nat表的POSTROUTING鏈)
例:iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j SNAT --to 1.1.1.1
iptables -t nat -A POSTROUTING -s 192.168.10.12 -j SNAT --to 1.1.1.1-1.1.1.10
-j DNAT --to ip[-ip:端口-端口](在nat表的PREROUTING鏈)
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.10.12:80
iptables -t nat -A PREROUTING -d 192.168.10.12 -j DNAT --to 127.0.0.1
-j MASQUERDE
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
將源地址是 192.168.0.0/24 的數據包進行地址假裝
-j REDIRECT
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
訪問數據包訪問的80端口轉換爲8080端口
-j REJECT
iptables -A FORWARD -p TCP --dport 22 -j REJECT --reject-with icmp-net-unreachable
附加模塊
按包狀態匹配(state)
按來源MAC匹配(mac)
按包速率匹配(limit)
多端口匹配(multiport)
state -m state --state狀態
狀態:
NEW:創建新的鏈接
RELATED:相關的
ESTABLISHED:已創建鏈接
INVALID:無效的
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
mac -m mac --mac-source MAC
iptables -A FORWARD -m --mac-source xx:xx:xx:xx:xx:xx -j DROP
mac地址不能經過路由,因此不要去匹配路由後面的MAC地址
limit -m limit --limit 速率
iptables -A FORWARD -d 192.168.10.130 -m limit --limit 50/s -j ACCEPT
multiport (--sports|--dports|--ports)
iptables -A INPUT -p tcp -m multiports --ports 22,25,80 -j ACCEPT
必須與-p參數一塊兒使用
參考:http://www.jb51.net/os/RedHat/1335.html
http://www.linuxidc.com/Linux/2012-08/67505.htm