使用iptables -ADC指定鏈的規則,-A添加-D刪除-C修改。
iptables - [RI]鏈規則編號規則-規格[選項]
使用iptables-RI指定規則的順序。
iptables -D鏈規則編號[選項]
刪除指定的規則
iptables-[LFZ][連鎖][選項]
使用iptables -LFZ鏈名稱[選項]
iptables -[NX]鏈
用-NX指定鏈。
iptables -P鏈目標[選項]
指定鏈的默認目標。
iptables -E舊鏈名新鏈名
-E舊鏈名,新鏈名
用新名稱替換舊的鏈名稱。
解釋
Iptalbes用於設置、維護和檢查Linux內核的IP包過濾規則。
可以定義不同的表,每個表包含幾個內部鏈,也可以包含用戶自定義的鏈。每個鏈都是匹配相應包的規則列表:每個規則都指定如何處理匹配的包。這稱為“目標”,或者您可以跳轉到同壹個表中的用戶定義的鏈。
目標
防火墻的規則指定了被檢查的包和目標的特征。如果包不匹配,它將被發送到鏈中的下壹個規則檢查;如果匹配,下壹個規則由目標值決定。目標值可以是用戶定義的鏈名或特殊值,如ACCEPT[ pass ]、DROP[ delete ]、QUEUE[ queue]或RETURN[ return]。
接受意味著讓這個包裹通過。丟棄意味著丟棄這個數據包。隊列意味著將這個包傳遞到用戶空間。返回的意思是停止這個鏈的匹配,重新開始上壹個鏈的規則。如果到達壹個內置鏈,或者內置鏈的規則是RETURN,那麽包的命運將由鏈準則指定的目標決定。
桌子
目前有三個表(哪個表是當前表取決於內核配置選項和當前模塊)。
-t型桌
此選項指定命令將操作的匹配包的表。如果內核被配置為自動加載模塊,那麽如果模塊沒有被加載,(系統)將嘗試加載適當的模塊(用於表)。這些表如下:filter,這是默認表,包含內置鏈INPUT(處理傳入的數據包)、FORWORD(處理傳遞的數據包)和OUTPUT(處理本地生成的數據包)。當被查詢時,Nat指示已經遇到生成新連接的分組,它由三個內置鏈組成:預路由(修改傳入分組)、輸出(在路由之前修改本地分組)和後路由(修改準備發出的分組)。這個表用來修改指定的包。它有兩個內置規則:預路由(修改路由前進入的數據包)和輸出(修改路由前本地的數據包)。
選擇
iptables可以識別的這些選項可以區分不同的種類。
命令
這些選項指定要執行的特定操作:如果命令行下沒有其他規定,則該行只能指定壹個選項。對於長格式的命令和選項名,使用的字母長度只需要確保iptables可以將命令與其他選項區分開來。
-A-追加
在選定鏈的末端添加壹個或多個規則。當源(地址)或/和目的(地址)被轉換成多個地址時,該規則將被添加在所有可能的地址(組合)之後。
-D-刪除
從選定的鏈中刪除壹個或多個規則。該命令有兩種方法:可以將刪除的規則指定為鏈中的序列號(第壹個序列號是1)或者指定為要匹配的規則。
-R-替換
替換選定鏈中的規則。如果源(地址)或/和目的地(地址)被轉換為多個地址,該命令將失敗。規則編號從1開始。
-I-插入
根據給定的規則編號,將壹個或多個規則插入到選定的鏈中。因此,如果規則號是1,那麽該規則將被插入到鏈的頭部。當未指定規則序號時,這也是默認方法。
-L -list
顯示選定鏈的所有規則。如果沒有選擇鏈,將顯示所有鏈。它也可以與z選項壹起使用,在這種情況下,鏈將自動列出並歸零。精確輸出受其他給定參數的影響。
-F同花順
清空選定的鏈。這相當於把所有的規則都壹壹刪除了。
零零
清空所有鏈包和字節的計數器。它可以和-L壹起使用,在清空計數器之前檢查計數器。請參考上壹篇文章。
-N-新鏈
根據給定的名稱創建新的用戶定義鏈。這必須確保不存在同名的鏈。
-X-刪除-鏈
刪除指定的用戶定義鏈。不得引用此鏈。如果被引用,在刪除前必須刪除或替換與之相關的規則。如果沒有給定參數,該命令將嘗試刪除每個未構建的鏈。
-公共政策
設置鏈的目標規則。
-E-重命名-鏈
根據用戶給的名字給指定的鏈重新命名,只是壹個裝飾,對整個表的結構沒有影響。TARGETS參數給出壹個合法的目標。只有非自定義鏈可以使用規則,內置鏈和自定義鏈都不能成為規則的目標。
-救命啊。
救命啊。給出當前命令語法的簡短描述。
因素
參數
以下參數構成詳細規則,例如用於添加、刪除、替換、追加和檢查命令的參數。
-p-protocol[!]協議
數據包檢查的規則或協議(要檢查的數據包)。指定的協議可以是tcp、udp和icmp中的壹個或全部,也可以是代表這些協議之壹的數值。當然,也可以使用/etc/protocols中定義的協議名。添加“!”在協議名稱之前。代表相反的規則。數字0等於所有。所有協議匹配所有協議,這是默認選項。當與check命令結合使用時,all可能無法使用。
-s -source [!]地址[/掩碼]
指定源地址,可以是主機名、網絡名和明文IP地址。掩碼的描述可以是網絡掩碼,也可以是明碼,網絡掩碼左邊指定了“1”的數字,所以掩碼值24等於255.255.255.0。添加“!”在指定的地址之前。描述指定了相反的地址段。Flag - src是該選項的縮寫。
-d -目的地[!]地址[/掩碼]
指定目標地址。有關詳細說明,請參考-s標誌的描述。Flag - dst是該選項的縮寫。
-j -跳躍目標
-j目標跳躍
指定規則的目標;也就是包匹配了怎麽辦。該目標可以是壹個用戶定義的鏈(此規則不存在),壹個將立即決定包命運的專用內置目標,或者壹個擴展(參見下面的擴展)。如果忽略規則的此選項,匹配過程不會影響包,但規則的計數器會增加。
-i -in-interface [!][姓名]
I-傳入(網絡)接口[!][姓名]
這是通過該接口接收的包的可選條目名稱,並且該包是通過該接口接收的(在輸入鏈、轉發和預路由中輸入的包)。當“!”用在接口名稱之前。形容之後,指的是相反的名稱。如果接口名稱後跟“+”,則以該接口名稱開頭的所有接口都將匹配。如果省略該選項,將假設為“+”,匹配任何接口。
-o - out-interface [!][姓名]
-o-輸出接口[名稱]
這是通過此接口發送的包的可選出口名稱,包通過此接口輸出(在轉發、輸出和後路由鏈中發送的包)。當“!”用在接口名稱之前。形容之後,指的是相反的名稱。如果接口名稱後跟“+”,則以該接口名稱開頭的所有接口都將匹配。如果省略此選項,將假設為“+”,將匹配所有任意接口。
[!] -f,-片段
[!] -f切片
這意味著在壹個分段的數據包中,規則只要求第二個和隨後的片段。此後,因為不可能確定這些數據包的源端口或目的端口(或ICMP類型),所以這些數據包將無法與指定匹配它們的任何規則相匹配。如果"!"解釋用在“-f”符號前,表示相反的意思。
其他選項
其他選項
您還可以指定以下附加選項:
-v -詳細
-v-詳細
詳細輸出。此選項允許list命令顯示接口地址、規則選項(如果有)和TOS(服務類型)掩碼。還會顯示包和字節計數器,K、M和G(前綴)分別表示1000、1,000,000和1,000,000次(不過請參考-x符號來更改)。對於添加、插入、刪除和替換命令,
-n -數字
-n個數字
數字輸出。IP地址和端口將以數字形式打印出來。默認情況下,程序會嘗試顯示主機名、網絡名或服務(只要可用)。
-x-精確
-x精度
擴大數量。顯示數據包和字節計數器的準確值,而不是由K、M、G、M和G表示的除數。此選項只能與-L命令壹起使用。
-行號
當列表顯示規則時,在每個規則前添加壹個行號,該行號對應於規則在鏈中的位置。
匹配擴展名
相應的擴展
Iptables可以使用壹些與模塊匹配的擴展包。以下是基礎包中包含的擴展包,大部分可以添加在前面!來表達相反的意思。
傳輸控制協議
當指定了-protocoltcp並且未指定其他匹配的擴展時,將加載這些擴展。它提供了以下選項:
-源-端口[!][端口[:端口]]
源端口或端口範圍規格。這可以是服務名或端口號。使用格式端口:端口還可以指定包含的(端口)範圍。如果忽略第壹個端口號,則默認為“0”,如果忽略結束標語,則默認為“65535”,如果第二個端口號大於第壹個,則將交換它們。對於此選項,您可以使用- sport的別名。
-destination-port[!][端口:[端口]]
目標端口或端口範圍規格。該選項可以由- dport別名替換。
- tcp-flags [!]掩模構圖
匹配指定的TCP標記。第壹個參數是我們要檢查的標簽,逗號分隔的列表,第二個參數是逗號分隔的標簽列表,必須設置。標記如下:synack finrsturg pshalnone。因此,這個命令:iptables-a forward-p TCP-TCP-flags SYN,ack,fin,RST syn只匹配那些設置了SYN標誌但沒有設置ACK,FIN和RST標誌的數據包。
[!] - syn
只有那些設置了SYN位並且清除了ACK和FIN位的TCP數據包才匹配。這些數據包用於在TCP連接初始化時發出請求;例如,當大量此類數據包進入接口並被阻止時,傳入的TCP連接將被阻止,而傳出的TCP連接不會受到影響。這等於-TCP - tcp-flags SYN,RST,ACK SYN。如果“- syn”前面有“!”標記,表示相反的意思。
- tcp-option [!]編號
將與TCP選項集匹配。
用戶數據報協議
當指定了協議udp而未指定其他匹配的擴展時,將加載這些擴展,這提供了以下選項:
-源-端口[!][端口:[端口]]
源端口或端口範圍規格。詳見TCP擴展的- source-port選項描述。
-目的地-港口[!][端口:[端口]]
目標端口或端口範圍規格。詳見TCP擴展的- destination-port選項描述。
網間控制報文協議
當指定了協議icmp而沒有指定其他匹配的擴展時,將加載該擴展。它提供了以下選項:
- icmp-type [!]鍵入名稱
此選項允許您指定ICMP類型,它可以是數字ICMP類型,也可以是由命令iptables -p icmp -h h顯示的ICMP類型名稱。
老兄
- mac-source [!]地址
匹配物理地址。它的格式必須是XX:XX:XX:XX:XX。請註意,它僅對來自以太網設備並進入預路由、轉發和輸入鏈的數據包有效。
限制
這個模塊匹配標誌以壹定的速度與壹個標簽桶過濾器相匹配,與LOG目標結合使用,給出有限的登錄次數。當達到此限制值時,將匹配使用此擴展包的規則。(除非“!”已使用。馬克)
-極限速率
最大平均匹配率:可賦值為“/秒”、“分鐘”、“小時”、“天”,默認值為3/小時。
-極限突發數
要匹配的包的初始數量的最大值:如果先前指定的限制沒有達到該值,則將近似值加上1。默認值為5。
多端口的
該模塊匹配壹組源或目標端口,最多可以指定15個端口。只能與-p tcp或-p udp壹起使用。
- source-port [port[,port]]
如果源端口是給定端口之壹,則匹配。
-目的地-港口[港口[,港口]]
如果目標端口是給定端口之壹,則匹配。
- port [port[,port]]
如果源端口和目的端口相等,並且都等於給定的端口,則它們匹配。
標記
此模塊匹配netfilter過濾器標簽字段(您可以將其設置為使用下面的標記標簽)。
-標記值[/mask]
將這些包與無符號標記值進行匹配(如果指定了掩碼,則在比較之前會對掩碼進行邏輯標記)。
物主
這個模塊試圖為本地生成的包匹配包創建者的不同特征。它只能在輸出鏈中使用,甚至這樣的數據包(比如ICMP ping回復)也可能沒有所有者,所以它們永遠不會匹配。
-uid-所有者用戶id
如果給定了有效的用戶id,則由匹配它的進程生成的包。
-GID-所有者群組id
如果給定了有效的組id,則由匹配它的進程生成的包。
-sid-所有者seessionid
根據給定的會話組匹配由此過程生成的數據包。
狀態
當與連接跟蹤結合使用時,此模塊允許訪問包的連接跟蹤狀態。
-州州
這裏的state是以逗號分隔的匹配連接狀態列表。可能的狀態有:INVALID表示該數據包是未知連接,ESTABLISHED表示是雙向連接,NEW表示該數據包是新連接,否則不是雙向連接,RELATED表示該數據包從新連接開始,但與現有連接連接,如FTP數據傳輸或ICMP錯誤。
骯臟的
這個模塊沒有選項,但是它試圖匹配那些奇怪和不尋常的包。在實驗中。
ibm公司軟件
該模塊匹配IP數據包報頭的8位tos(服務類型)字段(也就是說,它包含在優先級位中)。
- tos tos
該參數可以是壹個標準名稱(使用iptables -m tos -h查看列表),也可以是壹個數值。
目標擴展
Iptables可以使用擴展的對象模塊:標準版中包括以下內容。
原木
為匹配的包打開內核日誌。當在規則中設置了這個選項時,linux內核將通過printk()打印所有匹配包的壹些信息(比如IP頭字段)。
-日誌級別
記錄級別(編號或參見syslog.conf(5))。
- log前綴前綴
在記錄的信息前添加壹個特定的前綴:最多14個字母,以區別於記錄中的其他信息。
-log-TCP-序列
記錄TCP序列號。如果記錄能被用戶讀取,會有安全隱患。
- log-tcp-options
記錄TCP數據包報頭中的選項。
- log-ip選項
記錄IP數據包報頭中的選項。
標記
用於設置包的netfilter標記值。僅適用於mangle表。
-設置標記標記
拒絕
為了響應匹配的包,返回壹個不正確的包:否則,它與DROP相同。
此目標僅適用於輸入、轉發和輸出鏈,以及調用這些鏈的用戶定義的鏈。這些選項控制返回的錯誤包的特征:
-拒絕-類型
類型可以是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數據包以生成ping響應的規則中使用。最後,tcp-reset選項可用於在輸入鏈中或從輸入鏈中調用的規則,這些規則只匹配tcp協議:TCP RST數據包將得到響應。
ibm公司軟件
用於設置IP數據包tos的前八位。只能用於mangle表。
-set-tos-tos
您可以使用數字TOS值或iptables -j TOS -h來查看有效TOS名稱的列表。
鏡子
這是壹個實驗演示目標,可以用來轉換IP頭字段中的源地址和目的地址,然後傳輸數據包,並且只適用於輸入、轉發和輸出鏈以及只調用它們的自定義鏈。
SNAT
此目標僅適用於nat表的路由後鏈。它規定修改包的源地址(這個連接後所有包都會受到影響)並停止檢查規則。它包含選項:
-to-source & lt;ipaddr & gt[-& lt;ipaddr & gt][:端口-端口]
您可以指定單個新的IP地址、IP地址範圍或附加端口範圍(僅在指定-p tcp或-p udp的規則中)。如果未指定端口範圍,源端口中512以下的端口將被放置為512以下的其他端口;512和1024之間的端口將設置在1024以下,其他端口將設置在1024以上。如果可能,將不修改端口。
-to-destion & lt;ipaddr & gt[-& lt;ipaddr & gt][:端口-端口]
您可以指定單個新的IP地址、IP地址範圍或附加端口範圍(僅在指定-p tcp或-p udp的規則中)。如果未指定端口範圍,將不會修改目標端口。
偽裝
僅用於nat表的路由後鏈。只能用於動態獲得壹個IP(撥號)連接:如果妳有壹個靜態的IP地址,妳應該使用SNAT。偽裝相當於給發送數據包的接口的IP地址設置了壹個鏡像,當接口關閉時連接就會終止。這是因為下壹次撥號可能不是同壹個接口地址(所有已建立的連接將來都會被關閉)。它有壹個選項:
-至港口& lt端口& gt[-port & gt;]
指定要使用的源端口範圍,覆蓋默認的SNAT源地址選擇(見上文)。此選項僅適用於指定-p tcp或-p udp的規則。
再直接的
它只適用於nat表的路由和輸出鏈,以及只調用它們的用戶自定義鏈。它修改數據包的目的IP地址,將數據包發送到機器本身(本地生成的數據包被設置為地址127.0.0.1)。它包含壹個選項:
-至港口& lt端口& gt[& lt;端口& gt]
指定要使用的目標端口或端口範圍:如果未指定,將不會修改目標端口。只能用於指定-p tcp或-p udp的規則。
診斷學
診斷
不同的錯誤信息被打印為標準錯誤:退出代碼0表示正確。不正確或濫用的命令行參數錯誤將返回錯誤代碼2,其他錯誤將返回代碼1。
瘋狂的
臭蟲
檢查尚未實現。
檢查還沒有結束。
與IPCHAINS的兼容性
與ipchains的兼容性
Iptables與Rusty Russell的ipchains非常相似。主要區別在於,輸入鏈僅用於進入本地主機的數據包,而輸出鏈僅用於從本地主機生成的數據包。所以每個數據包只通過三個鏈中的壹個;以前轉發的數據包將通過所有三個鏈。其他主要區別是-i引用進入接口;-o引用輸出接口,兩者都適用於進入正向鏈的包。當默認過濾器表與可選擴展模塊壹起使用時,Iptables是壹個純包過濾器。這可以極大地減少以前IP偽裝和包過濾組合的混亂,因此以下選項被區別對待:
-MASQ
M -S
-M -L
iptables中有幾種不同的鏈。
請參見
看見
Iptables-HOWTO有Iptables的詳細用法和netfilter-hacking-HOWTO本質的詳細解釋。