iptables入門詳解

2021-09-27 05:37:08 字數 2706 閱讀 5792

linux的防火牆體系主要工作在網路層,針對tcp/ip資料報實施過濾和限制,屬於典型的包過濾防火牆(或稱網路層防火牆)。iptables是乙個命令列防火牆實用程式,它使用策略鏈來允許或阻止通訊。當連線試圖在你的系統上建立自己時,iptables在它的列表中尋找一條規則來匹配它。如果找不到,則採取預設操作。

netfilter/iptables過濾防火牆系統是一種功能強大的工具,可用於新增、編輯和除去規則,這些規則是在做資訊包過濾決定時,防火牆所遵循和組成的規則。這些規則儲存在專用的資訊包過濾表中,而這些表整合在linux核心中。在資訊包過濾表中,規則被分組放在我們所謂的鏈(chain)中。

雖然netfilter/iptables包過濾系統被稱為單個實體,但它實際上由兩個元件netfilter 和 iptables 組成。

netfilter 元件也稱為核心空間(kernelspace),是核心的一部分,由一些資訊包過濾表組成,這些表包含核心用來控制資訊包過濾處理的規則集。

iptables 元件是一種工具,也稱為使用者空間(userspace),它使插入、修改和除去資訊包過濾表中的規則變得容易。

iptables的原理就是通過iptables中的規則對資料報進行控制,iptables中定義了5條鏈,每條鏈中可以定義多條規則,每當資料報到達乙個鏈,iptables就會從鏈中第一條規則開始檢查,看該資料報是否滿足規則所定義的條件。如果滿足,系統就會根據該條規則所定義的方法處理該資料報;否則iptables將繼續檢查下一條規則,如果該資料報不符合鏈中任一條規則,iptables就會根據該鏈預先定義的預設策略來處理資料報

乙個資料報進入網絡卡時,它首先進入prerouting鏈,核心根據資料報目的ip判斷是否需要**出去。

如果資料報就是進入本機的,它就會沿著圖向上移動,到達input鏈。資料報到了input鏈後,任何程序都會收到它。本機上執行的程式可以傳送資料報,這些資料報會經過output鏈,然後到達postrouting鏈輸出。

如果資料報是要**出去的,且核心允許**,資料報就會如圖所示向右移動,經過 forward鏈,然後到達postrouting鏈輸出。

防火牆是一層層過濾的。實際是按照配置規則的順序從上到下,從前到後進行過濾的。

如果匹配上規則,即明確表是阻止還是通過,此時資料報就不在向下匹配新規則了。

如果所有規則中沒有明確是阻止還是通過這個資料報,也就是沒有匹配上新規則,向下進行匹配,直到匹配預設規則得到明確的組織還是通過

防火牆的預設規則是對應鏈的所有規則執行完才會執行的。規則就是網路管理員在iptables上預定義的條件,規則一般定義為「如果資料報頭符合這樣的條件,就處理這個資料報」,規則儲存在核心空間的資訊包過濾表中,這些規則分別指定了源位址、目的位址、傳輸協議(如tcp、udp、icmp)和服務型別(如http、ftp和smtp)等。當資料報與規則匹配時,iptables就根據規則所定義的方法來處理這些資料報,如放行(accept)、拒絕(reject)和丟棄(drop)等。配置防火牆的主要工作就是新增、修改和刪除這些規則。

上述規則一般都是有很多條, 將很多條規則串起來, 即形成了(規則)鏈. 核心檢查的時候, 按照鏈中的順序, 一條條的進行檢查,可以將鏈比做成乙個檢查站,每個要經過檢查站的資料報,都會對其進行檢查,檢視資料報是否符合檢查站上的規則,如果有符合條件的規則,則執行規則相應的動作。iptables上定義了五條預設的規則鏈,分別為input、output、forward、prerouting、postrouting。其應用時間點分別對應如下:

我們把具有相同功能的規則的集合叫做表,所以說,不同功能的規則,我們可以放置在不同功能的表中進行管理,iptables中定義了四張表,每張表對應了不同的功能,每張表的功能如下:

iptables [-t 表] [-命令引數 鏈] [-匹配條件 ] [-j 動作]

數字8代表的是icmp報文的型別為8,也就是『echo-request』,表示回顯請求,

而數字0代表icmp報文的型別為0,也就是『echo-reply』,表示回顯應答,更多icmp報文的型別和編可以使用『iptables -m icmp -h』檢視,如果為了省事可以直接使用iptables -i input -p icmp -j reject,不過這樣就把所有的icmp包給拒絕了,我們也就無法ping通別人了

這裡因為我的input鏈預設規則是accept,第一條規則是每五秒鐘匹配一次資料報,那麼第五秒鐘之前沒有匹配到的資料報如果沒有對應的規則匹配,那麼只能匹配input鏈的預設規則accept,那這樣限速是完全沒用的,於是我們需要新增一條規則來將那些沒有匹配到的資料報進行丟棄

環境
主機a   外網ip:60.205.177.173

內網ip:173.168.16.1

主機b 內網ip:173.168.16.2 閘道器:173.168.16.1

臨時開啟

echo 1 > /proc/sys/net/ipv4/ip_forward

永久開啟

[root@localhost ~]# vim /etc/sysctl.conf

net.ipv4.ip_forward = 1

這樣就可以通過訪問60.205.177.173的800埠來訪問173.168.16.2上的web服務了,如果不能進行訪問,可以試著將對應的snat規則配置一

iptables入門介紹

說白了,iptables在linux當中充當類似防火牆的功能。它依賴於linux核心的netfilter模組,在它的基礎上實現了自己的規則,篩選資料報。我們只需要知道,區別就是篩選方式和手段不一樣,但是都是依賴netfilter實現的。具體的區別是什麼,有興趣的可以自己搜尋。yum install ...

iptables引數詳解

一 iptables 主要引數 a 新增規則到鍊錶末尾 i 新增規則到首部 t 操作的表,後面加表名,不加這個引數預設操作表為filter d 刪除表中規則,可以指定序列號或者匹配的規則來刪除 iptables t nat d prerouting 1 f 清空規則,重啟後恢復 iptables f...

iptables命令詳解

iptabels root www iptables ai鏈名 io網路介面 p協定 s ip 網域 d目標ip 網域 j accept drop reject log 選項與引數 ai 鏈名 針對某的鏈進行規則的 插入 或 累加 a 新增加一條規則,該規則增加在原本規則的最後面。例如原本已經有四條...