linux 中防火牆配置 iptables 命令參數的含義介紹__linux

來源:互聯網
上載者:User

點我進入原文


iptables 命令介紹

原文連結

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 ip address),通常用於DNAT(destination NAT)。 POSTROUTING鏈 – 處理即將離開原生資料包。它會轉換資料包中的源IP地址(source ip address),通常用於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 calling chain)中。

如果你執行iptables --list你將看到防火牆上的可用規則。下例說明當前系統沒有定義防火牆,你可以看到,它顯示了預設的filter表,以及表內預設的input鏈, forward鏈, output鏈。

# iptables -t filter --listChain 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 --listChain INPUT (policy ACCEPT)num  target     prot opt source               destination1    RH-Firewall-1-INPUT  all  --  0.0.0.0/0            0.0.0.0/0Chain FORWARD (policy ACCEPT)num  target     prot opt source               destination1    RH-Firewall-1-INPUT  all  --  0.0.0.0/0            0.0.0.0/0Chain OUTPUT (policy ACCEPT)num  target     prot opt source               destinationChain RH-Firewall-1-INPUT (2 references)num  target     prot opt source               destination1    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/02    ACCEPT     icmp --  0.0.0.0/0            0.0.0.0/0           icmp type 2553    ACCEPT     esp  --  0.0.0.0/0            0.0.0.0/04    ACCEPT     ah   --  0.0.0.0/0            0.0.0.0/05    ACCEPT     udp  --  0.0.0.0/0            224.0.0.251         udp dpt:53536    ACCEPT     udp  --  0.0.0.0/0            0.0.0.0/0           udp dpt:6317    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           tcp dpt:6318    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED9    ACCEPT     tcp  --  0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:2210   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地址 三、清空所有iptables規則

在配置iptables之前,你通常需要用iptables --list命令或者iptables-save命令查看有無現存規則,因為有時需要刪除現有的iptables規則:

iptables --flush或者iptables -F

這兩條命令是等效的。但是並非執行後就萬事大吉了。你仍然需要檢查規則是不是真的清空了,因為有的linux發行版上這個命令不會清除NAT表中的規則,此時只能手動清除:

iptables -t NAT -F
四、永久生效

當你刪除、添加規則後,這些更改並不能永久生效,這些規則很有可能在系統重啟後恢複原樣。為了讓配置永久生效,根據平台的不同,具體操作也不同。下面進行簡單介紹: 1.Ubuntu

首先,儲存現有的規則:

iptables-save > /etc/iptables.rules

然後建立一個bash指令碼,並儲存到/etc/network/if-pre-up.d/目錄下:

#!/bin/bashiptables-restore < /etc/iptables.rules

這樣,每次系統重啟後iptables規則都會被自動載入。
/!\注意:不要嘗試在.bashrc或者.profile中執行以上命令,因為使用者通常不是root,而且這隻能在登入時載入iptables規則。 2.CentOS, RedHat

# 儲存iptables規則service iptables save# 重啟iptables服務service iptables stopservice iptables start

查看當前規則:

cat  /etc/sysconfig/iptables
五、追加iptables規則

可以使用iptables -A命令追加新規則,其中-A表示Append。因此,新的規則將追加到鏈尾。
一般而言,最後一條規則用於丟棄(DROP)所有資料包。如果你已經有這樣的規則了,並且使用-A參數添加新規則,那麼就是無用功。 1.文法

iptables -A chain firewall-rule
-A chain – 指定要追加規則的鏈 firewall-rule – 具體的規則參數 2.描述規則的基本參數

以下這些規則參數用於描述資料包的協議、源地址、目的地址、允許經過的網路介面,以及如何處理這些資料包。這些描述是對規則的基本描述。 -p 協議(protocol) 指定規則的協議,如tcp, udp, icmp等,可以使用all來指定所有協議。 如果不指定-p參數,則預設是all值。這並不明智,請總是明確指定協議名稱。 可以使用協議名(如tcp),或者是協議值(比如6代表tcp)來指定協議。映射關係請查看/etc/protocols 還可以使用–protocol參數代替-p參數 -s 源地址(source) 指定資料包的源地址 參數可以使IP地址、網路地址、主機名稱 例如:-s 192.168.1.101指定IP地址 例如:-s 192.168.1.10/24指定網路地址 如果不指定-s參數,就代表所有地址 還可以使用–src或者–source -d 目的地址(destination) 指定目的地址 參數和-s相同 還可以使用–dst或者–destination

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.