規則(Rules)
iptables的每一條規則(rule),都是由兩部分組成的,第一部分包含一或多個「過濾條件」其作用是檢查包是否符合處理條件(所有條件都必須成立才算數) ;第而部分稱為「目標」,用於決定如何處置符合條件的包。
對於每一條規則,iptables各維護兩個計數器:一個計算符合條件的封包數,稱為packet counter;另一個計算該規則所處理的總資料量,稱為byte counter。每當有包符合特定規則的過濾條件,該規則的packet counter便會被累加一,並將該包的大小累加到該規則的byte counter。
規則可以只有「過濾條件」或「目標」(處置方式) 的其中之一;沒指定過濾條件時,則所有包都算符合條件;沒指定處置方式時,則放任讓包繼續其流程,也就是說。包本身不會有任何改變,只有該規則的兩個 counters會累增而已。使用下列命令可將這種只有計數作用的空規則加入filter表格FORWARD鏈結:
iptables -t filter -A FORWARD
過濾條件(Matches)
iptables 可讓你設置多種過濾條件,但是某些條件需要核心有提供相關功能才行。Iptables本身內建一般性的Internet Protocol (IP) 過濾條件,也就是說,即時沒載入任何擴充模組,你也可以用IP包標頭的「傳輸協定類型」、「來源位址」、「目的地位址」等欄位為過濾條件。關於一般性的 IP過濾條件,請參閱《IPv4過濾條件》。
除了IP之外的其它協定,諸如ICMP、TCP、UDP等等,必須載入相關的擴充模組,才可以作為過濾條件。使用iptables的-m或- -match選項,指出載入特定協定的擴充模組。
所有關于過濾條件的擴充模組,幾乎都上針對網絡層(IP、ICMP)或傳輸層(TCP、UDP),唯一例外上mac模組,它能讓你以Ethernet網卡的 MediaAccessController(MAC)位址為過濾條件【注解:Ethernet屬于網絡層之下的「資料連結層」(OSI Model)或「實體層」(IP Model)】。
目標(Target)
目標「(targets)決定如何處理符合過濾條件的包,或是當成鏈結的政策。iptables共內建四種目標(參閱《表8》),除此之外的其它目標,必須透過擴充模組來提供。
表8:iptables內建的目標

應用
本節簡述各種包處理技術的觀念,以及它們的應用。
包過濾(Packet filtering)
「包過濾」是最基本的封包處理方式:于核心網絡程式的各交接點檢查包內容,籍此決定包的后續處理流程(放行到下一階段、不回復而逕行放棄、回復拒收訊息,諸如此類)。
累計(Accounting)
「累計」:使用各種包過濾條件的byte/package counter來監測網絡交通量。
連線追蹤(Connection tracking)
「連線追蹤」:提供可用於判斷包相關性的額外資訊。舉例來說,一次FTP session同時需要兩條分離的連線,控制與資料傳輸各一;用於追蹤FTP連線的擴充模組,運用對於FTP恊定的認知,從控制連線上流動的封包資料中,分析出足以便識資料連線的資訊(於何時建立、雙方所用的TCP port),然后將查出的資訊提供給處理包的規則。
封包修改(Packet mangling)
「包修改」:修改包的標頭欄位(通常是網路位址與通訊埠編號),或是其承載資料。
網址轉譯 (Network address translation,NAT)
NAT 是一種涉及修改來源位址,目的地位址、來源端口、目的地端口之特殊「包修改」。對於只修改來源位址/通訊端口的操作,稱為「Source NAT」(或簡稱為S-NAT或SN AT);若只修改目的地位址/通訊端口,則稱為「Destination NAT」(或簡稱為D-NAT或DNAT)。某些形式的NAT需要運用「連線追蹤」來決定如何修改包。
偽裝(Masquerading)
「偽裝」是一種特殊的SNAT操作:將來自其它電腦的包的來源位址改成自己的位址:請注意,由於入替的來源位址是自動決定的(執行SNAT的主機的IP位址)。所以,如果它改變了,仍在持續中的舊連線將會失效!競窝b」的主要用途是讓多部使用private Ip的電腦(通常是透過DHCP動態取得)可以共用同一個public IP(固定或ISP動態分配)上網。
通訊埠轉接(Port Forwarding)
「通訊埠轉接」是一種特殊的DNAT操作,其作用是讓一部電腦(通常是防火牆)擔任其它電腦的代理伺服器(proxy)。防火牆接收外界網絡接傳給它自己的包,然后改寫包的目的地位址或目的端口,使其像是要送到內部網路其它電腦的樣子,然后才修改好的包送往新目的地。此外,來自內部網路的相關回復包,也會被防火牆改寫成像是從防火牆自己發出的樣子,然后才送到外界電腦。
「通訊端口轉接」通常用於提供內部網路的公開服務(像是web server或email server)給外界存取,而不需要一個以上的public IP。對於外界而言,這些公開服務就像是代理主機(防火牆)所提供的,對於內部網路上的真實伺服器而言,就好像所有的服務要求都來自代理主機。
負裁平衡(Load balancing)
「負戴平衡」的作用是將連線平均分散給一組伺服器,以充分利用資源。最簡單的作法是利用「通訊端口轉接」技術,使其以循環順序選擇目的地位址。
設定iptables的組態
各家Linux系統的iptables組態設定程序都不太一樣,本節提供通用的作法,以及Red Hat 特有的設定方法。
「規則」的儲存與回復
Red Hat Linu系統將iptables的「規則」儲存于/etc/sysconfig/iptables檔案,使用iptables initscript (通常是/etc/init.d/iptables)可將當時的規則儲存于/etc/sysconfig/iptables,或將該檔案裡的規則載入核心,如下:
/etc/init.d/iptables save (儲存當時組態)
/etc/init.d/iptables restore (載入前次儲存的組態)
使用Red Hat Linux的chkconfig命令,可以查出哪些runlevel會自動執行iptables:
chkconfig - - list iptables
假設你想在runlevels3、4、與5啟動iptables,使用下列命令:
chkconfig - -levels 345 iptables on
你也可以自己啟動iptables(從/etc/sysconfig/iptables檔案載入規則,與/etc/init.d/iptables restore等效):
service iptables start
下列命令可以使其失效(清洗掉核心當時的規則):
service iptables stop
對于Red Hat Linux之外的其它系統,可使用iptables-save與iptables-restore達到儲存、回復規則的效果。關于這兩個工具程式,請參閱《輔助工具》。
其它相關組態檔
透過/proc檔案系統下的虛擬檔案,可以監測、控制核心的一般網絡功能,以及iptables的行為!侗9》列出最常用的檔案。

核心對于iptables的支援
iptables與Linux核心的版本息息相關。在Red Hat Linux系統上,使用uname -r 命令可查出當時核心的版本。你會見到類似以下面的訊息:
2.4.20-20.9
當初用來建構核心的組態檔,其名稱應該含有核心的版本與機器類型(可使用uname -a查出來),例如:
/usr/src/linux-2.4.20-2.9/configs/
kernel-2.4.20-i686.config
與iptables功能有關的組態項目,其名稱多半是以CONFIG_IP_NF_為首。以下是至少必須具備的基本要項:
●CONFIG_PACKET(透過網絡界面直接通訊)
●CONFIG_NETFILTER(提供iptables所需要的核心基礎機制)
●CONFIG_IP_NF_CONNTRACK(支援NAT與偽裝)
●CONFIG_IP_NF_FILTER(支援filter表格)
●CONFIG_IP_NF_IPTABLES(使userspace的iptables工具能夠設定kernel-space里的Netfilter)
●CONFIG_IP_NF_MANGLE(支援mangle表格)
●CONFIG_IP_NF_NAT(支援nat表格)
********************************
警告:
你或許會很想要打開CONFG_NET_FASTROUTE,因為「fast routing」聽起來是很適合用在防火墻的功能。別這么做!因為「fast routing」的原理其實是繞過Netfilter的各個攔截點。
********************************
如果需要能夠與舊版防火墻技術(2.0時代的ipfwadmin,以及2.2時代的ipchains)相容,請加入下列兩個選項:
●CONFIG_IP_NF_COMPATHAINS
●CONFIG_IP_NF_COMPAT_IPFWADM
______________________________
缺竅
有一組專為添增新功能到Netfiiter的核心修補程式,稱為「patch-o-matic」在Netfilter主網站的《NetfilterExtensions HOWTO》(位於http: //www.netfilter.org/documenIation/HOWTO/netfilter.extensions.HOWTO.html) 可以找到關於這組修補程式的說明。Patch-o-matic本身並非隨附iptables一起發行.而必須另外從ftp: /ftp.netfiher.org/pub/patch-o-matic/下載。
______________________________
當你修補核心時,必須特別謹慎,尤其是對於實驗性的Netfilter擴充模組。有些模組甚至不能同時編譯,有些甚至即使可編譯也不能夠執行?傊,對於新建好的核心,應該事先於無關緊要的環境下進行測試,而不要貿然安裝在實際的防火墻上。
連線追蹤(Connection Tracking)
有能力找出不同封包之間的邏輯關連性,所屬的邏輯連線;邏輯連線的概念甚至也適用於某的UDP封包(雖然UDP本身是一種沒有連線概念的協定)。為了做到這點,核心必須記錄連線的生命週期進度追蹤資訊提供給conntrack mateh extension(【注譯:match extension是可讓iptables使用特殊條件來過濾封包的擴充模組】)。
TCP實際的連線搭建程序與狀態維護機制頗為復雜,所為此,線追蹤邏輯將連線的整個生命期簡化為四個階段(四種狀態),對於個別TCP包,必定是屬於道四種狀態的連線之一。請參閱《表10》:

對于每一條連線(包括具體TCP連線,以及廣義的UDP連線),連線線追蹤邏輯各維護三個位元的狀態資訊!侗11》列出這些態代碼的名稱(可用於 - -ctstatus選項)。

iptables的連線追蹤邏輯,可容許外掛模組來輔助辨識新連線與舊有連線之間的關系。
當你的防火墻(或閘道器)需要轉接多連線式的協定時間 、,你將需要使用相關追蹤的主要連線形式。
在使用它們之前,必須先用modprobc將相關模組載入核心。請參閱《helper過濾條件》。

累計(Accounting)
對於每一條規則,核心各自設置兩個專屬的計數器,用于累計符合該條件的封包數,以及這些封包的總位元組數。這兩項資訊可用於統計網路用量。
舉例來說,假設有一臺Internet閘道器路,eth0接內部網絡,eth1接Internet;使用下列規則可使其核心自動累計內外網路所交換的封包數與資料量:
iptables -A FORWARD -i ethl
iptables -A FORWARD -o ethl
iptables -A INPUT -i ethl
iptables -A OUTPUT -o ethl
執行上述命令之后,使用iptable -L -v顯示統計結果(注意INPUT和OUTPUT的計數結果 - 非零值表示已經有些網絡交通問題發生在我們顯示計數結果之前):
Chain INPUT (policy ACCEPT 27 packets, 1728 bytes)
pkts bytes target prot opt in out source destination
3 192 all - - eth1 any anywhere anywhere
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
0 0 all - - eth1 any anywhere anywhere
0 0 all - - any eth1 anywhere anywhere
Chain OUTPUT (policy ACCEPT 21 packets, 2744 bytes)
pkts bytes target prot opt in out source destination
3 192 all - - any eth1 anywhere anywhere
在統計方面的應用,請參與《表14》對于 -c、-n、-t和-x選項的討論,以及《表15》對于-L和-z選項的說明。
網址轉譯
(Network Address Translation,NAT)
當封包流經NAT電腦時,其位址/通訊端口會被修改,以達到改變包目的地(或旅程),或是讓目的地誤以為包是源自NAT電腦的效果。換言之,對封包執行NAT的電腦,可以成為新包的來源或目的地,或是成為真正來源與目的地之間的中繼站。
*****************************
警告:
NAT需要連線追蹤的能力,而連線追蹤又需要電腦能看到所有包才有效,所以,如果你的防火墻是有多臺電腦構行,請小心避免破壞連線追蹤。
*****************************
利用NAT的位址/通訊埠操弄能力,可以執行許多有用的應用。為此,iptables內建一個nat表格,專用於設置各種涉及NAT操作的規則。
對於大多數協定,NAT可直接修改包的(來源/目的地)位址/通訊埠.而不必理會包的承戴內容為何。不過,某些恊定需要通訊雙方在執行期才恊商位址或通訊端口(FTP恊定的資訊連線就是一例),換言之,這類恊定的承載內容里,含有影響后續相關連線的位址或通訊端口資訊。要讓這類協定的封包能順利通過NAT閘道,iptables勢必需要能分析各種恊定封包的能力,否則,通訊雙方將因為不知道NAT的存在.而交換了錯誤的位址(或通訊端口)資訊.造成協定失效。
很顯然地,iptables不可能知道每一種承載內容含有位址資訊的協定,為此,iptables的NAT
邏輯容許你使用外掛模組,以協助處理需要交換位址資訊的協定之封包,你可用modprobe命令來將特定的輔助模組載入核心!侗13》列出了常用的 NAT輔助模組。

SNAT與偽裝
Source NAT(SNAT)的主要應用,是讓同一內部網路上的多部主機,可共用同一條Internet實體連線.直接與Internet相連的閘道器,可使用 SNAT(搭配連線追蹤)來來改寫內部網絡與Internet之間的來往封包的來源位址。出境封包的來源位址,會被改成閘遭器在Internet端的固定 IP位址;當外界主機回復時,它們的封包的目的地位址將會是閘道器的Interne端的IP位址,所以閘道器可以攔截這些封包,將它們的目的地位址改成正確的內部主機IP位址,然后轉送到內部網路。
由於SNAT必須在封包即將離開核心的前一刻,即時修改其來源位址(或通訊端口),所以SNAT規則的設置地點必須是在nat表格的POSTROUTING鏈結。
舉例來說,假設閘道器與Internet相接的介面是ethl,則下列兩種iptables命令可以達成SNAT的效果。
iptable -t nat -A POSTROUTING -o eth1 -j SNAT
或
iptable -t nat -A POSTROUTING -o eth1 -j MASQUERADE
第一種方法是直接使用SNAT為目標,這種方法適合用在具有固定IP地址的網關器,另一種方法是使用是使用MASQUERADE為目標,適合用于只有動態 IP地址的網關器(例如,使用PPPoE協定的ADSL連線)。由于由于MASQUERADE能夠應付網絡界面忽然離線,然后以另一個地址恢復上線的情況,所以它轉換邏輯比較復雜些,需要耗損比較多的CPU運算能力,因此,如果你有固定的IP地址,就應該盡量使用SNAT來代替MASQUERADE。
DNAT
Destination NAT(DNAT)的主要用途,是讓Internet上的電腦能夠存取內部網絡上的特定服務,但是卻又不直接提供服務的內部服務器聯機。只要不必在同一個通訊端口上提供兩個以上的同性質服務(例如,提供兩個不同的WWW網站),就只需要使用一條Internet聯機(一個public Ip位址)。閘道器將原本送到特定通訊端口的封包,導引到指定的內部服務器與通訊端口,然后攔截內部服務器的回復封包,改寫其目的地位址(與通訊端口),是其回到正確的外界網絡位址。
由于DNAT修改包的目的地位址的時機,必須在包即將被送到本機行程之前,或是要被轉送其它電腦之前;所以,使用DNAT為目標的規則,必須設置于nat表格的PREROUTING鏈結。
舉例來說,若要將外界連到閘道器port80(HTTP)的聯機轉接到內部網絡上的192.168.1.3:8080的web server,你可以使用以下命令(假設eth1是閘道器連接Internet的網絡界面):
iptable -t nat -A PREROUTING -i eth1 -p tcp - -dport 80
-j DNAT --to-destination 192.168.1.3:8080
注譯:
package :“封包”或稱呼為“包”
filter : 篩選或 過濾
延伸閱讀
文章來源于領測軟件測試網 http://www.kjueaiud.com/
領測軟件測試網最新更新
關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
技術支持和業務聯系:info@testage.com.cn 電話:010-51297073
版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
技術支持和業務聯系:info@testage.com.cn 電話:010-51297073
老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月