詞語解釋
iptables是Linux內(nèi)核提供的一種網(wǎng)絡包過濾系統(tǒng),它是一個用于控制網(wǎng)絡流量的靈活的防火墻工具,可以控制網(wǎng)絡上的數(shù)據(jù)包流動。iptables是一個完全由用戶空間控制的系統(tǒng),它的功能可以被用戶自定義,可以用來防止惡意攻擊、攔截惡意軟件、防止外部訪問等。 iptables的工作原理是在數(shù)據(jù)包進入網(wǎng)絡時,檢查數(shù)據(jù)包的源IP地址、目的IP地址、源端口號、目的端口號、協(xié)議類型等信息,然后根據(jù)用戶設置的規(guī)則進行過濾,接受或拒絕數(shù)據(jù)包。 iptables的應用可以分為兩種:服務器端和客戶端。服務器端的應用主要是用來防止惡意攻擊,比如可以設置規(guī)則來攔截惡意的數(shù)據(jù)包,從而保護服務器安全;客戶端的應用主要是用來防止外部訪問,比如可以設置規(guī)則來限制外部的訪問,從而保護客戶端的安全。 iptables的另一個應用是NAT(Network Address Translation),它可以將內(nèi)部網(wǎng)絡的IP地址轉(zhuǎn)換為外部網(wǎng)絡的IP地址,從而實現(xiàn)內(nèi)部網(wǎng)絡的訪問外部網(wǎng)絡的功能。 iptables的另一個應用是防火墻,它可以設置規(guī)則來限制外部網(wǎng)絡的訪問,從而保護內(nèi)部網(wǎng)絡的安全。 總之,iptables是一種非常強大的網(wǎng)絡包過濾系統(tǒng),它可以幫助用戶控制網(wǎng)絡流量,保護服務器和客戶端的安全,并實現(xiàn)NAT功能。 iptables 是與最新的 2.4.x 版本 Linux 內(nèi)核集成的 IP 信息包過濾系統(tǒng)。如果 Linux 系統(tǒng)連接到因特網(wǎng)或 LAN、服務器或連接 LAN 和因特網(wǎng)的代理服務器, 則該系統(tǒng)有利于在 Linux 系統(tǒng)上更好地控制 IP 信息包過濾和防火墻配置。 netfilter/iptables IP 信息包過濾系統(tǒng)是一種功能強大的工具,可用于添加、編輯和除去規(guī)則,這些規(guī)則是在做信息包過濾決定時,防火墻所遵循和組成的規(guī)則。這些規(guī)則存儲在專用的信息包過濾表中,而這些表集成在 Linux 內(nèi)核中。在信息包過濾表中,規(guī)則被分組放在我們所謂的鏈(chain)中。 雖然 netfilter/iptables IP 信息包過濾系統(tǒng)被稱為單個實體,但它實際上由兩個組件netfilter 和 iptables 組成。 netfilter 組件也稱為內(nèi)核空間(kernelspace),是內(nèi)核的一部分,由一些信息包過濾表組成,這些表包含內(nèi)核用來控制信息包過濾處理的規(guī)則集。 iptables 組件是一種工具,也稱為用戶空間(userspace),它使插入、修改和除去信息包過濾表中的規(guī)則變得容易。除非您正在使用 Red Hat Linux 7.1 或更高版本,否則需要下載該工具并安裝使用它。 iptables 可以從 www.netfilter.org 下載。 總覽 用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 鏈名 [選項] iptables -[NX] chain 用 -NX 指定鏈 iptables -P chain target[options] 指定鏈的默認目標 iptables -E old-chain-name new-chain-name -E 舊的鏈名 新的鏈名 用新的鏈名取代舊的鏈名 說明 Iptalbes 是用來設置、維護和檢查Linux內(nèi)核的IP包過濾規(guī)則的。 可以定義不同的表,每個表都包含幾個內(nèi)部的鏈,也能包含用戶定義的鏈。每個鏈都是一個規(guī)則列表,對對應的包進行匹配:每條規(guī)則指定應當如何處理與之相匹配的包。這被稱作''target''(目標),也可以跳向同一個表內(nèi)的用戶定義的鏈。 TARGETS 防火墻的規(guī)則指定所檢查包的特征,和目標。如果包不匹配,將送往該鏈中下一條規(guī)則檢查;如果匹配,那么下一條規(guī)則由目標值確定.該目標值可以是用戶定義的鏈名,或是某個專用值,如ACCEPT[通過], DROP[刪除], QUEUE[排隊], 或者 RETURN[返回]。 ACCEPT 表示讓這個包通過。DROP表示將這個包丟棄。QUEUE表示把這個包傳遞到用戶空間。RETURN表示停止這條鏈的匹配,到前一個鏈的規(guī)則重新開始。如果到達了一個內(nèi)建的鏈(的末端),或者遇到內(nèi)建鏈的規(guī)則是RETURN,包的命運將由鏈準則指定的目標決定。 TABLES 當前有三個表(哪個表是當前表取決于內(nèi)核配置選項和當前模塊)。 -t table 這個選項指定命令要操作的匹配包的表。如果內(nèi)核被配置為自動加載模塊,這時若模塊沒有加載,(系統(tǒng))將嘗試(為該表)加載適合的模塊。這些表如下:filter,這是默認的表,包含了內(nèi)建的鏈INPUT(處理進入的包)、FORWORD(處理通過的包)和OUTPUT(處理本地生成的包)。nat,這個表被查詢時表示遇到了產(chǎn)生新的連接的包,由三個內(nèi)建的鏈構(gòu)成:PREROUTING (修改到來的包)、OUTPUT(修改路由之前本地的包)、POSTROUTING(修改準備出去的包)。mangle 這個表用來對指定的包進行修改。它有兩個內(nèi)建規(guī)則:PREROUTING(修改路由之前進入的包)和OUTPUT(修改路由之前本地的包)。 OPTIONS 這些可被iptables識別的選項可以區(qū)分不同的種類。 COMMANDS 這些選項指定執(zhí)行明確的動作:若指令行下沒有其他規(guī)定,該行只能指定一個選項.對于長格式的命令和選項名,所用字母長度只要保證iptables能從其他選項中區(qū)分出該指令就行了。 -A -append 在所選擇的鏈末添加一條或更多規(guī)則。當源(地址)或者/與 目的(地址)轉(zhuǎn)換為多個地址時,這條規(guī)則會加到所有可能的地址(組合)后面。 -D -delete 從所選鏈中刪除一條或更多規(guī)則。這條命令可以有兩種方法:可以把被刪除規(guī)則指定為鏈中的序號(第一條序號為1),或者指定為要匹配的規(guī)則。 -R -replace 從選中的鏈中取代一條規(guī)則。如果源(地址)或者/與 目的(地址)被轉(zhuǎn)換為多地址,該命令會失敗。規(guī)則序號從1開始。 -I -insert 根據(jù)給出的規(guī)則序號向所選鏈中插入一條或更多規(guī)則。所以,如果規(guī)則序號為1,規(guī)則會被插入鏈的頭部。這也是不指定規(guī)則序號時的默認方式。 -L -list 顯示所選鏈的所有規(guī)則。如果沒有選擇鏈,所有鏈將被顯示。也可以和z選項一起使用,這時鏈會被自動列出和歸零。精確輸出受其它所給參數(shù)影響。 -F -flush 清空所選鏈。這等于把所有規(guī)則一個個的刪除。 --Z -zero 把所有鏈的包及字節(jié)的計數(shù)器清空。它可以和 -L配合使用,在清空前察看計數(shù)器,請參見前文。 -N -new-chain 根據(jù)給出的名稱建立一個新的用戶定義鏈。這必須保證沒有同名的鏈存在。 -X -delete-chain 刪除指定的用戶自定義鏈。這個鏈必須沒有被引用,如果被引用,在刪除之前你必須刪除或者替換與之有關的規(guī)則。如果沒有給出參數(shù),這條命令將試著刪除每個非內(nèi)建的鏈。 -P -policy 設置鏈的目標規(guī)則。 -E -rename-chain 根據(jù)用戶給出的名字對指定鏈進行重命名,這僅僅是修飾,對整個表的結(jié)構(gòu)沒有影響。TARGETS參數(shù)給出一個合法的目標。只有非用戶自定義鏈可以使用規(guī)則,而且內(nèi)建鏈和用戶自定義鏈都不能是規(guī)則的目標。 -h Help. 幫助。給出當前命令語法非常簡短的說明。 PARAMETERS 參數(shù) 以下參數(shù)構(gòu)成規(guī)則詳述,如用于add、delete、replace、append 和 check命令。 -p -protocal [!]protocol 規(guī)則或者包檢查(待檢查包)的協(xié)議。指定協(xié)議可以是tcp、udp、icmp中的一個或者全部,也可以是數(shù)值,代表這些協(xié)議中的某一個。當然也可以使用在/etc/protocols中定義的協(xié)議名。在協(xié)議名前加上"!"表示相反的規(guī)則。數(shù)字0相當于所有all。Protocol all會匹配所有協(xié)議,而且這是缺省時的選項。在和check命令結(jié)合時,all可以不被使用。 -s -source [!] address[/mask] 指定源地址,可以是主機名、網(wǎng)絡名和清楚的IP地址。mask說明可以是網(wǎng)絡掩碼或清楚的數(shù)字,在網(wǎng)絡掩碼的左邊指定網(wǎng)絡掩碼左邊"1"的個數(shù),因此,mask值為24等于255.255.255.0。在指定地址前加上"!"說明指定了相反的地址段。標志 --src 是這個選項的簡寫。 -d --destination [!] address[/mask] 指定目標地址,要獲取詳細說明請參見 -s標志的說明。標志 --dst 是這個選項的簡寫。 -j --jump target -j 目標跳轉(zhuǎn) 指定規(guī)則的目標;也就是說,如果包匹配應當做什么。目標可以是用戶自定義鏈(不是這條規(guī)則所在的),某個會立即決定包的命運的專用內(nèi)建目標,或者一個擴展(參見下面的EXTENSIONS)。如果規(guī)則的這個選項被忽略,那么匹配的過程不會對包產(chǎn)生影響,不過規(guī)則的計數(shù)器會增加。 -i -in-interface [!] [name] i -進入的(網(wǎng)絡)接口 [!][名稱] 這是包經(jīng)由該接口接收的可選的入口名稱,包通過該接口接收(在鏈INPUT、FORWORD和PREROUTING中進入的包)。當在接口名前使用"!"說明后,指的是相反的名稱。如果接口名后面加上"+",則所有以此接口名開頭的接口都會被匹配。如果這個選項被忽略,會假設為"+",那么將匹配任意接口。 -o --out-interface [!][name] -o --輸出接口[名稱] 這是包經(jīng)由該接口送出的可選的出口名稱,包通過該口輸出(在鏈FORWARD、OUTPUT和POSTROUTING中送出的包)。當在接口名前使用"!"說明后,指的是相反的名稱。如果接口名后面加上"+",則所有以此接口名開頭的接口都會被匹配。如果這個選項被忽略,會假設為"+",那么將匹配所有任意接口。 [!] -f, --fragment [!] -f --分片 這意味著在分片的包中,規(guī)則只詢問第二及以后的片。自那以后由于無法判斷這種把包的源端口或目標端口(或者是ICMP類型的),這類包將不能匹配任何指定對他們進行匹配的規(guī)則。如果"!"說明用在了"-f"標志之前,表示相反的意思。 OTHER OPTIONS 其他選項 還可以指定下列附加選項: -v --verbose -v --詳細 詳細輸出。這個選項讓list命令顯示接口地址、規(guī)則選項(如果有)和TOS(Type of Service)掩碼。包和字節(jié)計數(shù)器也將被顯示,分別用K、M、G(前綴)表示1000、1,000,000和1,000,000,000倍(不過請參看-x標志改變它),對于添加,插入,刪除和替換命令,這會使一個或多個規(guī)則的相關詳細信息被打印。 -n --numeric -n --數(shù)字 數(shù)字輸出。IP地址和端口會以數(shù)字的形式打印。默認情況下,程序試顯示主機名、網(wǎng)絡名或者服務(只要可用)。 -x -exact -x -精確 擴展數(shù)字。顯示包和字節(jié)計數(shù)器的精確值,代替用K,M,G表示的約數(shù)。這個選項僅能用于 -L 命令。 --line-numbers 當列表顯示規(guī)則時,在每個規(guī)則的前面加上行號,與該規(guī)則在鏈中的位置相對應。 MATCH EXTENSIONS 對應的擴展 iptables能夠使用一些與模塊匹配的擴展包。以下就是含于基本包內(nèi)的擴展包,而且他們大多數(shù)都可以通過在前面加上!來表示相反的意思。 tcp 當 --protocol tcp 被指定,且其他匹配的擴展未被指定時,這些擴展被裝載。它提供以下選項: --source-port [!] [port[:port]] 源端口或端口范圍指定。這可以是服務名或端口號。使用格式端口:端口也可以指定包含的(端口)范圍。如果首端口號被忽略,默認是"0",如果末端口號被忽略,默認是"65535",如果第二個端口號大于第一個,那么它們會被交換。這個選項可以使用 --sport的別名。 --destionation-port [!] [port:[port]] 目標端口或端口范圍指定。這個選項可以使用 --dport別名來代替。 --tcp-flags [!] mask comp 匹配指定的TCP標記。第一個參數(shù)是我們要檢查的標記,一個用逗號分開的列表,第二個參數(shù)是用逗號分開的標記表,是必須被設置的。標記如下:SYN ACK FIN RST URG PSH ALL NONE。因此這條命令:iptables -A FORWARD -p tcp --tcp-flags SYN, ACK, FIN, RST SYN只匹配那些SYN標記被設置而ACK、FIN和RST標記沒有設置的包。 [!] --syn 只匹配那些設置了SYN位而清除了ACK和FIN位的TCP包。這些包用于TCP連接初始化時發(fā)出請求;例如,大量的這種包進入一個接口發(fā)生堵塞時會阻止進入的TCP連接,而出去的TCP連接不會受到影響。這等于 --tcp-flags SYN, RST, ACK SYN。如果"--syn"前面有"!"標記,表示相反的意思。 --tcp-option [!] number 匹配設置了TCP選項的。 udp 當protocol udp 被指定,且其他匹配的擴展未被指定時,這些擴展被裝載,它提供以下選項: --source-port [!] [port:[port]] 源端口或端口范圍指定。詳見 TCP擴展的--source-port選項說明。 --destination-port [!] [port:[port]] 目標端口或端口范圍指定。詳見 TCP擴展的--destination-port選項說明。 icmp 當protocol icmp被指定,且其他匹配的擴展未被指定時,該擴展被裝載。它提供以下選項: --icmp-type [!] typename 這個選項允許指定ICMP類型,可以是一個數(shù)值型的ICMP類型,或者是某個由命令iptables -p icmp -h所顯示的ICMP類型名。 mac --mac-source [!] address 匹配物理地址。必須是XX:XX:XX:XX:XX這樣的格式。注意它只對來自以太設備并進入PREROUTING、FORWORD和INPUT鏈的包有效。 limit 這個模塊匹配標志用一個標記桶過濾器一一定速度進行匹配,它和LOG目標結(jié)合使用來給出有限的登陸數(shù).當達到這個極限值時,使用這個擴展包的規(guī)則將進行匹配.(除非使用了"!"標記) --limit rate 最大平均匹配速率:可賦的值有''/second'', ''/minute'', ''/hour'', or ''/day''這樣的單位,默認是3/hour。 --limit-burst number 待匹配包初始個數(shù)的最大值:若前面指定的極限還沒達到這個數(shù)值,則概數(shù)字加1.默認值為5 multiport 這個模塊匹配一組源端口或目標端口,最多可以指定15個端口。只能和-p tcp 或者 -p udp 連著使用。 --source-port [port[, port]] 如果源端口是其中一個給定端口則匹配 --destination-port [port[, port]] 如果目標端口是其中一個給定端口則匹配 --port [port[, port]] 若源端口和目的端口相等并與某個給定端口相等,則匹配。 mark 這個模塊和與netfilter過濾器標記字段匹配(就可以在下面設置為使用MARK標記)。 --mark value [/mask] 匹配那些無符號標記值的包(如果指定mask,在比較之前會給掩碼加上邏輯的標記)。 owner 此模塊試為本地生成包匹配包創(chuàng)建者的不同特征。只能用于OUTPUT鏈,而且即使這樣一些包(如ICMP ping應答)還可能沒有所有者,因此永遠不會匹配。 --uid-owner userid 如果給出有效的user id,那么匹配它的進程產(chǎn)生的包。 --gid-owner groupid 如果給出有效的group id,那么匹配它的進程產(chǎn)生的包。 --sid-owner seessionid 根據(jù)給出的會話組匹配該進程產(chǎn)生的包。 state 此模塊,當與連接跟蹤結(jié)合使用時,允許訪問包的連接跟蹤狀態(tài)。 --state state 這里state是一個逗號分割的匹配連接狀態(tài)列表?赡艿臓顟B(tài)是:INVALID表示包是未知連接,ESTABLISHED表示是雙向傳送的連接,NEW表示包為新的連接,否則是非雙向傳送的,而RELATED表示包由新連接開始,但是和一個已存在的連接在一起,如FTP數(shù)據(jù)傳送,或者一個ICMP錯誤。 unclean 此模塊沒有可選項,不過它試著匹配那些奇怪的、不常見的包。處在實驗中。 tos 此模塊匹配IP包首部的8位tos(服務類型)字段(也就是說,包含在優(yōu)先位中)。 --tos tos 這個參數(shù)可以是一個標準名稱,(用iptables -m tos -h 察看該列表),或者數(shù)值。 TARGET EXTENSIONS iptables可以使用擴展目標模塊:以下都包含在標準版中。 LOG 為匹配的包開啟內(nèi)核記錄。當在規(guī)則中設置了這一選項后,linux內(nèi)核會通過printk()打印一些關于全部匹配包的信息(諸如IP包頭字段等)。 --log-level level 記錄級別(數(shù)字或參看 syslog.conf(5))。 --log-prefix prefix 在紀錄信息前加上特定的前綴:最多14個字母長,用來和記錄中其他信息區(qū)別。 --log-tcp-sequence 記錄TCP序列號。如果記錄能被用戶讀取那么這將存在安全隱患。 --log-tcp-options 記錄來自TCP包頭部的選項。 --log-ip-options 記錄來自IP包頭部的選項。 MARK 用來設置包的netfilter標記值。只適用于mangle表。 --set-mark mark REJECT 作為對匹配的包的響應,返回一個錯誤的包:其他情況下和DROP相同。 此目標只適用于INPUT、FORWARD和OUTPUT鏈,和調(diào)用這些鏈的用戶自定義鏈。這幾個選項控制返回的錯誤包的特性: --reject-with type Type可以是icmp-net-unreachable、icmp-host-unreachable、icmp-port-nreachable、icmp-proto-unreachable、 icmp-net-prohibited 或者 icmp-host-prohibited,該類型會返回相應的ICMP錯誤信息(默認是port-unreachable)。選項 echo-reply也是允許的;它只能用于指定ICMP ping包的規(guī)則中,生成ping的回應。最后,選項tcp-reset可以用于在INPUT鏈中,或自INPUT鏈調(diào)用的規(guī)則,只匹配TCP協(xié)議:將回應一個TCP RST包。 TOS 用來設置IP包的首部八位tos。只能用于mangle表。 --set-tos tos 你可以使用一個數(shù)值型的TOS 值,或者用iptables -j TOS -h 來查看有效TOS名列表。 MIRROR 這是一個試驗示范目標,可用于轉(zhuǎn)換IP首部字段中的源地址和目標地址,再傳送該包,并只適用于INPUT、FORWARD和OUTPUT鏈,以及只調(diào)用它們的用戶自定義鏈。 SNAT 這個目標只適用于nat表的POSTROUTING鏈。它規(guī)定修改包的源地址(此連接以后所有的包都會被影響),停止對規(guī)則的檢查,它包含選項: --to-source [-][:port-port] 可以指定一個單一的新的IP地址,一個IP地址范圍,也可以附加一個端口范圍(只能在指定-p tcp 或者-p udp的規(guī)則里)。如果未指定端口范圍,源端口中512以下的(端口)會被安置為其他的512以下的端口;512到1024之間的端口會被安置為1024以下的,其他端口會被安置為1024或以上。如果可能,端口不會被修改。 --to-destiontion [-][:port-port] 可以指定一個單一的新的IP地址,一個IP地址范圍,也可以附加一個端口范圍(只能在指定-p tcp 或者-p udp的規(guī)則里)。如果未指定端口范圍,目標端口不會被修改。 MASQUERADE 只用于nat表的POSTROUTING鏈。只能用于動態(tài)獲取IP(撥號)連接:如果你擁有靜態(tài)IP地址,你要用SNAT。偽裝相當于給包發(fā)出時所經(jīng)過接口的IP地址設置一個映像,當接口關閉連接會終止。這是因為當下一次撥號時未必是相同的接口地址(以后所有建立的連接都將關閉)。它有一個選項: --to-ports [-port>] 指定使用的源端口范圍,覆蓋默認的SNAT源地址選擇(見上面)。這個選項只適用于指定了-p tcp或者-p udp的規(guī)則。 REDIRECT 只適用于nat表的PREROUTING和OUTPUT鏈,和只調(diào)用它們的用戶自定義鏈。它修改包的目標IP地址來發(fā)送包到機器自身(本地生成的包被安置為地址127.0.0.1)。它包含一個選項: --to-ports [] 指定使用的目的端口或端口范圍:不指定的話,目標端口不會被修改。只能用于指定了-p tcp 或 -p udp的規(guī)則。 DIAGNOSTICS 診斷 不同的錯誤信息會打印成標準錯誤:退出代碼0表示正確。類似于不對的或者濫用的命令行參數(shù)錯誤會返回錯誤代碼2,其他錯誤返回代碼為1。 BUGS 臭蟲 Check is not implemented (yet). 檢查還未完成。 COMPATIBILITY WITH IPCHAINS 與ipchains的兼容性 iptables和Rusty Russell的ipchains非常相似。主要區(qū)別是INPUT 鏈只用于進入本地主機的包,而OUTPUT只用于自本地主機生成的包。因此每個包只經(jīng)過三個鏈的一個;以前轉(zhuǎn)發(fā)的包會經(jīng)過所有三個鏈。其他主要區(qū)別是 -i 引用進入接口;-o引用輸出接口,兩者都適用于進入FORWARD鏈的包。當和可選擴展模塊一起使用默認過濾器表時,iptables是一個純粹的包過濾器。這能大大減少以前對IP偽裝和包過濾結(jié)合使用的混淆,所以以下選項作了不同的處理: -j MASQ -M -S -M -L 在iptables中有幾個不同的鏈。
iptables 是與最新的 2.4.x 版本 Linux 內(nèi)核集成的 IP 信息包過濾系統(tǒng)。如果 Linux 系統(tǒng)連接到因特網(wǎng)或 LAN、服務器或連接 LAN 和因特網(wǎng)的代理服務器, 則該系統(tǒng)有利于在 Linux 系統(tǒng)上更好地控制 IP 信息包過濾和防火墻配置。 netfilter/iptables IP 信息包過濾系統(tǒng)是一種功能強大的工具,可用于添加、編輯和除去規(guī)則,這些規(guī)則是在做信息包過濾決定時,防火墻所遵循和組成的規(guī)則。這些規(guī)則存儲在專用的信息包過濾表中,而這些表集成在 Linux 內(nèi)核中。在信息包過濾表中,規(guī)則被分組放在我們所謂的鏈(chain)中。 雖然 netfilter/iptables IP 信息包過濾系統(tǒng)被稱為單個實體,但它實際上由兩個組件netfilter 和 iptables 組成。 netfilter 組件也稱為內(nèi)核空間(kernelspace),是內(nèi)核的一部分,由一些信息包過濾表組成,這些表包含內(nèi)核用來控制信息包過濾處理的規(guī)則集。 iptables 組件是一種工具,也稱為用戶空間(userspace),它使插入、修改和除去信息包過濾表中的規(guī)則變得容易。除非您正在使用 Red Hat Linux 7.1 或更高版本,否則需要下載該工具并安裝使用它。 iptables 可以從 www.netfilter.org 下載。 總覽 用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 鏈名 [選項] iptables -[NX] chain 用 -NX 指定鏈 iptables -P chain target[options] 指定鏈的默認目標 iptables -E old-chain-name new-chain-name -E 舊的鏈名 新的鏈名 用新的鏈名取代舊的鏈名 說明 Iptalbes 是用來設置、維護和檢查Linux內(nèi)核的IP包過濾規(guī)則的。 可以定義不同的表,每個表都包含幾個內(nèi)部的鏈,也能包含用戶定義的鏈。每個鏈都是一個規(guī)則列表,對對應的包進行匹配:每條規(guī)則指定應當如何處理與之相匹配的包。這被稱作''target''(目標),也可以跳向同一個表內(nèi)的用戶定義的鏈。 TARGETS 防火墻的規(guī)則指定所檢查包的特征,和目標。如果包不匹配,將送往該鏈中下一條規(guī)則檢查;如果匹配,那么下一條規(guī)則由目標值確定.該目標值可以是用戶定義的鏈名,或是某個專用值,如ACCEPT[通過], DROP[刪除], QUEUE[排隊], 或者 RETURN[返回]。 ACCEPT 表示讓這個包通過。DROP表示將這個包丟棄。QUEUE表示把這個包傳遞到用戶空間。RETURN表示停止這條鏈的匹配,到前一個鏈的規(guī)則重新開始。如果到達了一個內(nèi)建的鏈(的末端),或者遇到內(nèi)建鏈的規(guī)則是RETURN,包的命運將由鏈準則指定的目標決定。 TABLES 當前有三個表(哪個表是當前表取決于內(nèi)核配置選項和當前模塊)。 -t table 這個選項指定命令要操作的匹配包的表。如果內(nèi)核被配置為自動加載模塊,這時若模塊沒有加載,(系統(tǒng))將嘗試(為該表)加載適合的模塊。這些表如下:filter,這是默認的表,包含了內(nèi)建的鏈INPUT(處理進入的包)、FORWORD(處理通過的包)和OUTPUT(處理本地生成的包)。nat,這個表被查詢時表示遇到了產(chǎn)生新的連接的包,由三個內(nèi)建的鏈構(gòu)成:PREROUTING (修改到來的包)、OUTPUT(修改路由之前本地的包)、POSTROUTING(修改準備出去的包)。mangle 這個表用來對指定的包進行修改。它有兩個內(nèi)建規(guī)則:PREROUTING(修改路由之前進入的包)和OUTPUT(修改路由之前本地的包)。 OPTIONS 這些可被iptables識別的選項可以區(qū)分不同的種類。 COMMANDS 這些選項指定執(zhí)行明確的動作:若指令行下沒有其他規(guī)定,該行只能指定一個選項.對于長格式的命令和選項名,所用字母長度只要保證iptables能從其他選項中區(qū)分出該指令就行了。 -A -append 在所選擇的鏈末添加一條或更多規(guī)則。當源(地址)或者/與 目的(地址)轉(zhuǎn)換為多個地址時,這條規(guī)則會加到所有可能的地址(組合)后面。 -D -delete 從所選鏈中刪除一條或更多規(guī)則。這條命令可以有兩種方法:可以把被刪除規(guī)則指定為鏈中的序號(第一條序號為1),或者指定為要匹配的規(guī)則。 -R -replace 從選中的鏈中取代一條規(guī)則。如果源(地址)或者/與 目的(地址)被轉(zhuǎn)換為多地址,該命令會失敗。規(guī)則序號從1開始。 -I -insert 根據(jù)給出的規(guī)則序號向所選鏈中插入一條或更多規(guī)則。所以,如果規(guī)則序號為1,規(guī)則會被插入鏈的頭部。這也是不指定規(guī)則序號時的默認方式。 -L -list 顯示所選鏈的所有規(guī)則。如果沒有選擇鏈,所有鏈將被顯示。也可以和z選項一起使用,這時鏈會被自動列出和歸零。精確輸出受其它所給參數(shù)影響。 -F -flush 清空所選鏈。這等于把所有規(guī)則一個個的刪除。 --Z -zero 把所有鏈的包及字節(jié)的計數(shù)器清空。它可以和 -L配合使用,在清空前察看計數(shù)器,請參見前文。 -N -new-chain 根據(jù)給出的名稱建立一個新的用戶定義鏈。這必須保證沒有同名的鏈存在。 -X -delete-chain 刪除指定的用戶自定義鏈。這個鏈必須沒有被引用,如果被引用,在刪除之前你必須刪除或者替換與之有關的規(guī)則。如果沒有給出參數(shù),這條命令將試著刪除每個非內(nèi)建的鏈。 -P -policy 設置鏈的目標規(guī)則。 -E -rename-chain 根據(jù)用戶給出的名字對指定鏈進行重命名,這僅僅是修飾,對整個表的結(jié)構(gòu)沒有影響。TARGETS參數(shù)給出一個合法的目標。只有非用戶自定義鏈可以使用規(guī)則,而且內(nèi)建鏈和用戶自定義鏈都不能是規(guī)則的目標。 -h Help. 幫助。給出當前命令語法非常簡短的說明。 PARAMETERS 參數(shù) 以下參數(shù)構(gòu)成規(guī)則詳述,如用于add、delete、replace、append 和 check命令。 -p -protocal [!]protocol 規(guī)則或者包檢查(待檢查包)的協(xié)議。指定協(xié)議可以是tcp、udp、icmp中的一個或者全部,也可以是數(shù)值,代表這些協(xié)議中的某一個。當然也可以使用在/etc/protocols中定義的協(xié)議名。在協(xié)議名前加上"!"表示相反的規(guī)則。數(shù)字0相當于所有all。Protocol all會匹配所有協(xié)議,而且這是缺省時的選項。在和check命令結(jié)合時,all可以不被使用。 -s -source [!] address[/mask] 指定源地址,可以是主機名、網(wǎng)絡名和清楚的IP地址。mask說明可以是網(wǎng)絡掩碼或清楚的數(shù)字,在網(wǎng)絡掩碼的左邊指定網(wǎng)絡掩碼左邊"1"的個數(shù),因此,mask值為24等于255.255.255.0。在指定地址前加上"!"說明指定了相反的地址段。標志 --src 是這個選項的簡寫。 -d --destination [!] address[/mask] 指定目標地址,要獲取詳細說明請參見 -s標志的說明。標志 --dst 是這個選項的簡寫。 -j --jump target -j 目標跳轉(zhuǎn) 指定規(guī)則的目標;也就是說,如果包匹配應當做什么。目標可以是用戶自定義鏈(不是這條規(guī)則所在的),某個會立即決定包的命運的專用內(nèi)建目標,或者一個擴展(參見下面的EXTENSIONS)。如果規(guī)則的這個選項被忽略,那么匹配的過程不會對包產(chǎn)生影響,不過規(guī)則的計數(shù)器會增加。 -i -in-interface [!] [name] i -進入的(網(wǎng)絡)接口 [!][名稱] 這是包經(jīng)由該接口接收的可選的入口名稱,包通過該接口接收(在鏈INPUT、FORWORD和PREROUTING中進入的包)。當在接口名前使用"!"說明后,指的是相反的名稱。如果接口名后面加上"+",則所有以此接口名開頭的接口都會被匹配。如果這個選項被忽略,會假設為"+",那么將匹配任意接口。 -o --out-interface [!][name] -o --輸出接口[名稱] 這是包經(jīng)由該接口送出的可選的出口名稱,包通過該口輸出(在鏈FORWARD、OUTPUT和POSTROUTING中送出的包)。當在接口名前使用"!"說明后,指的是相反的名稱。如果接口名后面加上"+",則所有以此接口名開頭的接口都會被匹配。如果這個選項被忽略,會假設為"+",那么將匹配所有任意接口。 [!] -f, --fragment [!] -f --分片 這意味著在分片的包中,規(guī)則只詢問第二及以后的片。自那以后由于無法判斷這種把包的源端口或目標端口(或者是ICMP類型的),這類包將不能匹配任何指定對他們進行匹配的規(guī)則。如果"!"說明用在了"-f"標志之前,表示相反的意思。 OTHER OPTIONS 其他選項 還可以指定下列附加選項: -v --verbose -v --詳細 詳細輸出。這個選項讓list命令顯示接口地址、規(guī)則選項(如果有)和TOS(Type of Service)掩碼。包和字節(jié)計數(shù)器也將被顯示,分別用K、M、G(前綴)表示1000、1,000,000和1,000,000,000倍(不過請參看-x標志改變它),對于添加,插入,刪除和替換命令,這會使一個或多個規(guī)則的相關詳細信息被打印。 -n --numeric -n --數(shù)字 數(shù)字輸出。IP地址和端口會以數(shù)字的形式打印。默認情況下,程序試顯示主機名、網(wǎng)絡名或者服務(只要可用)。 -x -exact -x -精確 擴展數(shù)字。顯示包和字節(jié)計數(shù)器的精確值,代替用K,M,G表示的約數(shù)。這個選項僅能用于 -L 命令。 --line-numbers 當列表顯示規(guī)則時,在每個規(guī)則的前面加上行號,與該規(guī)則在鏈中的位置相對應。 MATCH EXTENSIONS 對應的擴展 iptables能夠使用一些與模塊匹配的擴展包。以下就是含于基本包內(nèi)的擴展包,而且他們大多數(shù)都可以通過在前面加上!來表示相反的意思。 tcp 當 --protocol tcp 被指定,且其他匹配的擴展未被指定時,這些擴展被裝載。它提供以下選項: --source-port [!] [port[:port]] 源端口或端口范圍指定。這可以是服務名或端口號。使用格式端口:端口也可以指定包含的(端口)范圍。如果首端口號被忽略,默認是"0",如果末端口號被忽略,默認是"65535",如果第二個端口號大于第一個,那么它們會被交換。這個選項可以使用 --sport的別名。 --destionation-port [!] [port:[port]] 目標端口或端口范圍指定。這個選項可以使用 --dport別名來代替。 --tcp-flags [!] mask comp 匹配指定的TCP標記。第一個參數(shù)是我們要檢查的標記,一個用逗號分開的列表,第二個參數(shù)是用逗號分開的標記表,是必須被設置的。標記如下:SYN ACK FIN RST URG PSH ALL NONE。因此這條命令:iptables -A FORWARD -p tcp --tcp-flags SYN, ACK, FIN, RST SYN只匹配那些SYN標記被設置而ACK、FIN和RST標記沒有設置的包。 [!] --syn 只匹配那些設置了SYN位而清除了ACK和FIN位的TCP包。這些包用于TCP連接初始化時發(fā)出請求;例如,大量的這種包進入一個接口發(fā)生堵塞時會阻止進入的TCP連接,而出去的TCP連接不會受到影響。這等于 --tcp-flags SYN, RST, ACK SYN。如果"--syn"前面有"!"標記,表示相反的意思。 --tcp-option [!] number 匹配設置了TCP選項的。 udp 當protocol udp 被指定,且其他匹配的擴展未被指定時,這些擴展被裝載,它提供以下選項: --source-port [!] [port:[port]] 源端口或端口范圍指定。詳見 TCP擴展的--source-port選項說明。 --destination-port [!] [port:[port]] 目標端口或端口范圍指定。詳見 TCP擴展的--destination-port選項說明。 icmp 當protocol icmp被指定,且其他匹配的擴展未被指定時,該擴展被裝載。它提供以下選項: --icmp-type [!] typename 這個選項允許指定ICMP類型,可以是一個數(shù)值型的ICMP類型,或者是某個由命令iptables -p icmp -h所顯示的ICMP類型名。 mac --mac-source [!] address 匹配物理地址。必須是XX:XX:XX:XX:XX這樣的格式。注意它只對來自以太設備并進入PREROUTING、FORWORD和INPUT鏈的包有效。 limit 這個模塊匹配標志用一個標記桶過濾器一一定速度進行匹配,它和LOG目標結(jié)合使用來給出有限的登陸數(shù).當達到這個極限值時,使用這個擴展包的規(guī)則將進行匹配.(除非使用了"!"標記) --limit rate 最大平均匹配速率:可賦的值有''/second'', ''/minute'', ''/hour'', or ''/day''這樣的單位,默認是3/hour。 --limit-burst number 待匹配包初始個數(shù)的最大值:若前面指定的極限還沒達到這個數(shù)值,則概數(shù)字加1.默認值為5 multiport 這個模塊匹配一組源端口或目標端口,最多可以指定15個端口。只能和-p tcp 或者 -p udp 連著使用。 --source-port [port[, port]] 如果源端口是其中一個給定端口則匹配 --destination-port [port[, port]] 如果目標端口是其中一個給定端口則匹配 --port [port[, port]] 若源端口和目的端口相等并與某個給定端口相等,則匹配。 mark 這個模塊和與netfilter過濾器標記字段匹配(就可以在下面設置為使用MARK標記)。 --mark value [/mask] 匹配那些無符號標記值的包(如果指定mask,在比較之前會給掩碼加上邏輯的標記)。 owner 此模塊試為本地生成包匹配包創(chuàng)建者的不同特征。只能用于OUTPUT鏈,而且即使這樣一些包(如ICMP ping應答)還可能沒有所有者,因此永遠不會匹配。 --uid-owner userid 如果給出有效的user id,那么匹配它的進程產(chǎn)生的包。 --gid-owner groupid 如果給出有效的group id,那么匹配它的進程產(chǎn)生的包。 --sid-owner seessionid 根據(jù)給出的會話組匹配該進程產(chǎn)生的包。 state 此模塊,當與連接跟蹤結(jié)合使用時,允許訪問包的連接跟蹤狀態(tài)。 --state state 這里state是一個逗號分割的匹配連接狀態(tài)列表?赡艿臓顟B(tài)是:INVALID表示包是未知連接,ESTABLISHED表示是雙向傳送的連接,NEW表示包為新的連接,否則是非雙向傳送的,而RELATED表示包由新連接開始,但是和一個已存在的連接在一起,如FTP數(shù)據(jù)傳送,或者一個ICMP錯誤。 unclean 此模塊沒有可選項,不過它試著匹配那些奇怪的、不常見的包。處在實驗中。 tos 此模塊匹配IP包首部的8位tos(服務類型)字段(也就是說,包含在優(yōu)先位中)。 --tos tos 這個參數(shù)可以是一個標準名稱,(用iptables -m tos -h 察看該列表),或者數(shù)值。 TARGET EXTENSIONS iptables可以使用擴展目標模塊:以下都包含在標準版中。 LOG 為匹配的包開啟內(nèi)核記錄。當在規(guī)則中設置了這一選項后,linux內(nèi)核會通過printk()打印一些關于全部匹配包的信息(諸如IP包頭字段等)。 --log-level level 記錄級別(數(shù)字或參看 syslog.conf(5))。 --log-prefix prefix 在紀錄信息前加上特定的前綴:最多14個字母長,用來和記錄中其他信息區(qū)別。 --log-tcp-sequence 記錄TCP序列號。如果記錄能被用戶讀取那么這將存在安全隱患。 --log-tcp-options 記錄來自TCP包頭部的選項。 --log-ip-options 記錄來自IP包頭部的選項。 MARK 用來設置包的netfilter標記值。只適用于mangle表。 --set-mark mark REJECT 作為對匹配的包的響應,返回一個錯誤的包:其他情況下和DROP相同。 此目標只適用于INPUT、FORWARD和OUTPUT鏈,和調(diào)用這些鏈的用戶自定義鏈。這幾個選項控制返回的錯誤包的特性: --reject-with type Type可以是icmp-net-unreachable、icmp-host-unreachable、icmp-port-nreachable、icmp-proto-unreachable、 icmp-net-prohibited 或者 icmp-host-prohibited,該類型會返回相應的ICMP錯誤信息(默認是port-unreachable)。選項 echo-reply也是允許的;它只能用于指定ICMP ping包的規(guī)則中,生成ping的回應。最后,選項tcp-reset可以用于在INPUT鏈中,或自INPUT鏈調(diào)用的規(guī)則,只匹配TCP協(xié)議:將回應一個TCP RST包。 TOS 用來設置IP包的首部八位tos。只能用于mangle表。 --set-tos tos 你可以使用一個數(shù)值型的TOS 值,或者用iptables -j TOS -h 來查看有效TOS名列表。 MIRROR 這是一個試驗示范目標,可用于轉(zhuǎn)換IP首部字段中的源地址和目標地址,再傳送該包,并只適用于INPUT、FORWARD和OUTPUT鏈,以及只調(diào)用它們的用戶自定義鏈。 SNAT 這個目標只適用于nat表的POSTROUTING鏈。它規(guī)定修改包的源地址(此連接以后所有的包都會被影響),停止對規(guī)則的檢查,它包含選項: --to-source [-][:port-port] 可以指定一個單一的新的IP地址,一個IP地址范圍,也可以附加一個端口范圍(只能在指定-p tcp 或者-p udp的規(guī)則里)。如果未指定端口范圍,源端口中512以下的(端口)會被安置為其他的512以下的端口;512到1024之間的端口會被安置為1024以下的,其他端口會被安置為1024或以上。如果可能,端口不會被修改。 --to-destiontion [-][:port-port] 可以指定一個單一的新的IP地址,一個IP地址范圍,也可以附加一個端口范圍(只能在指定-p tcp 或者-p udp的規(guī)則里)。如果未指定端口范圍,目標端口不會被修改。 MASQUERADE 只用于nat表的POSTROUTING鏈。只能用于動態(tài)獲取IP(撥號)連接:如果你擁有靜態(tài)IP地址,你要用SNAT。偽裝相當于給包發(fā)出時所經(jīng)過接口的IP地址設置一個映像,當接口關閉連接會終止。這是因為當下一次撥號時未必是相同的接口地址(以后所有建立的連接都將關閉)。它有一個選項: --to-ports [-port>] 指定使用的源端口范圍,覆蓋默認的SNAT源地址選擇(見上面)。這個選項只適用于指定了-p tcp或者-p udp的規(guī)則。 REDIRECT 只適用于nat表的PREROUTING和OUTPUT鏈,和只調(diào)用它們的用戶自定義鏈。它修改包的目標IP地址來發(fā)送包到機器自身(本地生成的包被安置為地址127.0.0.1)。它包含一個選項: --to-ports [] 指定使用的目的端口或端口范圍:不指定的話,目標端口不會被修改。只能用于指定了-p tcp 或 -p udp的規(guī)則。 DIAGNOSTICS 診斷 不同的錯誤信息會打印成標準錯誤:退出代碼0表示正確。類似于不對的或者濫用的命令行參數(shù)錯誤會返回錯誤代碼2,其他錯誤返回代碼為1。 BUGS 臭蟲 Check is not implemented (yet). 檢查還未完成。 COMPATIBILITY WITH IPCHAINS 與ipchains的兼容性 iptables和Rusty Russell的ipchains非常相似。主要區(qū)別是INPUT 鏈只用于進入本地主機的包,而OUTPUT只用于自本地主機生成的包。因此每個包只經(jīng)過三個鏈的一個;以前轉(zhuǎn)發(fā)的包會經(jīng)過所有三個鏈。其他主要區(qū)別是 -i 引用進入接口;-o引用輸出接口,兩者都適用于進入FORWARD鏈的包。當和可選擴展模塊一起使用默認過濾器表時,iptables是一個純粹的包過濾器。這能大大減少以前對IP偽裝和包過濾結(jié)合使用的混淆,所以以下選項作了不同的處理: -j MASQ -M -S -M -L 在iptables中有幾個不同的鏈。
抱歉,此頁面的內(nèi)容受版權保護,復制需扣除次數(shù),次數(shù)不足時需付費購買。
如需下載請點擊:點擊此處下載
掃碼付費即可復制
GPRS | PTP | 節(jié)點交換機 | TCH/F2.4 | 帶通瀘波器 | tbf | dlag | A1事件 | A2事件 | 業(yè)余無線電 | FDD模式 | bulkstats |
移動通信網(wǎng) | 通信人才網(wǎng) | 更新日志 | 團隊博客 | 免責聲明 | 關于詞典 | 幫助