自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Iptables 詳細(xì)介紹

運(yùn)維 系統(tǒng)運(yùn)維
iptables 是與最新的 2.6.x 版本Linux 內(nèi)核集成的 IP 信息包過濾系統(tǒng)。本文將為大家詳細(xì)介紹下Iptables的概念、命令、命令的說明以及模塊編譯及應(yīng)用!

本文講述了Iptables的相關(guān)知識(shí),有Iptables的概念、命令、命令的說明以及模塊編譯及應(yīng)用,請(qǐng)看下文!

       一、Iptables概念

  iptables 是與最新的 2.6.x 版本Linux 內(nèi)核集成的 IP 信息包過濾系統(tǒng)。如果 Linux 系統(tǒng)連接到因特網(wǎng)或 LAN、服務(wù)器或連接 LAN 和因特網(wǎng)的代理服務(wù)器, 則該系統(tǒng)有利于在 Linux 系統(tǒng)上更好地控制 IP 信息包過濾和防火墻配置。

  netfilter/iptables IP 信息包過濾系統(tǒng)是一種功能強(qiáng)大的工具,可用于添加、編輯和除去規(guī)則,這些規(guī)則是在做信息包過濾決定時(shí),防火墻所遵循和組成的規(guī)則。這些規(guī)則存儲(chǔ)在專用的信息包過濾表中,而這些表集成在 Linux 內(nèi)核中。在信息包過濾表中,規(guī)則被分組放在我們所謂的鏈(chain)中。

  雖然 netfilter/iptables IP 信息包過濾系統(tǒng)被稱為單個(gè)實(shí)體,但它實(shí)際上由兩個(gè)組件netfilter 和 iptables 組成。

  netfilter 組件也稱為內(nèi)核空間(kernelspace),是內(nèi)核的一部分,由一些信息包過濾表組成,這些表包含內(nèi)核用來控制信息包過濾處理的規(guī)則集。

  iptables 組件是一種工具,也稱為用戶空間(userspace),它使插入、修改和除去信息包過濾表中的規(guī)則變得容易。除非您正在使用 Red Hat Linux 7.1 或更高版本,否則需要下載該工具并安裝使用它。

  二、相關(guān)命令

  用iptables -ADC 來指定鏈的規(guī)則,-A添加 -D刪除 -C 修改

  iptables - [RI] chain rule num rule-specification[option]

  用iptables - RI 通過規(guī)則的順序指定

  iptables -D chain rule num[option]

  刪除指定規(guī)則

  iptables -[LFZ] [chain][option]

  用iptables -LFZ 鏈名 [選項(xiàng)]

  iptables -[NX] chain

  用 -NX 指定鏈

  iptables -P chain target[options]

  指定鏈的默認(rèn)目標(biāo)

  iptables -E old-chain-name new-chain-name

  -E 舊的鏈名 新的鏈名

  用新的鏈名取代舊的鏈名

#p#

  三、相關(guān)命令的說明

  Iptables 是用來設(shè)置、維護(hù)和檢查L(zhǎng)inux內(nèi)核的IP包過濾規(guī)則的。

  可以定義不同的表,每個(gè)表都包含幾個(gè)內(nèi)部的鏈,也能包含用戶定義的鏈。每個(gè)鏈都是一個(gè)規(guī)則列表,對(duì)對(duì)應(yīng)的包進(jìn)行匹配:每條規(guī)則指定應(yīng)當(dāng)如何處理與之相匹配的包。這被稱作'target'(目標(biāo)),也可以跳向同一個(gè)表內(nèi)的用戶定義的鏈。

  TARGETS

  防火墻的規(guī)則指定所檢查包的特征,和目標(biāo)。如果包不匹配,將送往該鏈中下一條規(guī)則檢查;如果匹配,那么下一條規(guī)則由目標(biāo)值確定.該目標(biāo)值可以是用戶定義的鏈名,或是某個(gè)專用值,如ACCEPT[通過], DROP[刪除], QUEUE[排隊(duì)], 或者 RETURN[返回]。

  ACCEPT 表示讓這個(gè)包通過。DROP表示將這個(gè)包丟棄。QUEUE表示把這個(gè)包傳遞到用戶空間。RETURN表示停止這條鏈的匹配,到前一個(gè)鏈的規(guī)則重新開始。如果到達(dá)了一個(gè)內(nèi)建的鏈(的末端),或者遇到內(nèi)建鏈的規(guī)則是RETURN,包的命運(yùn)將由鏈準(zhǔn)則指定的目標(biāo)決定。

  TABLES

  當(dāng)前有三個(gè)表(哪個(gè)表是當(dāng)前表取決于內(nèi)核配置選項(xiàng)和當(dāng)前模塊)。

  -t table

  這個(gè)選項(xiàng)指定命令要操作的匹配包的表。如果內(nèi)核被配置為自動(dòng)加載模塊,這時(shí)若模塊沒有加載,(系統(tǒng))將嘗試(為該表)加載適合的模塊。這些表如下:filter,這是默認(rèn)的表,包含了內(nèi)建的鏈INPUT(處理進(jìn)入的包)、FORWORD(處理通過的包)和OUTPUT(處理本地生成的包)。nat,這個(gè)表被查詢時(shí)表示遇到了產(chǎn)生新的連接的包,由三個(gè)內(nèi)建的鏈構(gòu)成:PREROUTING (修改到來的包)、OUTPUT(修改路由之前本地的包)、POSTROUTING(修改準(zhǔn)備出去的包)。mangle 這個(gè)表用來對(duì)指定的包進(jìn)行修改。它有兩個(gè)內(nèi)建規(guī)則:PREROUTING(修改路由之前進(jìn)入的包)和OUTPUT(修改路由

  

 

  IPTABLES之前本地的包)。

  OPTIONS

  這些可被iptables識(shí)別的選項(xiàng)可以區(qū)分不同的種類。

  COMMANDS

  這些選項(xiàng)指定執(zhí)行明確的動(dòng)作:若指令行下沒有其他規(guī)定,該行只能指定一個(gè)選項(xiàng).對(duì)于長(zhǎng)格式的命令和選項(xiàng)名,所用字母長(zhǎng)度只要保證iptables能從其他選項(xiàng)中區(qū)分出該指令就行了。

  -A -append

  在所選擇的鏈末添加一條或更多規(guī)則。當(dāng)源(地址)或者/與 目的(地址)轉(zhuǎn)換為多個(gè)地址時(shí),這條規(guī)則會(huì)加到所有可能的地址(組合)后面。

  -D -delete

  從所選鏈中刪除一條或更多規(guī)則。這條命令可以有兩種方法:可以把被刪除規(guī)則指定為鏈中的序號(hào)(第一條序號(hào)為1),或者指定為要匹配的規(guī)則。

  -R -replace

  從選中的鏈中取代一條規(guī)則。如果源(地址)或者/與 目的(地址)被轉(zhuǎn)換為多地址,該命令會(huì)失敗。規(guī)則序號(hào)從1開始。

  -I -insert

  根據(jù)給出的規(guī)則序號(hào)向所選鏈中插入一條或更多規(guī)則。所以,如果規(guī)則序號(hào)為1,規(guī)則會(huì)被插入鏈的頭部。這也是不指定規(guī)則序號(hào)時(shí)的默認(rèn)方式。

  -L -list

  顯示所選鏈的所有規(guī)則。如果沒有選擇鏈,所有鏈將被顯示。也可以和z選項(xiàng)一起使用,這時(shí)鏈會(huì)被自動(dòng)列出和歸零。精確輸出受其它所給參數(shù)影響。

  -F -flush

  清空所選鏈。這等于把所有規(guī)則一個(gè)個(gè)的刪除。

  --Z -zero

  把所有鏈的包及字節(jié)的計(jì)數(shù)器清空。它可以和 -L配合使用,在清空前察看計(jì)數(shù)器,請(qǐng)參見前文。

  -N -new-chain

  根據(jù)給出的名稱建立一個(gè)新的用戶定義鏈。這必須保證沒有同名的鏈存在。

  -X -delete-chain

  刪除指定的用戶自定義鏈。這個(gè)鏈必須沒有被引用,如果被引用,在刪除之前你必須刪除或者替換與之有關(guān)的規(guī)則。如果沒有給出參數(shù),這條命令將試著刪除每個(gè)非內(nèi)建的鏈。

  -P -policy

  設(shè)置鏈的目標(biāo)規(guī)則。

  -E -rename-chain

  根據(jù)用戶給出的名字對(duì)指定鏈進(jìn)行重命名,這僅僅是修飾,對(duì)整個(gè)表的結(jié)構(gòu)沒有影響。TARGETS參數(shù)給出一個(gè)合法的目標(biāo)。只有非用戶自定義鏈可以使用規(guī)則,而且內(nèi)建鏈和用戶自定義鏈都不能是規(guī)則的目標(biāo)。

  -h Help.

  幫助。給出當(dāng)前命令語法非常簡(jiǎn)短的說明。

  PARAMETERS

  參數(shù)

  以下參數(shù)構(gòu)成規(guī)則詳述,如用于add、delete、replace、append 和 check命令。

  -p -protocal [!]protocol

  規(guī)則或者包檢查(待檢查包)的協(xié)議。指定協(xié)議可以是tcp、udp、icmp中的一個(gè)或者全部,也可以是數(shù)值,代表這些協(xié)議中的某一個(gè)。當(dāng)然也可以使用在/etc/protocols中定義的協(xié)議名。在協(xié)議名前加上"!"表示相反的規(guī)則。數(shù)字0相當(dāng)于所有all。Protocol all會(huì)匹配所有協(xié)議,而且這是缺省時(shí)的選項(xiàng)。在和check命令結(jié)合時(shí),all可以不被使用。

  -s -source [!] address[/mask]

  指定源地址,可以是主機(jī)名、網(wǎng)絡(luò)名和清楚的IP地址。mask說明可以是網(wǎng)絡(luò)掩碼或清楚的數(shù)字,在網(wǎng)絡(luò)掩碼的左邊指定網(wǎng)絡(luò)掩碼左邊"1"的個(gè)數(shù),因此,mask值為24等于255.255.255.0。在指定地址前加上"!"說明指定了相反的地址段。標(biāo)志 --src 是這個(gè)選項(xiàng)的簡(jiǎn)寫。

  -d --destination [!] address[/mask]

  指定目標(biāo)地址,要獲取詳細(xì)說明請(qǐng)參見 -s標(biāo)志的說明。標(biāo)志 --dst 是這個(gè)選項(xiàng)的簡(jiǎn)寫。

  -j --jump target

  -j 目標(biāo)跳轉(zhuǎn)

  指定規(guī)則的目標(biāo);也就是說,如果包匹配應(yīng)當(dāng)做什么。目標(biāo)可以是用戶自定義鏈(不是這條規(guī)則所在的),某個(gè)會(huì)立即決定包的命運(yùn)的專用內(nèi)建目標(biāo),或者一個(gè)擴(kuò)展(參見下面的EXTENSIONS)。如果規(guī)則的這個(gè)選項(xiàng)被忽略,那么匹配的過程不會(huì)對(duì)包產(chǎn)生影響,不過規(guī)則的計(jì)數(shù)器會(huì)增加。

  -i -in-interface [!] [name]

  i -進(jìn)入的(網(wǎng)絡(luò))接口 [!][名稱]

  這是包經(jīng)由該接口接收的可選的入口名稱,包通過該接口接收(在鏈INPUT、FORWORD和PREROUTING中進(jìn)入的包)。當(dāng)在接口名前使用"!"說明后,指的是相反的名稱。如果接口名后面加上"+",則所有以此接口名開頭的接口都會(huì)被匹配。如果這個(gè)選項(xiàng)被忽略,會(huì)假設(shè)為"+",那么將匹配任意接口。

  -o --out-interface [!][name]

  -o --輸出接口[名稱]

  這是包經(jīng)由該接口送出的可選的出口名稱,包通過該口輸出(在鏈FORWARD、OUTPUT和POSTROUTING中送出的包)。當(dāng)在接口名前使用"!"說明后,指的是相反的名稱。如果接口名后面加上"+",則所有以此接口名開頭的接口都會(huì)被匹配。如果這個(gè)選項(xiàng)被忽略,會(huì)假設(shè)為"+",那么將匹配所有任意接口。

  [!] -f, --fragment

  [!] -f --分片

  這意味著在分片的包中,規(guī)則只詢問第二及以后的片。自那以后由于無法判斷這種把包的源端口或目標(biāo)端口(或者是ICMP類型的),這類包將不能匹配任何指定對(duì)他們進(jìn)行匹配的規(guī)則。如果"!"說明用在了"-f"標(biāo)志之前,表示相反的意思。

  OTHER OPTIONS

  其他選項(xiàng)

  還可以指定下列附加選項(xiàng):

  -v --verbose

  -v --詳細(xì)

  詳細(xì)輸出。這個(gè)選項(xiàng)讓list命令顯示接口地址、規(guī)則選項(xiàng)(如果有)和TOS(Type of Service)掩碼。包和字節(jié)計(jì)數(shù)器也將被顯示,分別用K、M、G(前綴)表示1000、1,000,000和1,000,000,000倍(不過請(qǐng)參看-x標(biāo)志改變它),對(duì)于添加,插入,刪除和替換命令,這會(huì)使一個(gè)或多個(gè)規(guī)則的相關(guān)詳細(xì)信息被打印。

  -n --numeric

  -n --數(shù)字

  數(shù)字輸出。IP地址和端口會(huì)以數(shù)字的形式打印。默認(rèn)情況下,程序試顯示主機(jī)名、網(wǎng)絡(luò)名或者服務(wù)(只要可用)。

  -x -exact

  -x -精確

  擴(kuò)展數(shù)字。顯示包和字節(jié)計(jì)數(shù)器的精確值,代替用K,M,G表示的約數(shù)。這個(gè)選項(xiàng)僅能用于 -L 命令。

  --line-numbers

  當(dāng)列表顯示規(guī)則時(shí),在每個(gè)規(guī)則的前面加上行號(hào),與該規(guī)則在鏈中的位置相對(duì)應(yīng)。

  MATCH EXTENSIONS

  對(duì)應(yīng)的擴(kuò)展

  iptables能夠使用一些與模塊匹配的擴(kuò)展包。以下就是含于基本包內(nèi)的擴(kuò)展包,而且他們大多數(shù)都可以通過在前面加上!來表示相反的意思。

  tcp

  當(dāng) --protocol tcp 被指定,且其他匹配的擴(kuò)展未被指定時(shí),這些擴(kuò)展被裝載。它提供以下選項(xiàng):

  --source-port [!] [port[:port]]

  源端口或端口范圍指定。這可以是服務(wù)名或端口號(hào)。使用格式端口:端口也可以指定包含的(端口)范圍。如果首端口號(hào)被忽略,默認(rèn)是"0",如果末端口號(hào)被忽略,默認(rèn)是"65535",如果第二個(gè)端口號(hào)大于第一個(gè),那么它們會(huì)被交換。這個(gè)選項(xiàng)可以使用 --sport的別名。

  --destionation-port [!] [port:[port]]

  目標(biāo)端口或端口范圍指定。這個(gè)選項(xiàng)可以使用 --dport別名來代替。

  --tcp-flags [!] mask comp

  匹配指定的TCP標(biāo)記。第一個(gè)參數(shù)是我們要檢查的標(biāo)記,一個(gè)用逗號(hào)分開的列表,第二個(gè)參數(shù)是用逗號(hào)分開的標(biāo)記表,是必須被設(shè)置的。標(biāo)記如下:SYN ACK FIN RST URG PSH ALL NONE。因此這條命令:iptables -A FORWARD -p tcp --tcp-flags SYN, ACK, FIN, RST SYN只匹配那些SYN標(biāo)記被設(shè)置而ACK、FIN和RST標(biāo)記沒有設(shè)置的包。

  [!] --syn

  只匹配那些設(shè)置了SYN位而清除了ACK和FIN位的TCP包。這些包用于TCP連接初始化時(shí)發(fā)出請(qǐng)求;例如,大量的這種包進(jìn)入一個(gè)接口發(fā)生堵塞時(shí)會(huì)阻止進(jìn)入的TCP連接,而出去的TCP連接不會(huì)受到影響。這等于 --tcp-flags SYN, RST, ACK SYN。如果"--syn"前面有"!"標(biāo)記,表示相反的意思。

  --tcp-option [!] number

  匹配設(shè)置了TCP選項(xiàng)的。

  udp

  當(dāng)protocol udp 被指定,且其他匹配的擴(kuò)展未被指定時(shí),這些擴(kuò)展被裝載,它提供以下選項(xiàng):

  --source-port [!] [port:[port]]

  源端口或端口范圍指定。詳見 TCP擴(kuò)展的--source-port選項(xiàng)說明。

  --destination-port [!] [port:[port]]

  目標(biāo)端口或端口范圍指定。詳見 TCP擴(kuò)展的--destination-port選項(xiàng)說明。

  icmp

  當(dāng)protocol icmp被指定,且其他匹配的擴(kuò)展未被指定時(shí),該擴(kuò)展被裝載。它提供以下選項(xiàng):

  --icmp-type [!] typename

  這個(gè)選項(xiàng)允許指定ICMP類型,可以是一個(gè)數(shù)值型的ICMP類型,或者是某個(gè)由命令iptables -p icmp -h所顯示的ICMP類型名。

  mac

  --mac-source [!] address

  匹配物理地址。必須是XX:XX:XX:XX:XX這樣的格式。注意它只對(duì)來自以太設(shè)備并進(jìn)入PREROUTING、FORWORD和INPUT鏈的包有效。

  limit

  這個(gè)模塊匹配標(biāo)志用一個(gè)標(biāo)記桶過濾器一一定速度進(jìn)行匹配,它和LOG目標(biāo)結(jié)合使用來給出有限的登陸數(shù).當(dāng)達(dá)到這個(gè)極限值時(shí),使用這個(gè)擴(kuò)展包的規(guī)則將進(jìn)行匹配.(除非使用了"!"標(biāo)記)

  --limit rate

  最大平均匹配速率:可賦的值有'/second', '/minute', '/hour', or '/day'這樣的單位,默認(rèn)是3/hour。

  --limit-burst number

  待匹配包初始個(gè)數(shù)的最大值:若前面指定的極限還沒達(dá)到這個(gè)數(shù)值,則概數(shù)字加1.默認(rèn)值為5

  multiport

  這個(gè)模塊匹配一組源端口或目標(biāo)端口,最多可以指定15個(gè)端口。只能和-p tcp 或者 -p udp 連著使用。

  --source-port [port[, port]]

  如果源端口是其中一個(gè)給定端口則匹配

  --destination-port [port[, port]]

  如果目標(biāo)端口是其中一個(gè)給定端口則匹配

  --port [port[, port]]

  若源端口和目的端口相等并與某個(gè)給定端口相等,則匹配。

  mark

  這個(gè)模塊和與netfilter過濾器標(biāo)記字段匹配(就可以在下面設(shè)置為使用MARK標(biāo)記)。

  --mark value [/mask]

  匹配那些無符號(hào)標(biāo)記值的包(如果指定mask,在比較之前會(huì)給掩碼加上邏輯的標(biāo)記)。

  owner

  此模塊試為本地生成包匹配包創(chuàng)建者的不同特征。只能用于OUTPUT鏈,而且即使這樣一些包(如ICMP ping應(yīng)答)還可能沒有所有者,因此永遠(yuǎn)不會(huì)匹配。

  --uid-owner userid

  如果給出有效的user id,那么匹配它的進(jìn)程產(chǎn)生的包。

  --gid-owner groupid

  如果給出有效的group id,那么匹配它的進(jìn)程產(chǎn)生的包。

  --sid-owner seessionid

  根據(jù)給出的會(huì)話組匹配該進(jìn)程產(chǎn)生的包。

  state

  此模塊,當(dāng)與連接跟蹤結(jié)合使用時(shí),允許訪問包的連接跟蹤狀態(tài)。

  --state state

  這里state是一個(gè)逗號(hào)分割的匹配連接狀態(tài)列表??赡艿臓顟B(tài)是:INVALID表示包是未知連接,ESTABLISHED表示是雙向傳送的連接,NEW表示包為新的連接,否則是非雙向傳送的,而RELATED表示包由新連接開始,但是和一個(gè)已存在的連接在一起,如FTP數(shù)據(jù)傳送,或者一個(gè)ICMP錯(cuò)誤。

  unclean

  此模塊沒有可選項(xiàng),不過它試著匹配那些奇怪的、不常見的包。處在實(shí)驗(yàn)中。

  tos

  此模塊匹配IP包首部的8位tos(服務(wù)類型)字段(也就是說,包含在優(yōu)先位中)。

  --tos tos

  這個(gè)參數(shù)可以是一個(gè)標(biāo)準(zhǔn)名稱,(用iptables -m tos -h 察看該列表),或者數(shù)值。

  TARGET EXTENSIONS

  iptables可以使用擴(kuò)展目標(biāo)模塊:以下都包含在標(biāo)準(zhǔn)版中。

  LOG

  為匹配的包開啟內(nèi)核記錄。當(dāng)在規(guī)則中設(shè)置了這一選項(xiàng)后,linux內(nèi)核會(huì)通過printk()打印一些關(guān)于全部匹配包的信息(諸如IP包頭字段等)。

  --log-level level

  記錄級(jí)別(數(shù)字或參看 syslog.conf(5))。

  --log-prefix prefix

  在紀(jì)錄信息前加上特定的前綴:最多14個(gè)字母長(zhǎng),用來和記錄中其他信息區(qū)別。

  --log-tcp-sequence

  記錄TCP序列號(hào)。如果記錄能被用戶讀取那么這將存在安全隱患。

  --log-tcp-options

  記錄來自TCP包頭部的選項(xiàng)。

  --log-ip-options

  記錄來自IP包頭部的選項(xiàng)。

  MARK

  用來設(shè)置包的netfilter標(biāo)記值。只適用于mangle表。

  --set-mark mark

  REJECT

  作為對(duì)匹配的包的響應(yīng),返回一個(gè)錯(cuò)誤的包:其他情況下和DROP相同。

  此目標(biāo)只適用于INPUT、FORWARD和OUTPUT鏈,和調(diào)用這些鏈的用戶自定義鏈。這幾個(gè)選項(xiàng)控制返回的錯(cuò)誤包的特性:

  --reject-with type

  Type可以是icmp-net-unreachable、icmp-host-unreachable、icmp-port-nreachable、icmp-proto-unreachable、 icmp-net-prohibited 或者 icmp-host-prohibited,該類型會(huì)返回相應(yīng)的ICMP錯(cuò)誤信息(默認(rèn)是port-unreachable)。選項(xiàng) echo-reply也是允許的;它只能用于指定ICMP ping包的規(guī)則中,生成ping的回應(yīng)。最后,選項(xiàng)tcp-reset可以用于在INPUT鏈中,或自INPUT鏈調(diào)用的規(guī)則,只匹配TCP協(xié)議:將回應(yīng)一個(gè)TCP RST包。

  TOS

  用來設(shè)置IP包的首部八位tos。只能用于mangle表。

  --set-tos tos

  你可以使用一個(gè)數(shù)值型的TOS 值,或者用iptables -j TOS -h 來查看有效TOS名列表。

  MIRROR

  這是一個(gè)試驗(yàn)示范目標(biāo),可用于轉(zhuǎn)換IP首部字段中的源地址和目標(biāo)地址,再傳送該包,并只適用于INPUT、FORWARD和OUTPUT鏈,以及只調(diào)用它們的用戶自定義鏈。

  SNAT

  這個(gè)目標(biāo)只適用于nat表的POSTROUTING鏈。它規(guī)定修改包的源地址(此連接以后所有的包都會(huì)被影響),停止對(duì)規(guī)則的檢查,它包含選項(xiàng):

  --to-source [-][:port-port]

  可以指定一個(gè)單一的新的IP地址,一個(gè)IP地址范圍,也可以附加一個(gè)端口范圍(只能在指定-p tcp 或者-p udp的規(guī)則里)。如果未指定端口范圍,源端口中512以下的(端口)會(huì)被安置為其他的512以下的端口;512到1024之間的端口會(huì)被安置為1024以下的,其他端口會(huì)被安置為1024或以上。如果可能,端口不會(huì)被修改。

  --to-destiontion [-][:port-port]

  可以指定一個(gè)單一的新的IP地址,一個(gè)IP地址范圍,也可以附加一個(gè)端口范圍(只能在指定-p tcp 或者-p udp的規(guī)則里)。如果未指定端口范圍,目標(biāo)端口不會(huì)被修改。

  MASQUERADE

  只用于nat表的POSTROUTING鏈。只能用于動(dòng)態(tài)獲取IP(撥號(hào))連接:如果你擁有靜態(tài)IP地址,你要用SNAT。偽裝相當(dāng)于給包發(fā)出時(shí)所經(jīng)過接口的IP地址設(shè)置一個(gè)映像,當(dāng)接口關(guān)閉連接會(huì)終止。這是因?yàn)楫?dāng)下一次撥號(hào)時(shí)未必是相同的接口地址(以后所有建立的連接都將關(guān)閉)。它有一個(gè)選項(xiàng):

  --to-ports [-port>]

  指定使用的源端口范圍,覆蓋默認(rèn)的SNAT源地址選擇(見上面)。這個(gè)選項(xiàng)只適用于指定了-p tcp或者-p udp的規(guī)則。

  REDIRECT

  只適用于nat表的PREROUTING和OUTPUT鏈,和只調(diào)用它們的用戶自定義鏈。它修改包的目標(biāo)IP地址來發(fā)送包到機(jī)器自身(本地生成的包被安置為地址127.0.0.1)。它包含一個(gè)選項(xiàng):

  --to-ports []

  指定使用的目的端口或端口范圍:不指定的話,目標(biāo)端口不會(huì)被修改。只能用于指定了-p tcp 或 -p udp的規(guī)則。

  DIAGNOSTICS

  診斷

  不同的錯(cuò)誤信息會(huì)打印成標(biāo)準(zhǔn)錯(cuò)誤:退出代碼0表示正確。類似于不對(duì)的或者濫用的命令行參數(shù)錯(cuò)誤會(huì)返回錯(cuò)誤代碼2,其他錯(cuò)誤返回代碼為1。

  BUGS

  臭蟲

  Check is not implemented (yet).

  檢查還未完成。

  COMPATIBILITY WITH IPCHAINS

  與ipchains的兼容性

  iptables和Rusty Russell的ipchains非常相似。主要區(qū)別是INPUT 鏈只用于進(jìn)入本地主機(jī)的包,而OUTPUT只用于自本地主機(jī)生成的包。因此每個(gè)包只經(jīng)過三個(gè)鏈的一個(gè);以前轉(zhuǎn)發(fā)的包會(huì)經(jīng)過所有三個(gè)鏈。其他主要區(qū)別是 -i 引用進(jìn)入接口;-o引用輸出接口,兩者都適用于進(jìn)入FORWARD鏈的包。當(dāng)和可選擴(kuò)展模塊一起使用默認(rèn)過濾器表時(shí),iptables是一個(gè)純粹的包過濾器。這能大大減少以前對(duì)IP偽裝和包過濾結(jié)合使用的混淆,所以以下選項(xiàng)作了不同的處理:

  -j MASQ

  -M -S

  -M -L

  在iptables中有幾個(gè)不同的鏈。

#p#

  四、iptables模塊編譯及應(yīng)用

  相信很多人都會(huì)用iptables,我也一直用,并且天天用.特別是看完platinum的>介紹后,覺得有必要深入了解一下它的拓展功能.于是立刻下載,先查看一下它的說明, 其功能很是令人感覺很興奮,例如:comment (備注匹配) ,string(字符串匹配,可以用做內(nèi)容過濾),iprang(ip范圍匹配),time(時(shí)間匹配),ipp2p(點(diǎn)對(duì)點(diǎn)匹配),connlimit(同時(shí)連接個(gè)數(shù)匹配),Nth(第n個(gè)包匹配),geoip(根據(jù)國(guó)家地區(qū)匹配). ipp2p(點(diǎn)對(duì)點(diǎn)匹配), quota(配額匹配),還有很多......之后編譯,幾經(jīng)測(cè)試,在rh7.3 kernel2.4.18-3和rh9.0 kernel2.4.20-8下均成功實(shí)現(xiàn)添加擴(kuò)展功能.以下是介紹其部分功能,及編譯方法.環(huán)境rh9.0 kernel2.4.20-8. root身份.

  一,準(zhǔn)備原碼.

  1. 內(nèi)核原碼:為了減少復(fù)雜性,不編譯所有內(nèi)核和模塊,建議找一個(gè)跟當(dāng)前版本一樣的內(nèi)核原碼,推薦安裝時(shí)光盤的

  a. [root@kindgeorge] uname -r (查看當(dāng)前版本)

  2.4.20-8

  可以cd /usr/src 查看是否有這個(gè)目錄2.4.20-8

  b. 或者[root@kindgeorge]rpm -qa|grep kernel

  kernel-source-2.4.20-8 如果有這個(gè)說明已安裝了.

  如果沒有安裝,可以在RH第二張光盤中拷貝過來或安裝 rpm -ivh kernel-source-2.4.18-3.i386.rpm. 安裝后會(huì)在/usr/src/出現(xiàn)linux-2.4連接和linux-2.4.20-8目錄.

  二.安裝說明

  (一).處理內(nèi)核源碼.

  1. [root@kindgeorge src]# cd /usr/src/linux-2.4

  2. [root@kindgeorge linux-2.4]# vi Makefile,

  VERSION = 2

  PATCHLEVEL = 4

  SUBLEVEL = 20

  EXTRAVERSION = -8custom

  將“EXTRAVERSION = -8custom”改為“EXTRAVERSION = -8”

  即:

  VERSION = 2

  PATCHLEVEL = 4

  SUBLEVEL = 20

  EXTRAVERSION = -8

  為何要修改呢?因?yàn)椴煌姹镜膬?nèi)容是不可以使用的,當(dāng)不修改時(shí),則變成這個(gè)版本(2.4.20-8custom)了,不同時(shí)是這樣出錯(cuò)的:

  /lib/modules/2.4.20-8/kernel/net/ipv4/netfilter/ipt_iprange.o: kernel-module version mismatch (版本錯(cuò)誤)

  /lib/modules/2.4.20-8/kernel/net/ipv4/netfilter/ipt_iprange.o was compiled for kernel version 2.4.20-8custom

  while this kernel is version 2.4.20-8.

  /lib/modules/2.4.20-8/kernel/net/ipv4/netfilter/ipt_iprange.o: insmod /lib/modules/2.4.20-8/kernel/net/ipv4/netfilter/ipt_iprange.o failed

  /lib/modules/2.4.20-8/kernel/net/ipv4/netfilter/ipt_iprange.o: insmod ipt_iprange failed

  3. [root@kindgeorge linux-2.4]# make mrproper

  4. [root@kindgeorge linux-2.4]# make oldconfig

  'make oldconfig' - 采用以前的 .config 文件 (編譯時(shí)十分有用)

  技巧:在make menuconfig時(shí),我們面對(duì)眾多的選項(xiàng)常常不知道該如何選擇,此時(shí)可以把安裝時(shí)的配置文件copy到/usr/src/linux-2.4中:cp /boot/config-2.4.* /usr/src/linux-2.4/.config,再用make menuconfig編譯,它會(huì)讀取.config中原來的配置信息.

  (二).給netfilter打補(bǔ)丁

  解開tar xjvf patch-o-matic-ng-20050331.包后,進(jìn)入該目錄,就會(huì)發(fā)現(xiàn)有很多目錄,其實(shí)每個(gè)目錄對(duì)應(yīng)一個(gè)模塊.

  我們可以這樣來選擇,根據(jù)不同貯倉庫submitted|pending|base|extra,例如:

  KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme base .

  或:KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme extra

  執(zhí)行后,會(huì)測(cè)試是否已經(jīng)應(yīng)用和提示你是否應(yīng)用該模塊,但這樣會(huì)遍歷所有模塊,有很多是用不著的,并且可能和系統(tǒng)版本有沖突,如果不管三七二十一全部選擇的話,一般都會(huì)在編譯和使用時(shí)出錯(cuò).所以推薦用cat /模塊目錄名/info 和cat /模塊目錄名/help 看過后,認(rèn)為適合自己,才選擇.

  我是針對(duì)在上面看過后,有目的的一個(gè)一個(gè)的應(yīng)用的,這樣做:

  KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme string

  執(zhí)行后,會(huì)測(cè)試是否已經(jīng)應(yīng)用和提示你是否應(yīng)用該模塊,按"y"應(yīng)用.然后繼續(xù)下一個(gè)

  KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme comment

  KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme connlimit

  KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme time

  KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme iprange

  KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme geoip

  KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme nth

  KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme ipp2p

  KERNEL_DIR=/usr/src/linux-2.4 IPTABLES_DIR=/usr/src/iptables-1.3.1 ./runme quota

  上面全部完成后,

  cd /usr/src/linux-2.4

  make menuconfig,確認(rèn)[*] Prompt for development and/or incomplete code/drivers要選中

  然后進(jìn)入Networking options

  再進(jìn)入IP:Netfilter Configuration,會(huì)看到增加很多模塊,每個(gè)新增的后面都會(huì)出現(xiàn)"NEW",把其想要的選中為模塊"M"

  保存、退出,至此,給netfilter打補(bǔ)丁工作完成

  (三).編譯netfilter模塊

  1.這里只需要編譯netfilter,不需要編譯整個(gè)內(nèi)核和模塊.這里我只需要ipv4的,ipv6我還沒用到,所以不管了

  cd /usr/src/linux-2.4

  make dep

  make modules SUBDIRS=net/ipv4/netfilter

  2.建立一個(gè)新目錄備份原來模塊,以防萬一:

  mkdir /usr/src/netfilter

  cp /lib/modules/2.4.20-8/kernel/net/ipv4/netfilter/*.o /usr/src/netfilter/

  3.應(yīng)用新的模塊

  cp -f /usr/src/linux-2.4/net/ipv4/netfilter/*.o /lib/modules/2.4.20-8/kernel/net/ipv4/netfilter/

  4.更新你的modules.dep

  depmod -a

  當(dāng)出現(xiàn)這個(gè)時(shí),可以不用理會(huì),因?yàn)閕pchains, ipfwadm模塊都沒用,也可以把出錯(cuò)的刪除.

  depmod: *** Unresolved symbols in /lib/modules/2.4.20-8/kernel/net/ipv4/netfilter/ipchains_core.o

  depmod: *** Unresolved symbols in /lib/modules/2.4.20-8/kernel/net/ipv4/netfilter/ipfwadm_core.o

  (四).編譯安裝新的iptables

  解壓后有目錄iptables-1.3.1

  cd /usr/src/iptables-1.3.1

  export KERNEL_DIR=/usr/src/linux-2.4

  export IPTABLES_DIR=/usr/src/iptables-1.3.1

  make BINDIR=/sbin LIBDIR=/lib MANDIR=/usr/share/man install

  三.安裝完成,測(cè)試及應(yīng)用

  1.內(nèi)容過濾

  iptables -I FORWARD -m string --string "騰訊" -j DROP

  iptables -I FORWARD -s 192.168.3.159 -m string --string" -j DROP

  iptables -I FORWARD -d 192.168.3.0/24 -m string --string "寬頻影院" -j DROP

  iptables -I FORWARD -s 192.168.3.0/24 -m string --string "色情" -j DROP

  iptables -I FORWARD -p tcp --sport 80 -m string --string "廣告" -j DROP

  2.備注應(yīng)用

  iptables -I FORWARD -s 192.168.3.159 -p tcp --dport 80 -j DROP -m comment --comment "the bad guy can not online"

  iptables -I FORWARD -s 192.168.3.159 -m string --string " -j DROP -m comment --comment "denny go to

  3.并發(fā)連接應(yīng)用

  模塊 connlimit 作用:連接限制

  --connlimit-above n 限制為多少個(gè)

  --connlimit-mask n 這組主機(jī)的掩碼,默認(rèn)是connlimit-mask 32 ,即每ip.

  這個(gè)主要可以限制內(nèi)網(wǎng)用戶的網(wǎng)絡(luò)使用,對(duì)服務(wù)器而言則可以限制每個(gè)ip發(fā)起的連接數(shù)...比較實(shí)用

  例如:只允許每個(gè)ip同時(shí)5個(gè)80端口轉(zhuǎn)發(fā),超過的丟棄:

  iptables -I FORWARD -p tcp --syn --dport 80 -m connlimit --connlimit-above 5 -j DROP

  例如:只允許每組ip同時(shí)10個(gè)80端口轉(zhuǎn)發(fā):

  iptables -I FORWARD -p tcp --syn --dport 80 -m connlimit --connlimit-above 10 --connlimit-mask 24 -j DROP

  例如:為了防止DOS太多連接進(jìn)來,那么可以允許最多15個(gè)初始連接,超過的丟棄.

  /sbin/iptables -A INPUT -s 192.186.1.0/24 -p tcp --syn -m connlimit --connlimit-above 15 -j DROP

  /sbin/iptables -A INPUT -s 192.186.1.0/24 -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT

  4.ip范圍應(yīng)用

  iptables -A FORWARD -m iprange --src-range 192.168.1.5-192.168.1.124 -j ACCEPT

  5.每隔N個(gè)匹配

  iptables -t mangle -A PREROUTING -m nth --every 10 -j DROP

  6.封殺BT類P2P軟件

  iptables -A FORWARD -m ipp2p --edk --kazaa --bit -j DROP

  iptables -A FORWARD -p tcp -m ipp2p --ares -j DROP

  iptables -A FORWARD -p udp -m ipp2p --kazaa -j DROP

  7.配額匹配

  iptables -I FORWARD -s 192.168.3.159 -p tcp --dport 80 -m quota --quota 500 -j DROP

  iptables -I FORWARD -s 192.168.3.159 -p tcp --dport 80 -m quota --quota 500 -j ACCEPT

  以上均測(cè)試通過,只有g(shù)eoip的geoipdb.bin沒下載到,所以沒測(cè)試

  在此僅為拋個(gè)磚頭,更多的應(yīng)用,要根據(jù)自己的需要來組合各個(gè)規(guī)則和模塊了.

通過文章的詳細(xì)描述,我們可以清楚的知道iptables的概念和相關(guān)命令、模塊編譯及應(yīng)用,希望對(duì)你們有所幫助!

【編輯推薦】

  1. 在Ubuntu Server 10.10上簡(jiǎn)單配置iptables
  2. Linux安全性和netfilter/iptables
  3. 如何用iptables來防止web服務(wù)器被CC攻擊
  4. 15.5.2 Iptables端口過濾實(shí)例(2)
  5. 15.5.2 Iptables端口過濾實(shí)例(1)
  6. Iptables作網(wǎng)關(guān)時(shí)一種簡(jiǎn)單的NAT使用方式
  7. 自動(dòng)分析黑名單及白名單的iptables腳本
  8. Fedora iptables初始化工作開始設(shè)置規(guī)則

 

責(zé)任編輯:趙鵬 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2013-02-28 13:18:08

2011-03-15 12:47:11

netfilteriptables

2011-07-14 13:50:09

ThreadLocal

2011-03-15 16:35:27

2011-03-17 16:16:50

2009-09-08 13:07:15

介紹Linq to S

2011-06-21 14:42:37

ECMAScriptJavaScript

2009-06-29 14:30:27

JSF技術(shù)

2009-07-07 17:01:09

MyServlet

2009-09-18 09:25:06

LINQ Framew

2009-06-19 14:49:43

Spring框架

2009-12-15 17:05:59

.NET 2003

2009-11-09 17:30:20

WCF元數(shù)據(jù)

2009-12-22 15:02:40

WCF限流

2010-06-23 15:36:23

Linux Bug B

2011-07-12 18:02:00

PHP

2010-02-22 16:16:14

Python語法

2024-06-13 10:05:36

2011-07-04 18:16:42

單元測(cè)試

2009-08-31 08:42:44

思科認(rèn)證思科認(rèn)證CCNA認(rèn)證
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)