總結:
iptables 的關鍵概念和功能:
規則(Rules):
-
iptables 使用規則來定義特定的操作,例如允許或拒絕特定類型的網絡流量。每條規則都由條件和操作組成。條件可以是源 IP 地址、目標 IP 地址、端口號等,操作可以是允許、拒絕或修改數據包。
表(Tables):
-
iptables 包含多個表,每個表用于處理特定類型的數據包。常用的表包括:
- filter 表: 用于過濾數據包,實現基本的包過濾功能,如允許或拒絕特定端口的數據包。
- nat 表: 用于網絡地址轉換(NAT),實現在不同網絡之間進行數據包轉發和地址轉換。
- mangle 表: 用于修改數據包的特定字段,如修改 TOS、TTL 等。
- raw 表: 用于禁用連接跟蹤機制,通常用于某些特殊場景下的數據包處理。
-
鏈(Chains): 每個表包含多個鏈,鏈是一系列規則的集合,用于處理數據包。常用的鏈包括:
- INPUT 鏈: 處理進入系統的數據包。
- OUTPUT 鏈: 處理離開系統的數據包。
- FORWARD 鏈: 處理通過系統轉發的數據包。
- PREROUTING 鏈: 在路由之前處理數據包,適用于 NAT。
- POSTROUTING 鏈: 在路由之后處理數據包,適用于 NAT。
-
匹配(Matching): 每個規則都包含一個或多個匹配條件,用于確定是否對數據包執行操作。匹配條件可以包括源 IP 地址、目標 IP 地址、協議、端口等。
-
動作(Actions): 規則匹配后,根據定義的操作來處理數據包。常見的動作包括 ACCEPT(允許通過)、DROP(丟棄數據包)和REJECT(拒絕數據包并發送拒絕消息)。
查看規則和狀態:
查看當前的 iptables 規則和狀態:
iptables -L
iptables -L -n # 顯示數字格式的 IP 地址而不是域名
iptables -L -v # 顯示詳細信息
添加規則:
添加一條允許 SSH(端口 22)流量的規則:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
添加一條拒絕 ICMP 回應的規則:
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
刪除規則:
刪除某一條規則,可以使用 -D
參數加上規則編號(在列表中顯示的編號):
iptables -D INPUT 2 # 刪除 INPUT 鏈中的第二條規則
保存和加載規則:
保存當前的 iptables 規則到文件中:
iptables-save > /etc/iptables/rules.v4
加載之前保存的規則文件:
iptables-restore < /etc/iptables/rules.v4
清空規則:
清空所有規則,但保留默認策略:
iptables -F
清空所有規則和默認策略:
iptables -F
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
設置默認策略:
設置默認策略為拒絕所有輸入流量:
iptables -P INPUT DROP