詞語(yǔ)解釋
iptables是Linux內(nèi)核提供的一種網(wǎng)絡(luò)包過濾系統(tǒng),它是一個(gè)用于控制網(wǎng)絡(luò)流量的靈活的防火墻工具,可以控制網(wǎng)絡(luò)上的數(shù)據(jù)包流動(dòng)。iptables是一個(gè)完全由用戶空間控制的系統(tǒng),它的功能可以被用戶自定義,可以用來(lái)防止惡意攻擊、攔截惡意軟件、防止外部訪問等。 iptables的工作原理是在數(shù)據(jù)包進(jìn)入網(wǎng)絡(luò)時(shí),檢查數(shù)據(jù)包的源IP地址、目的IP地址、源端口號(hào)、目的端口號(hào)、協(xié)議類型等信息,然后根據(jù)用戶設(shè)置的規(guī)則進(jìn)行過濾,接受或拒絕數(shù)據(jù)包。 iptables的應(yīng)用可以分為兩種:服務(wù)器端和客戶端。服務(wù)器端的應(yīng)用主要是用來(lái)防止惡意攻擊,比如可以設(shè)置規(guī)則來(lái)攔截惡意的數(shù)據(jù)包,從而保護(hù)服務(wù)器安全;客戶端的應(yīng)用主要是用來(lái)防止外部訪問,比如可以設(shè)置規(guī)則來(lái)限制外部的訪問,從而保護(hù)客戶端的安全。 iptables的另一個(gè)應(yīng)用是NAT(Network Address Translation),它可以將內(nèi)部網(wǎng)絡(luò)的IP地址轉(zhuǎn)換為外部網(wǎng)絡(luò)的IP地址,從而實(shí)現(xiàn)內(nèi)部網(wǎng)絡(luò)的訪問外部網(wǎng)絡(luò)的功能。 iptables的另一個(gè)應(yīng)用是防火墻,它可以設(shè)置規(guī)則來(lái)限制外部網(wǎng)絡(luò)的訪問,從而保護(hù)內(nèi)部網(wǎng)絡(luò)的安全。 總之,iptables是一種非常強(qiáng)大的網(wǎng)絡(luò)包過濾系統(tǒng),它可以幫助用戶控制網(wǎng)絡(luò)流量,保護(hù)服務(wù)器和客戶端的安全,并實(shí)現(xiàn)NAT功能。 iptables 是與最新的 2.4.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)核用來(lái)控制信息包過濾處理的規(guī)則集。 iptables 組件是一種工具,也稱為用戶空間(userspace),它使插入、修改和除去信息包過濾表中的規(guī)則變得容易。除非您正在使用 Red Hat Linux 7.1 或更高版本,否則需要下載該工具并安裝使用它。 iptables 可以從 www.netfilter.org 下載。 總覽 用iptables -ADC 來(lái)指定鏈的規(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 舊的鏈名 新的鏈名 用新的鏈名取代舊的鏈名 說明 Iptalbes 是用來(lái)設(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 (修改到來(lái)的包)、OUTPUT(修改路由之前本地的包)、POSTROUTING(修改準(zhǔn)備出去的包)。mangle 這個(gè)表用來(lái)對(duì)指定的包進(jìn)行修改。它有兩個(gè)內(nèi)建規(guī)則:PREROUTING(修改路由之前進(jìn)入的包)和OUTPUT(修改路由之前本地的包)。 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)前命令語(yǔ)法非常簡(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ī)則只詢問第二及以后的片。自那以后由于無(wú)法判斷這種把包的源端口或目標(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ù)都可以通過在前面加上!來(lái)表示相反的意思。 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別名來(lái)代替。 --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ì)來(lái)自以太設(shè)備并進(jìn)入PREROUTING、FORWORD和INPUT鏈的包有效。 limit 這個(gè)模塊匹配標(biāo)志用一個(gè)標(biāo)記桶過濾器一一定速度進(jìn)行匹配,它和LOG目標(biāo)結(jié)合使用來(lái)給出有限的登陸數(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] 匹配那些無(wú)符號(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),用來(lái)和記錄中其他信息區(qū)別。 --log-tcp-sequence 記錄TCP序列號(hào)。如果記錄能被用戶讀取那么這將存在安全隱患。 --log-tcp-options 記錄來(lái)自TCP包頭部的選項(xiàng)。 --log-ip-options 記錄來(lái)自IP包頭部的選項(xiàng)。 MARK 用來(lái)設(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 用來(lái)設(shè)置IP包的首部八位tos。只能用于mangle表。 --set-tos tos 你可以使用一個(gè)數(shù)值型的TOS 值,或者用iptables -j TOS -h 來(lái)查看有效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地址來(lái)發(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è)不同的鏈。
iptables 是與最新的 2.4.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)核用來(lái)控制信息包過濾處理的規(guī)則集。 iptables 組件是一種工具,也稱為用戶空間(userspace),它使插入、修改和除去信息包過濾表中的規(guī)則變得容易。除非您正在使用 Red Hat Linux 7.1 或更高版本,否則需要下載該工具并安裝使用它。 iptables 可以從 www.netfilter.org 下載。 總覽 用iptables -ADC 來(lái)指定鏈的規(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 舊的鏈名 新的鏈名 用新的鏈名取代舊的鏈名 說明 Iptalbes 是用來(lái)設(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 (修改到來(lái)的包)、OUTPUT(修改路由之前本地的包)、POSTROUTING(修改準(zhǔn)備出去的包)。mangle 這個(gè)表用來(lái)對(duì)指定的包進(jìn)行修改。它有兩個(gè)內(nèi)建規(guī)則:PREROUTING(修改路由之前進(jìn)入的包)和OUTPUT(修改路由之前本地的包)。 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)前命令語(yǔ)法非常簡(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ī)則只詢問第二及以后的片。自那以后由于無(wú)法判斷這種把包的源端口或目標(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ù)都可以通過在前面加上!來(lái)表示相反的意思。 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別名來(lái)代替。 --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ì)來(lái)自以太設(shè)備并進(jìn)入PREROUTING、FORWORD和INPUT鏈的包有效。 limit 這個(gè)模塊匹配標(biāo)志用一個(gè)標(biāo)記桶過濾器一一定速度進(jìn)行匹配,它和LOG目標(biāo)結(jié)合使用來(lái)給出有限的登陸數(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] 匹配那些無(wú)符號(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),用來(lái)和記錄中其他信息區(qū)別。 --log-tcp-sequence 記錄TCP序列號(hào)。如果記錄能被用戶讀取那么這將存在安全隱患。 --log-tcp-options 記錄來(lái)自TCP包頭部的選項(xiàng)。 --log-ip-options 記錄來(lái)自IP包頭部的選項(xiàng)。 MARK 用來(lái)設(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 用來(lái)設(shè)置IP包的首部八位tos。只能用于mangle表。 --set-tos tos 你可以使用一個(gè)數(shù)值型的TOS 值,或者用iptables -j TOS -h 來(lái)查看有效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地址來(lái)發(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è)不同的鏈。
抱歉,此頁(yè)面的內(nèi)容受版權(quán)保護(hù),復(fù)制需扣除次數(shù),次數(shù)不足時(shí)需付費(fèi)購(gòu)買。
如需下載請(qǐng)點(diǎn)擊:點(diǎn)擊此處下載
掃碼付費(fèi)即可復(fù)制
CDN | 交換機(jī)集群 | SPF | SC-FDMA | 中國(guó)聯(lián)通廣西分公司 | 多路通信 | 混音 | 三極管 | TAU | PTSP | 光頻分多址 | LAN |
移動(dòng)通信網(wǎng) | 通信人才網(wǎng) | 更新日志 | 團(tuán)隊(duì)博客 | 免責(zé)聲明 | 關(guān)于詞典 | 幫助