歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> iptables命令詳解

iptables命令詳解

日期:2017/2/28 14:34:43   编辑:Linux教程

一:前言

防火牆用於實現Linux下訪問控制的功能的,它分為硬件的或者軟件的防火牆兩種。無論是在哪個網絡中,防火牆工作的地方一定是在網絡的邊緣。而我們的任務就是需要去定義到底防火牆如何工作,這就是防火牆的策略,規則,以達到讓它對出入網絡的IP、數據進行檢測。

目前市面上比較常見的有3、4層的防火牆,叫網絡層的防火牆,還有7層的防火牆,其實是代理層的網關。

對於TCP/IP的七層模型來講,我們知道第三層是網絡層,三層的防火牆會在這層對源地址和目標地址進行檢測。但是對於七層的防火牆,不管你源端口或者目標端口,源地址或者目標地址是什麼,都將對你所有的東西進行檢查。所以,七層防火牆更加安全,但是這卻帶來了效率更低。所以市面上通常的防火牆方案,都是兩者結合的。而又由於我們都需要從防火牆所控制的這個口來訪問,所以防火牆的工作效率就成了用戶能夠訪問數據多少的一個最重要的控制,配置的不好甚至有可能成為流量的瓶頸。

二:iptables 工作原理

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

五個規則鏈。

  1.PREROUTING (路由前)

  2.INPUT (數據包流入口)

  3.FORWARD (轉發管卡)

  4.OUTPUT(數據包出口)

  5.POSTROUTING(路由後)

這是NetFilter規定的五個規則鏈,任何一個數據包,只要經過本機,必將經過這五個鏈中的其中一個鏈。

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

iptables還支持自己定義鏈。但是自己定義的鏈,必須是跟某種特定的鏈關聯起來的。在一個關卡設定,指定當有數據的時候專門去找某個特定的鏈來處理,當那個鏈處理完之後,再返回。接著在特定的鏈中繼續檢查。

注意:規則的次序非常關鍵,誰的規則越嚴格,應該放的越靠前,而檢查規則的時候,是按照從上往下的方式進行檢查的。

牢記以下三點式理解iptables規則的關鍵:

  • Rules包括一個條件和一個目標(target)

  • 如果滿足條件,就執行目標(target)中的規則或者特定值。

  • 如果不滿足條件,就判斷下一條Rules。

在target裡指定的特殊值:

  • ACCEPT – 允許防火牆接收數據包

  • DROP – 防火牆丟棄包

  • QUEUE – 防火牆將數據包移交到用戶空間

  • RETURN – 防火牆停止執行當前鏈中的後續Rules,並返回到調用鏈(the calling chain)中。

推薦閱讀:

iptables—包過濾(網絡層)防火牆 http://www.linuxidc.com/Linux/2013-08/88423.htm

Linux防火牆iptables詳細教程 http://www.linuxidc.com/Linux/2013-07/87045.htm

iptables+L7+Squid實現完善的軟件防火牆 http://www.linuxidc.com/Linux/2013-05/84802.htm

iptables的備份、恢復及防火牆腳本的基本使用 http://www.linuxidc.com/Linux/2013-08/88535.htm

Linux下防火牆iptables用法規則詳解 http://www.linuxidc.com/Linux/2012-08/67952.htm

Copyright © Linux教程網 All Rights Reserved