Iptables 使用簡介
Iptables是一種功能強大的基于包過濾的網絡工具,本文簡單介紹了iptables的使用方法,以及如何利用它來建構一個網絡防火牆。
Iptables由兩個子系統組成,即核心子產品和使用者接口應用程式,它可以被編譯進系統核心,也可以編譯成可裝卸的核心子產品,之後還可以選擇安裝一些能夠完成一定功能的部件,這些部件實作了IP位址僞裝,端口映射,包過濾等等一系列功能。
安裝iptables
iptables很多元件的配置、編譯是與核心的配置、編譯相關聯的,一些Linux發行版已經預先安裝好了iptables,如RedHat,RedFlag等。但是您還是有可能需要自己安裝。
首先您需要2.4.X以上版本的核心,可以從[url]http://Kernel.org[/url]下載下傳。
您還需要iptables的使用者空間程式,它可以從Netfilter首頁下載下傳。
當您做好準備工作後就開始編譯核心,在Networking Options下找到 Network packet filtering子項,選擇Network packet filtering replaces ipchains并進行配置。
使用新核心引導後編譯iptables的使用者空間程式,安裝程式會将可執行檔案拷貝到/usr/local/sbin目錄。
如果一切都很順利,我們就已經在核心中成功地安裝了對iptables和Netfilter的支援了。
使用者可以通過service iptables start啟動服務。
表和鍊
這裡我們讨論一下資料包在iptables的各個鍊和表之間是怎麼傳遞的。
舉例來說,一個從外部主機發往本機的資料包需要經過以下的途徑才能被應用程式接收:
1. 資料包從網絡傳入,并由網卡接收
2. 随後轉入mangle表的PREROUTING鍊。
3. 再轉入nat表的PRETOUTING鍊,這個鍊主要用來做DNAT,即目的位址轉發。
4. 路由判斷。
5. 因為資料包是傳入本機的,是以轉入mangle表的INPUT鍊。
6. 轉入filter表的INPUT鍊。
7. 最終到達接收資料包的應用程式。
同樣,一個從本地發往外部主機的資料包也經過了下列途徑,才開始真正的網絡傳輸:
1. 應用程式生成資料包,根據源位址,目的位址,外出接口等資訊進行路由判斷。
2. 随後轉入mangle表的OUTPUT鍊。
3. 再轉入nat表的OUTPUT鍊,這個鍊可以用來做DNAT。
4. 進入filter表的OUTPUT鍊,對該資料包進行選擇性過濾。
5. 然後進入mangle表的POSTROUTING鍊。
6. 進入nat表的POSTROUTING鍊,該鍊可以做SNAT,即源位址轉發,最終進入網絡。
對于轉發的包,即傳入包的目的位址是另一個網絡中的某個主機時,也有下列途徑:
1. 資料報傳入,進入mangle表的PREROUTING鍊
2. 轉入nat表的PREROUTING鍊。
3. 進行路由判斷。該包的目的位址是另一台主機,是以轉入mangle表的FORWARD鍊
4. 再轉入filter表的FORWARD鍊,針對這類包的所有過濾操作都在該鍊進行。
5. 過濾後轉入mangle鍊的POSTROUTING鍊,最後通過nat表的POSTROUTING鍊進行SNAT,最終進入網絡。
在對網絡資料包的流向有了一些了解後,下一節我們将介紹如何編寫iptables規則。
(e129)