內建鏈 chains

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