linux系統中查看己設置iptables規則

一、iptables -Llinux


查看filter表的iptables規則,包括全部的鏈。filter表包含INPUT、OUTPUT、FORWARD三個規則鏈web

說明:-L是--list的簡寫,做用是列出規則。安全


二、iptables -L [-t 表名]服務器


只查看某個表的中的規則。網絡


說明:表名一共有三個:filter,nat,mangle,若是沒有指定表名,則默認查看filter表的規則列表(就至關於第一條命令)。app

舉例:iptables -L -t filtertcp


三、iptables -L [-t 表名] [鏈名]ide


這裏多了個鏈名,就是規則鏈的名稱。oop


說明:iptables一共有INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING五個規則鏈ui


舉例:iptables -L INPUT


注意:鏈名必須大寫。在Linux系統上,命令的大小寫很敏感。


四、iptables -n -L


說明:以數字形式顯示規則。若是沒有-n,規則中可能會出現anywhere,有了-n,它會變成0.0.0.0/0


五、iptables -nv -L


說明:你也可使用「iptables -L -nv」來查看,這個列表看起來更詳細,對技術人員更友好,呵呵。


若是想刪除iptables規則咱們能夠以下操做


刪除用-D參數


刪除以前添加的規則(iptables -A INPUT -s 192.168.1.5 -j DROP):


[root@test ~]# iptables -D INPUT -s 192.168.1.5 -j DROP


有時候要刪除的規則太長,刪除時要寫一大串,既浪費時間又容易寫錯,這時咱們能夠

先使用–line-number找出該條規則的行號,再經過行號刪除規則。


[root@test ~]# iptables -nv --line-number


iptables v1.4.7: no command specified

Try `iptables -h' or 'iptables --help' for more information.

[root@test ~]# iptables -nL --line-number

Chain INPUT (policy ACCEPT)

num  target     prot opt source               destination

1    DROP       all  --  192.168.1.1          0.0.0.0/0

2    DROP       all  --  192.168.1.2          0.0.0.0/0

3    DROP       all  --  192.168.1.3          0.0.0.0/0


刪除第二行規則

[root@test ~]# iptables -D INPUT 2



[root@tp ~]# iptables -A INPUT -p tcp --dport 22 -j ACCEPT

[root@tp ~]# iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT 


(注:這個規則,若是你把OUTPUT 設置成DROP的就要寫上這一部,好多人都是忘了寫這一部規則致使,始終沒法SSH.在遠程一下,是否是好了.其餘的端口也同樣,若是開啓了web服務器,OUTPUT設置成DROP的話,一樣也要添加一條鏈:


[root@tp ~]# iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT)


若是作了WEB服務器,開啓80端口.


[root@tp ~]# iptables -A INPUT -p tcp --dport 80 -j ACCEPT


若是作了郵件服務器,開啓25,110端口.

[root@tp ~]# iptables -A INPUT -p tcp --dport 110 -j ACCEPT

[root@tp ~]# iptables -A INPUT -p tcp --dport 25 -j ACCEPT


若是作了FTP服務器,開啓21端口

[root@tp ~]# iptables -A INPUT -p tcp --dport 21 -j ACCEPT

[root@tp ~]# iptables -A INPUT -p tcp --dport 20 -j ACCEPT


若是作了DNS服務器,開啓53端口

[root@tp ~]# iptables -A INPUT -p tcp --dport 53 -j ACCEPT


上面主要寫的都是INPUT鏈,凡是不在上面的規則裏的,都DROP


容許icmp包經過,也就是容許ping,


[root@tp ~]# iptables -A OUTPUT -p icmp -j ACCEPT (OUTPUT設置成DROP的話)


[root@tp ~]# iptables -A INPUT -p icmp -j ACCEPT    (INPUT設置成DROP的話)


容許loopback!(否則會致使DNS沒法正常關閉等問題)


IPTABLES -A INPUT -i lo -p all -j ACCEPT (若是是INPUT DROP)


IPTABLES -A OUTPUT -o lo -p all -j ACCEPT(若是是OUTPUT DROP)


下面寫OUTPUT鏈,OUTPUT鏈默認規則是ACCEPT,因此咱們就寫須要DROP(放棄)的鏈.


減小不安全的端口鏈接


[root@tp ~]# iptables -A OUTPUT -p tcp --sport 31337 -j DROP

[root@tp ~]# iptables -A OUTPUT -p tcp --dport 31337 -j DROP


.


下面寫一下更加細緻的規則,就是限制到某臺機器


如:咱們只容許192.168.0.3的機器進行SSH鏈接


[root@tp ~]# iptables -A INPUT -s 192.168.0.3 -p tcp --dport 22 -j ACCEPT


若是要容許,或限制一段IP地址可用 192.168.0.0/24 表示192.168.0.1-255端的全部IP.


24表示子網掩碼數.但要記得把 /etc/sysconfig/iptables 裏的這一行刪了.


-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT 由於它表示全部地址均可以登錄.


或採用命令方式:


[root@tp ~]# iptables -D INPUT -p tcp --dport 22 -j ACCEPT



[root@tp ~]# /etc/rc.d/init.d/iptables save


這樣寫 !192.168.0.3 表示除了192.168.0.3的ip地址


其餘的規則鏈接也同樣這麼設置.


在下面就是FORWARD鏈,FORWARD鏈的默認規則是DROP,因此咱們就寫須要ACCETP(經過)的鏈,對正在轉發鏈的監控.


開啓轉發功能,(在作NAT時,FORWARD默認規則是DROP時,必須作)


[root@tp ~]# iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT

[root@tp ~]# iptables -A FORWARD -i eth1 -o eh0 -j ACCEPT


丟棄壞的TCP包

[root@tp ~]#iptables -A FORWARD -p TCP ! --syn -m state --state NEW -j DROP

處理IP碎片數量,防止***,容許每秒100個


[root@tp ~]#iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT


設置ICMP包過濾,容許每秒1個包,限制觸發條件是10個包. 

[root@tp ~]#iptables -A FORWARD -p icmp -m limit --limit 1/s --limit-burst 10 -j ACCEPT

我在前面只因此容許ICMP包經過,就是由於我在這裏有限制.


三、刪除

刪除用-D參數

刪除以前添加的規則(iptables -A INPUT -s 192.168.1.5 -j DROP):

[root@test ~]# iptables -D INPUT -s 192.168.1.5 -j DROP有時候要刪除的規則太長,刪除時要寫一大串,既浪費時間又容易寫錯,這時咱們能夠先使用–line-number找出該條規則的行號,再經過行號刪除規則。

[root@test ~]# iptables -nv --line-number

iptables v1.4.7: no command specified

Try `iptables -h' or 'iptables --help' for more information.

[root@test ~]# iptables -nL --line-number

Chain INPUT (policy ACCEPT)

num  target     prot opt source               destination

1    DROP       all  --  192.168.1.1          0.0.0.0/0

2    DROP       all  --  192.168.1.2          0.0.0.0/0

3    DROP       all  --  192.168.1.3          0.0.0.0/0

刪除第二行規則

[root@test ~]# iptables -D INPUT 2四、


無論你在安裝linux時是否啓動了防火牆,若是你想配置屬於本身的防火牆,那就清除如今filter的全部規則.

[root@tp ~]# iptables -F        清除預設表filter中的全部規則鏈的規則


[root@tp ~]# iptables -X        清除預設表filter中使用者自定鏈中的規則


咱們在來看一下

[root@tp ~]# iptables -L -n

Chain INPUT (policy ACCEPT)

target       prot opt source                 destination         

Chain FORWARD (policy ACCEPT)

target       prot opt source                 destination         

Chain OUTPUT (policy ACCEPT)

target       prot opt source                 destination      


[root@tp ~]# /etc/rc.d/init.d/iptables save

這樣就能夠寫到/etc/sysconfig/iptables文件裏了.寫入後記得把防火牆重起一下,才能起做用.

[root@tp ~]# service iptables restart

如今IPTABLES配置表裏什麼配置都沒有了,那咱們開始咱們的配置吧


(3)設定預設規則


[root@tp ~]# iptables -p INPUT DROP


[root@tp ~]# iptables -p OUTPUT ACCEPT


[root@tp ~]# iptables -p FORWARD DROP


上面的意思是,當超出了IPTABLES裏filter表裏的兩個鏈規則(INPUT,FORWARD)時,不在這兩個規則裏的數據包怎麼處理呢,那就是DROP(放棄).應該說這樣配置是很安全的.咱們要控制流入數據包


而對於OUTPUT鏈,也就是流出的包咱們不用作太多限制,而是採起ACCEPT,也就是說,不在着個規則裏的包怎麼辦呢,那就是經過.


能夠看出INPUT,FORWARD兩個鏈採用的是容許什麼包經過,而OUTPUT鏈採用的是不容許什麼包經過.


修改使用-R參數


先看下當前規則:

[root@test ~]# iptables -nL --line-number

Chain INPUT (policy ACCEPT)

num  target     prot opt source               destination

1    DROP       all  --  192.168.1.1          0.0.0.0/0

2    DROP       all  --  192.168.1.2          0.0.0.0/0

3    DROP       all  --  192.168.1.5          0.0.0.0/0

將第三條規則改成ACCEPT:

[root@test ~]# iptables -R INPUT 3 -j ACCEPT再查看下:

[root@test ~]# iptables -nL --line-number

Chain INPUT (policy ACCEPT)

num  target     prot opt source               destination

1    DROP       all  --  192.168.1.1          0.0.0.0/0

2    DROP       all  --  192.168.1.2          0.0.0.0/0

3    ACCEPT     all  --  0.0.0.0/0            0.0.0.0/0

第三條規則的target已改成ACCEPT。


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


-E 舊的鏈名 新的鏈名 


用新的鏈名取代舊的鏈名


說明


Iptalbes 是用來設置、維護和檢查Linux內核的IP包過濾規則的。 


能夠定義不一樣的表,每一個表都包含幾個內部的鏈,也能包含用戶定義的鏈。每一個鏈都是一個規則列表,對對應的包進行匹配:每條規則指定應當如何處理與之相匹配的包。這被稱做'target'(目標),也能夠跳向同一個表內的用戶定義的鏈。


TARGETS


防火牆的規則指定所檢查包的特徵,和目標。若是包不匹配,將送往該鏈中下一條規則檢查;若是匹配,那麼下一條規則由目標值肯定.該目標值能夠是用戶定義的鏈名,或是某個專用值,如ACCEPT[經過], DROP[刪除], QUEUE[排隊], 或者 RETURN[返回]。

ACCEPT 表示讓這個包經過。DROP表示將這個包丟棄。QUEUE表示把這個包傳遞到用戶空間。RETURN表示中止這條鏈的匹配,到前一個鏈的規則從新開始。若是到達了一個內建的鏈(的末端),或者遇到內建鏈的規則是RETURN,包的命運將由鏈準則指定的目標決定。

TABLES


當前有三個表(哪一個表是當前表取決於內核配置選項和當前模塊)。


-t table

這個選項指定命令要操做的匹配包的表。若是內核被配置爲自動加載模塊,這時若模塊沒有加載,(系統)將嘗試(爲該表)加載適合的模塊。這些表以下:


filter,這是默認的表,包含了內建的鏈INPUT(處理進入的包)、FORWORD(處理經過的包)和OUTPUT(處理本地生成的包)。


nat,這個表被查詢時表示遇到了產生新的鏈接的包,由三個內建的鏈構成:PREROUTING (修改到來的包)、OUTPUT(修改路由以前本地的包)、POSTROUTING(修改準備出去的包)。


mangle 這個表用來對指定的包進行修改。它有兩個內建規則:PREROUTING(修改路由以前進入的包)和OUTPUT(修改路由以前本地的包)。


OPTIONS


這些可被iptables識別的選項能夠區分不一樣的種類。


COMMANDS


這些選項指定執行明確的動做:若指令行下沒有其餘規定,該行只能指定一個選項.對於長格式的命令和選項名,所用字母長度只要保證iptables能從其餘選項中區分出該指令就好了。

-A -append

在所選擇的鏈末添加一條或更多規則。當源(地址)或者/與 目的(地址)轉換爲多個地址時,這條規則會加到全部可能的地址(組合)後面。

-D -delete

從所選鏈中刪除一條或更多規則。這條命令能夠有兩種方法:能夠把被刪除規則指定爲鏈中的序號(第一條序號爲1),或者指定爲要匹配的規則。

-R -replace

從選中的鏈中取代一條規則。若是源(地址)或者/與 目的(地址)被轉換爲多地址,該命令會失敗。規則序號從1開始。

-I -insert

根據給出的規則序號向所選鏈中插入一條或更多規則。因此,若是規則序號爲1,規則會被插入鏈的頭部。這也是不指定規則序號時的默認方式。

-L -list

顯示所選鏈的全部規則。若是沒有選擇鏈,全部鏈將被顯示。也能夠和z選項一塊兒使用,這時鏈會被自動列出和歸零。精確輸出受其它所給參數影響。

-F -flush

清空所選鏈。這等於把全部規則一個個的刪除。

--Z -zero

把全部鏈的包及字節的計數器清空。它能夠和 -L配合使用,在清空前察看計數器,請參見前文。

-N -new-chain

根據給出的名稱創建一個新的用戶定義鏈。這必須保證沒有同名的鏈存在。

-X -delete-chain

刪除指定的用戶自定義鏈。這個鏈必須沒有被引用,若是被引用,在刪除以前你必須刪除或者替換與之有關的規則。若是沒有給出參數,這條命令將試着刪除每一個非內建的鏈。


-P -policy

設置鏈的目標規則。

-E -rename-chain

根據用戶給出的名字對指定鏈進行重命名,這僅僅是修飾,對整個表的結構沒有影響。TARGETS參數給出一個合法的目標。只有非用戶自定義鏈可使用規則,並且內建鏈和用戶自定義鏈都不能是規則的目標。

-h Help.

幫助。給出當前命令語法很是簡短的說明。

PARAMETERS

參數

如下參數構成規則詳述,如用於add、delete、replace、append 和 check命令。

-p -protocal [!]protocol

規則或者包檢查(待檢查包)的協議。指定協議能夠是tcp、udp、icmp中的一個或者所有,也能夠是數值,表明這些協議中的某一個。固然也可使用在/etc/protocols中定義的協議名。在協議名前加上"!"表示相反的規則。數字0至關於全部all。Protocol all會匹配全部協議,並且這是缺省時的選項。在和check命令結合時,all能夠不被使用。

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

指定源地址,能夠是主機名、網絡名和清楚的IP地址。mask說明能夠是網絡掩碼或清楚的數字,在網絡掩碼的左邊指定網絡掩碼左邊"1"的個數,所以,mask值爲24等於255.255.255.0。在指定地址前加上"!"說明指定了相反的地址段。標誌 --src 是這個選項的簡寫。

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

指定目標地址,要獲取詳細說明請參見 -s標誌的說明。標誌 --dst 是這個選項的簡寫。

-j --jump target

-j 目標跳轉

指定規則的目標;也就是說,若是包匹配應當作什麼。目標能夠是用戶自定義鏈(不是這條規則所在的),某個會當即決定包的命運的專用內建目標,或者一個擴展(參見下面的EXTENSIONS)。若是規則的這個選項被忽略,那麼匹配的過程不會對包產生影響,不過規則的計數器會增長。

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

i -進入的(網絡)接口 [!][名稱]

這是包經由該接口接收的可選的入口名稱,包經過該接口接收(在鏈INPUT、FORWORD和PREROUTING中進入的包)。當在接口名前使用"!"說明後,指的是相反的名稱。若是接口名後面加上"+",則全部以此接口名開頭的接口都會被匹配。若是這個選項被忽略,會假設爲"+",那麼將匹配任意接口。

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

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

這是包經由該接口送出的可選的出口名稱,包經過該口輸出(在鏈FORWARD、OUTPUT和POSTROUTING中送出的包)。當在接口名前使用"!"說明後,指的是相反的名稱。若是接口名後面加上"+",則全部以此接口名開頭的接口都會被匹配。若是這個選項被忽略,會假設爲"+",那麼將匹配全部任意接口。

[!] -f, --fragment

[!] -f --分片

這意味着在分片的包中,規則只詢問第二及之後的片。自那之後因爲沒法判斷這種把包的源端口或目標端口(或者是ICMP類型的),這類包將不能匹配任何指定對他們進行匹配的規則。若是"!"說明用在了"-f"標誌以前,表示相反的意思。

OTHER OPTIONS

其餘選項

還能夠指定下列附加選項:

-v --verbose

-v --詳細

詳細輸出。這個選項讓list命令顯示接口地址、規則選項(若是有)和TOS(Type of Service)掩碼。包和字節計數器也將被顯示,分別用K、M、G(前綴)表示1000、1,000,000和1,000,000,000倍(不過請參看-x標誌改變它),對於添加,插入,刪除和替換命令,這會使一個或多個規則的相關詳細信息被打印。

-n --numeric

-n --數字

數字輸出。IP地址和端口會以數字的形式打印。默認狀況下,程序試顯示主機名、網絡名或者服務(只要可用)。

-x -exact

-x -精確

擴展數字。顯示包和字節計數器的精確值,代替用K,M,G表示的約數。這個選項僅能用於 -L 命令。

--line-numbers

當列表顯示規則時,在每一個規則的前面加上行號,與該規則在鏈中的位置相對應。

MATCH EXTENSIONS

對應的擴展

iptables可以使用一些與模塊匹配的擴展包。如下就是含於基本包內的擴展包,並且他們大多數均可以經過在前面加上!來表示相反的意思。

tcp

當 --protocol tcp 被指定,且其餘匹配的擴展未被指定時,這些擴展被裝載。它提供如下選項:

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

源端口或端口範圍指定。這能夠是服務名或端口號。使用格式端口:端口也能夠指定包含的(端口)範圍。若是首端口號被忽略,默認是"0",若是末端口號被忽略,默認是"65535",若是第二個端口號大於第一個,那麼它們會被交換。這個選項可使用 --sport的別名。

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

目標端口或端口範圍指定。這個選項可使用 --dport別名來代替。

--tcp-flags [!] mask comp

匹配指定的TCP標記。第一個參數是咱們要檢查的標記,一個用逗號分開的列表,第二個參數是用逗號分開的標記表,是必須被設置的。標記以下: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鏈接初始化時發出請求;例如,大量的這種包進入一個接口發生堵塞時會阻止進入的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類型,能夠是一個數值型的ICMP類型,或者是某個由命令iptables -p icmp -h所顯示的ICMP類型名。

mac

--mac-source [!] address

匹配物理地址。必須是XX:XX:XX:XX:XX這樣的格式。注意它只對來自以太設備並進入PREROUTING、FORWORD和INPUT鏈的包有效。

limit

這個模塊匹配標誌用一個標記桶過濾器一必定速度進行匹配,它和LOG目標結合使用來給出有限的登錄數.當達到這個極限值時,使用這個擴展包的規則將進行匹配.(除非使用了"!"標記)

--limit rate

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

--limit-burst number

待匹配包初始個數的最大值:若前面指定的極限還沒達到這個數值,則概數字加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

此模塊試爲本地生成包匹配包建立者的不一樣特徵。只能用於OUTPUT鏈,並且即便這樣一些包(如ICMP ping應答)還可能沒有全部者,所以永遠不會匹配。

--uid-owner userid

若是給出有效的user id,那麼匹配它的進程產生的包。

--gid-owner groupid

若是給出有效的group id,那麼匹配它的進程產生的包。

--sid-owner seessionid

根據給出的會話組匹配該進程產生的包。

state

此模塊,當與鏈接跟蹤結合使用時,容許訪問包的鏈接跟蹤狀態。

--state state

這裏state是一個逗號分割的匹配鏈接狀態列表。可能的狀態是:INVALID表示包是未知鏈接,ESTABLISHED表示是雙向傳送的鏈接,NEW表示包爲新的鏈接,不然是非雙向傳送的,而RELATED表示包由新鏈接開始,可是和一個已存在的鏈接在一塊兒,如FTP數據傳送,或者一個ICMP錯誤。

unclean

此模塊沒有可選項,不過它試着匹配那些奇怪的、不常見的包。處在實驗中。

tos

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

--tos tos

這個參數能夠是一個標準名稱,(用iptables -m tos -h 察看該列表),或者數值。

TARGET EXTENSIONS

iptables可使用擴展目標模塊:如下都包含在標準版中。

LOG

爲匹配的包開啓內核記錄。當在規則中設置了這一選項後,linux內核會經過printk()打印一些關於所有匹配包的信息(諸如IP包頭字段等)。

--log-level level

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

--log-prefix prefix

在紀錄信息前加上特定的前綴:最多14個字母長,用來和記錄中其餘信息區別。

--log-tcp-sequence

記錄TCP序列號。若是記錄能被用戶讀取那麼這將存在安全隱患。

--log-tcp-options

記錄來自TCP包頭部的選項。

--log-ip-options

記錄來自IP包頭部的選項。

MARK

用來設置包的netfilter標記值。只適用於mangle表。

--set-mark mark

REJECT

做爲對匹配的包的響應,返回一個錯誤的包:其餘狀況下和DROP相同。

此目標只適用於INPUT、FORWARD和OUTPUT鏈,和調用這些鏈的用戶自定義鏈。這幾個選項控制返回的錯誤包的特性:

--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包的規則中,生成ping的迴應。最後,選項tcp-reset能夠用於在INPUT鏈中,或自INPUT鏈調用的規則,只匹配TCP協議:將回應一個TCP RST包。

TOS

用來設置IP包的首部八位tos。只能用於mangle表。

--set-tos tos

你可使用一個數值型的TOS 值,或者用iptables -j TOS -h 來查看有效TOS名列表。

MIRROR

這是一個試驗示範目標,可用於轉換IP首部字段中的源地址和目標地址,再傳送該包,並只適用於INPUT、FORWARD和OUTPUT鏈,以及只調用它們的用戶自定義鏈。

SNAT

這個目標只適用於nat表的POSTROUTING鏈。它規定修改包的源地址(此鏈接之後全部的包都會被影響),中止對規則的檢查,它包含選項:

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

能夠指定一個單一的新的IP地址,一個IP地址範圍,也能夠附加一個端口範圍(只能在指定-p tcp 或者-p udp的規則裏)。若是未指定端口範圍,源端口中512如下的(端口)會被安置爲其餘的512如下的端口;512到1024之間的端口會被安置爲1024如下的,其餘端口會被安置爲1024或以上。若是可能,端口不會被修改。

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

能夠指定一個單一的新的IP地址,一個IP地址範圍,也能夠附加一個端口範圍(只能在指定-p tcp 或者-p udp的規則裏)。若是未指定端口範圍,目標端口不會被修改。

MASQUERADE

只用於nat表的POSTROUTING鏈。只能用於動態獲取IP(撥號)鏈接:若是你擁有靜態IP地址,你要用SNAT。假裝至關於給包發出時所通過接口的IP地址設置一個映像,當接口關閉鏈接會終止。這是由於當下一次撥號時未必是相同的接口地址(之後全部創建的鏈接都將關閉)。它有一個選項:

--to-ports [-port>]

指定使用的源端口範圍,覆蓋默認的SNAT源地址選擇(見上面)。這個選項只適用於指定了-p tcp或者-p udp的規則。

REDIRECT

只適用於nat表的PREROUTING和OUTPUT鏈,和只調用它們的用戶自定義鏈。它修改包的目標IP地址來發送包到機器自身(本地生成的包被安置爲地址127.0.0.1)。它包含一個選項:

--to-ports [ ]

指定使用的目的端口或端口範圍:不指定的話,目標端口不會被修改。只能用於指定了-p tcp 或 -p udp的規則。

DIAGNOSTICS

診斷

不一樣的錯誤信息會打印成標準錯誤:退出代碼0表示正確。相似於不對的或者濫用的命令行參數錯誤會返回錯誤代碼2,其餘錯誤返回代碼爲1。

BUGS 

臭蟲

Check is not implemented (yet).

檢查還未完成。

COMPATIBILITY WITH IPCHAINS

與ipchains的兼容性

iptables和Rusty Russell的ipchains很是類似。主要區別是INPUT 鏈只用於進入本地主機的包,而OUTPUT只用於自本地主機生成的包。所以每一個包只通過三個鏈的一個;之前轉發的包會通過全部三個鏈。其餘主要區別是 -i 引用進入接口;-o引用輸出接口,二者都適用於進入FORWARD鏈的包。當和可選擴展模塊一塊兒使用默認過濾器表時,iptables是一個純粹的包過濾器。這能大大減小之前對IP假裝和包過濾結合使用的混淆,因此如下選項做了不一樣的處理:

-j MASQ

-M -S

-M -L

在iptables中有幾個不一樣的鏈。

相關文章
相關標籤/搜索