iptables使用詳解( 二 )


否則, 該包會走INPUT鏈
FORWARD 鏈FORWARD在各表中生效的優先順序是:mangle(FORWARD) ----> filter(FORWARD)處理路由決策派發發過來的包 , 到這里的包一般目標網絡地址在PREROUTING鏈被修改過
INPUT 鏈其生效順序是: mangle(INPUT) ----> filter(INPUT)處理路由決策派發發過來的包,到這里的包一般目標網絡地址在PREROUTING鏈沒有被修改過 。
OUTPUT 鏈在目標進程端口接收到輸入數據包后,輸出的數據包,將在這里進行規則應用 。OUTPUT鏈在各表中生效的先后順序是:raw(OUTPUT) ----> mangle(OUTPUT) ----> nat(OUTPUT) ----> filter(OUTPUT)
規則詳解前面鋪墊了那么多,主要講解了鏈的復雜生效時機,畢竟如果包最終都到不了這個鏈,那其中的規則配置也就沒有意義 。接下來,我們需要講解 , 鏈中具體規則的設置和使用 。
一個規則一般分為兩大部分:

  • 匹配: 即哪些數據包會命中這個規則,比如一個指定的ip , 即是一個匹配規則
  • 動作: 匹配到規則之后,需要做什么動作,是放行,還是拒絕 。
動作分為以下幾種:
  • ACCEPT: 直接接受該數據包,不會再走其他鏈條和規則 。比如filter中的input表中的某個規則命中后 , 動作是ACCEPT,那么該數據包將被直接送達目標進程端口 。
  • DROP: 直接拋棄該數據包 , 并且沒有任何返回 。且不會再走其他鏈和規則
  • REJECT: 跟DROP類似,但好歹還是會跟請求方返回一些拒絕信息,比如我們拒絕掉ICMP協議后,ping該主機 , 會返回“destination host unreachable”
  • RETURN: 當前規則不做任何處理,返回 。讓給下一個規則處理
  • LOG : 同RETURN類似,但只是會將請求信息記錄到系統日志中 , 記錄路徑為:/var/log/syslog or /var/log/messages
如何看某個表中有哪些鏈和規則iptables -t nat -nvL --line-numbers-t 表示想要查看那個表,這里查看的是nat表 。iptables的所有命令,如果不指定-t,如果不寫默認是filter表 。-L 表示列出該表所有鏈和所有規則-v 詳細顯示 , 會將規則匹配的進出網口也列出來--line-numbers 表示給規則進行編號處理 。編號能方便我們后續對規則進行修改、刪除等操作
iptables使用詳解

文章插圖
如圖所示,表頭有以下信息:
  • num 表示當前規則編號,從1開始
  • in 表示該規則會匹配那些的輸入網口,如果包是由該網口輸入,則會被匹配
  • out 表示該規則會匹配的目標網口,如果包的目標網口是該網口,則會被匹配
  • source 表示該規則匹配的具體源ip范圍
  • destination 表示該規則匹配的具體目標ip范圍
總結來看 , 其實一個數據包本身就有源、目標的一些信息,而規則就是基于數據包本身屬性的特點進行規則設定 。
在已知鏈末尾添加規則(舉例 , 拒絕某個ip的訪問)iptables -t filter -A INPUT -s 59.45.175.62 -j REJECT
-A 表示Append,其后緊跟的是鏈的名稱,表示該條規則要被添加到哪個鏈中 。-s 表示包的來源ip即source 。除了指定固定的ip外,我們還可以指定ip范圍,比如59.45.175.0/24-j 表示jump 也即是我們最終的動作,這里的動作是拒絕
在已知鏈鏈首插入規則鏈尾的規則匹配優先級最低,如果前面有規則被匹配后,并將數據包進行了終態處理(比如:ACCEPT, DROP, REJECT),那么鏈尾的規則將永遠不會被使用 。
如果我們想要該規則優先匹配,可以選擇將其放入鏈首 , 使用-I參數,表示insert 。舉例:
iptables -t filter -I INPUT -s 59.45.175.62 -j REJECT刪除規則想要刪除已配置的規則,可以使用-D參數,參數
iptables -t filter -D INPUT -s 59.45.175.62 -j REJECT這種刪法,要我們明確知道當初添加進去的規則是怎么寫的 。如果忘了 , 我們可以通過規則編號進行刪除 。在查看規則時使用參數--line-numbers(例如:iptables -nvL --line-numbers),可以對規則進行編號,然后基于編號進行刪除
iptables使用詳解

文章插圖
iptables -t filter -D FOWARD 1 //表示刪除filter表中的FORWARD鏈的第一條規則

推薦閱讀