iptables 實際操做 之 規則查詢 2

   在以前的文章中,咱們已經總結過,iptables 爲咱們預約義了4張表,他們分別是raw 表,mangle表,nat表,filter表,不一樣的表擁有不一樣的功能。tcp

    filter 負責過濾功能,好比容許那些IP 地址訪問,拒絕那些IP地址訪問,容許訪問那些端口,禁止訪問那些端口,filter表會根據咱們定義的規則進行過濾,filter表應該是咱們最經常使用到的表了,因此此處,咱們一filter表爲例,開始學習怎樣實際操做iptables。學習

   

  一. 查看filter 表的規則優化

[root@localhost ~]# iptables -t filter -L -nv --line
Chain INPUT (policy ACCEPT 78 packets, 5830 bytes)
num   pkts bytes target     prot opt in     out     source               destina
tion
        
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destina
tion
        
Chain OUTPUT (policy ACCEPT 51 packets, 5100 bytes)
num   pkts bytes target     prot opt in     out     source               destina
tion 
接口

上例中咱們使用 –t 選項,指定要操做的表,使用-L 選項,查看-t 選項對應的表的規則,-L選項的意思是列出規則,因此,上述命令的含義爲列出filter表的全部規則。上圖中顯示了3條鏈,INPUT 鏈,FORWARD 鏈,OUTPUT 鏈,每條鏈中都有「過濾」的能力,因此,當咱們要定義某條「過濾」的規則時,咱們會在filter 表定義,可是具體在那條「鏈」上定義規則,這取決於咱們的工做場景。好比,咱們須要禁止某個IP地址訪問咱們的主機,咱們則須要在INPUT 鏈上定義規則。由於,咱們在理論總結中已經提到過,報文發往本機時,會通過PREROUTING 鏈於INPUT 鏈,因此,若是咱們想要禁止某些報文發往本機,咱們只能在PREROUTING鏈和INPUT鏈中定義規則,可是PREROUTING 鏈並不存在於filter 表中,換句話說就是,PREROUTING 關卡天生就沒有過濾的能力,因此,咱們只能在IPNPUT鏈中定義,固然,若是是其餘工做場景,可能須要在FORWARD鏈或者OUTPUT鏈中定義過濾規則。其實,咱們能夠省略 –t filter當沒有使用使用-t 選項指定表時,默認認爲操做filter表,即iptables –L  表示列出filter 表中的全部規則。 ip

 

咱們還能夠只查看指定表中的指定鏈的規則,以下,咱們只查看filter表中的INPUT 鏈的規則: get

[root@localhost ~]# iptables -L INPUT
Chain INPUT (policy ACCEPT)
target     prot opt source               destination io

 

咱們可使用 –v 來選項,查看出更多的,更詳細的信息;使用 –n 表示不對ip地址進行名稱反解,直接顯示IP地址,實例以下:table

[root@localhost ~]# iptables -L -nv
Chain INPUT (policy ACCEPT 393 packets, 33975 bytes)
 pkts bytes target     prot opt in     out     source               destination         配置

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target     prot opt in     out     source               destination         iptables

Chain OUTPUT (policy ACCEPT 200 packets, 18176 bytes)
pkts bytes target     prot opt in     out     source               destination

 

pkts: 對應規則匹配到的報文的個數

bytes: 對應匹配到的報文包的大小總和

target:規則對應的target,每每表示規則對應的「動做」,即規則匹配成功後須要採起的措施。

prot:表示規則對應的協議,是否只針對某些協議應用次規則。

opt:表示規則對應的選項。

in:表示數據包由那個接口(網卡)流入,咱們能夠設置經過那塊網卡流入的報文須要匹配當前規則。

out:表示數據包由那個接口(網卡)流出,咱們能夠設置經過那塊網卡流出的報文須要匹配當前規則。

source:表示規則對應的源頭地址,能夠是一個IP,也能夠是一個網段。

destination:表示規則對應的目標地址。能夠是一個IP,也能夠是一個網段。

 

使用 --line-numbers 可顯示規則的編號,--line-numbers 選項能夠縮寫成 --line,iptables也能夠識別

[root@localhost ~]# iptables -L -nv --line
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination        
1       34  2556 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           multiport dports 22

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination        

Chain OUTPUT (policy ACCEPT 24 packets, 2256 bytes)
num   pkts bytes target     prot opt in     out     source               destination

聰明的你,必定會注意到括號裏的內容 policy ACCEPT   packets  bytes,他們表示的意思以下:

policy 表示當前鏈的默認策略,policy ACCEPT 表示上圖中INPUT的鏈的默認動做爲ACCEPT,換句話說就是,默認接受經過INPUT 關卡的全部請求,因此咱們在配置INPUT 鏈的具體規則時,應該將須要拒絕的請求配置到規則中,說白了就是「黑名單」機制,默認全部人都能經過,只有指定的人不能經過,當咱們把INPU 鏈默認動做設置爲接受(ACCEPT),就表示全部人都能經過這個關卡,此時就應該在具體的規則中指定須要拒絕的請求,就 表示只有指定的人不能經過這個關卡,這就是黑名單機制,可是,你必定發現了,上圖中所顯示出的規則,大部分都是接受請求(ACCEPT),並非想象中的拒絕請求(DROP或者REJECT),這與咱們所描述的黑名單機制不符啊,按照道理倆說,默認動做爲接受,就應該在具體的規則中配置須要拒絕的人,可是上圖中並非這樣的,之因此出現上圖中的狀況,是由於iptables 的工做機制致使的,上例實際上是利用了這些「機制」,完成了所謂的「白名單」機制,並非咱們所描述的「黑名單」。此處咱們只要明白policy 對應的動做爲鏈的默認動做便可,或者換句話說,咱們只要理解,policy爲鏈的默認策略便可。

 

packets 表示當前鏈(上例爲INPUT 鏈)默認策略匹配到的包的數量,0 packets 表示策略匹配到0個包。

 

bytes 表示當前鏈默認策略匹配到的全部包的大小總和。

其實咱們能夠把packets 和bytes 稱做「計數器」,上圖中的計數器記錄了默認策略匹配到的報文數量與總大小,「計數器」只會在使用 –v 選項時,纔會顯示出來。當被匹配到包達到必定數量是,計數器會自動將匹配到的包的大小轉換爲可讀性較高的單位,以下圖所示。

[root@localhost ~]# iptables -nvL INPUT
Chain INPUT (policy ACCEPT 55578 packets, 332K bytes)

 

若是你想要查看精確的計數值,而不是通過可讀性優化過的計數值,那麼你可使用-x 選項,表示顯示精確的計數值,示例以下。

[root@localhost ~]# iptables -nvxL INPUT
Chain INPUT (policy ACCEPT 380 packets, 33500 bytes)
    pkts      bytes target     prot opt in     out     source               destination        
     127     9448 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           multiport dports 22

 

二. 命令小結

1. iptable –t 表名 –L

查看對應表的全部規則,-t 選項指定要操做的表,省略「-t 表名」 時,默認表示操做filter表,-L 表示列出規則,即查看規則。

 

2. iptables –t 表名 –L 鏈名

查看指定表的指定鏈中的規則

 

3. iptables –t 表名 –v –L

查看指定表的全部規則,而且顯示更詳細的信息(更多字段),-v 表示 verbose,表示詳細的,冗長的,當使用 –v 選項時,會顯示出「計數器」 的信息,因爲上例中使用的選項都是短選項,因此通常簡寫成爲iptables –t 表名 –vL

 

4. iptables –t 表名 –n –L

表示查看錶的全部規則,而且在顯示規則時,不對規則中的IP 或者端口進行名稱反解,-n 選項表示不解析IP 地址。

 

5. iptables –lin-number –t 表名 –L

表示查看錶的全部規則,而且顯示規則的序號,—line-numbers 選項表示顯示規則的序號,注意,此選項爲長選項,不能與其餘短選項合併,不過此選項能夠簡寫爲 –line 注意,簡寫後仍然是兩條橫槓,仍然是長選項。

 

6. iptables –t 表名 –v –x –L

表示查看錶中的全部規則,而且顯示更詳細的信息 (-v 選項),不過,計數器中的信息顯示爲精確的計數值,而不是顯示爲通過可讀優化的計數值,-x 選項表示顯示計數器的精確值。

 

7. iptables –line –t filter –nvxL

爲了方便會將短選項進行合併,將選項粘合在一塊兒,寫成如上命令。

 

8. iptables –line –t filter –nvxL INPUT

能夠只查看某張表中的某條鏈,此處一filter 表的INPUT 鏈爲例

相關文章
相關標籤/搜索