- 鏈 chain 包含五種,封包在 iptables 的過濾情形,如紅帽官網上的封包過濾圖。
- INPUT : 應用於進入本主機的網路封包。
- OUTPUT : 應用於由本主機送出的網路封包。
- FORWARD : 應用於經由本主機轉送的網路封包。
- PREROUTING : 應用於進行路由前的網路封包。
- POSTORTING : 應用於被送出前的網路封包。
- 並不是每種表格都包含所有的鏈,各 table 內建鏈如下:
- filter table 內建鏈:INPUT, OUTPUT, FORWARD。
- nat table 內建鏈:PREROUTING, OUTPUT, POSTROUTING。
- mangle table 內建鏈:INPUT, OUTPUT, FORWARD, PREROUTING, POSTROUTING。
- raw table 內建鏈:OUTPUT, PREROUTING。
- security table 內建鏈:INPUT, OUTPUT, FORWARD。
- 如果不啟動 NAT 功能的 Linux 主機,只要使用過濾表格 filter 的 INPUT 及 OUTPUT 鏈就夠了。
- 啟用 NAT 主機,除過濾功能外,還要考慮 FORWARD 轉送功能,且要使用位址轉換表格的 POSTROUTING 鏈,將符合規則的封包,其封包位址由內網私有 IP 偽裝 (MASQUERADE) 成 NAT 對外 IP,才能連上網際網路。
- 鏈的命令選項:
- -A, –append chain rule-specification
在最後加入一條鏈
- -D, –delete chain rule-specification
刪除一條鏈
- -D, –delete chain rulenum
刪除一條或多條鏈,rulenum 為規則的編號
- -I, –insert chain [rulenum] rule-specification
在 rulenum 前加入一條鏈,預設 rulenum 為 1。
- -R, –replace chain rulenum rule-specification
取代某一條鏈的規則
- -L, –list [chain]
列出目前的鏈,不指定則列出所有的鏈。
- -S, –list-rules [chain]
列出指定鏈的所有規則,不指定鏈,則列出所有鏈的所有規則,類似 iptables-save
。
- -F, –flush [chain]
清除指定的鏈,不指定鏈,則清除所有的鏈。
- -Z, –zero [chain [rulenum]]
重設(歸零)流量記數器(counter)。當執行完 -L
後再執行 -Z
命令,某些封包可能會在這期間通過。因此,可以把 -L
及 -Z
同時使用,在讀取的同時進行記數器重設。
- -N, –new-chain chain
產生用戶自訂的鏈。
- -X, –delete-chain [chain]
刪除用戶自的的鏈。
- -P, –policy chain target
設定指定鏈的政策到給予的 target,
- -E, –rename-chain old-chain new-chain
重新命名指定的鏈。