歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> iptables 手冊

iptables 手冊

日期:2017/2/28 14:42:40   编辑:Linux教程

iptables防火牆可以用於創建過濾(filter)與NAT規則。所有Linux發行版都能使用iptables,因此理解如何配置iptables將會幫助你更有效地管理Linux防火牆。如果你是第一次接觸iptables,你會覺得它很復雜,但是一旦你理解iptables的工作原理,你會發現其實它很簡單。

首先介紹iptables的結構:iptables ->Tables -> Chains -> Rules. 簡單地講,tables由chains組成,而chains又由rules組成。如下圖所示。

圖: IPTables Table, Chain, and Rule Structure

表 鏈條 規則結構組成
一、iptables的表與鏈
iptables具有Filter, NAT,Mangle, Raw四種內建表:
1. Filter表
Filter表示iptables的默認表,因此如果你沒有自定義表,那麼就默認使用filter表,它具有以下三種內建鏈:
·INPUT鏈 – 處理來自外部的數據。
·OUTPUT鏈 – 處理向外發送的數據。
·FORWARD鏈 – 將數據轉發到本機的其他網卡設備上。
2. NAT表
NAT表有三種內建鏈:
·PREROUTING鏈 – 處理剛到達本機並在路由轉發前的數據包。它會轉換數據包中的目標IP地址(destination ipaddress),通常用於DNAT(destination NAT)。
·POSTROUTING鏈 – 處理即將離開本機的數據包。它會轉換數據包中的源IP地址(source ipaddress),通常用於SNAT(source NAT)。
·OUTPUT鏈 – 處理本機產生的數據包。
3. Mangle表
Mangle表用於指定如何處理數據包。它能改變TCP頭中的QoS位。Mangle表具有5個內建鏈:
·PREROUTING
·OUTPUT
·FORWARD
·INPUT
·POSTROUTING
4. Raw表
Raw表用於處理異常,它具有2個內建鏈:
·PREROUTING chain
·OUTPUT chain
5.小結
下圖展示了iptables的三個內建表:


圖: IPTables 內建表

二、IPTABLES 規則(Rules)
牢記以下三點式理解iptables規則的關鍵:
·Rules包括一個條件和一個目標(target)
·如果滿足條件,就執行目標(target)中的規則或者特定值。
·如果不滿足條件,就判斷下一條Rules。
目標值(Target Values)
下面是你可以在target裡指定的特殊值:
·ACCEPT – 允許防火牆接收數據包
·DROP – 防火牆丟棄包
·QUEUE – 防火牆將數據包移交到用戶空間
·RETURN – 防火牆停止執行當前鏈中的後續Rules,並返回到調用鏈(the callingchain)中。
如果你執行iptables --list你將看到防火牆上的可用規則。下例說明當前系統沒有定義防火牆,你可以看到,它顯示了默認的filter表,以及表內默認的input鏈, forward鏈, output鏈。
# iptables -t filter --list
Chain INPUT (policy ACCEPT)
target prot opt source destination


Chain FORWARD (policy ACCEPT)
target prot opt source destination


Chain OUTPUT (policy ACCEPT)
target prot opt source destination
查看mangle表:
# iptables -t mangle --list
查看NAT表:
# iptables -t nat --list
查看RAW表:
# iptables -t raw --list
/!\注意:如果不指定-t選項,就只會顯示默認的filter表。因此,以下兩種命令形式是一個意思:
# iptables -t filter --list
(or)
# iptables --list
以下例子表明在filter表的input鏈, forward鏈, output鏈中存在規則:
# iptables --list
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0


Chain FORWARD (policy ACCEPT)
num target prot opt source destination
1 RH-Firewall-1-INPUT all -- 0.0.0.0/0 0.0.0.0/0


Chain OUTPUT (policy ACCEPT)
num target prot opt source destination


Chain RH-Firewall-1-INPUT (2 references)
num target prot opt source destination
1 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
2 ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0 icmp type 255
3 ACCEPT esp -- 0.0.0.0/0 0.0.0.0/0
4 ACCEPT ah -- 0.0.0.0/0 0.0.0.0/0
5 ACCEPT udp -- 0.0.0.0/0 224.0.0.251 udp dpt:5353
6 ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:631
7 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:631
8 ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
9 ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
10 REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
以上輸出包含下列字段:
num – 指定鏈中的規則編號
target – 前面提到的target的特殊值
prot – 協議:tcp, udp, icmp等
source – 數據包的源IP地址
destination – 數據包的目標IP地址

更多詳情見請繼續閱讀下一頁的精彩內容: http://www.linuxidc.com/Linux/2013-10/91882p2.htm

Copyright © Linux教程網 All Rights Reserved