在 Linux iptables 中,鏈式規則是一種組織和管理防火墻規則的方式
鏈(Chain):鏈是一系列規則的集合,用于處理特定類型的數據包。iptables 有三個內置鏈:INPUT(處理輸入數據包)、OUTPUT(處理輸出數據包)和 FORWARD(處理轉發數據包)。用戶也可以創建自定義鏈。
規則(Rule):規則是基于特定條件對數據包執行操作的指令。規則包含匹配條件和目標(接受、丟棄或轉發數據包)。
匹配條件(Match condition):匹配條件用于確定數據包是否滿足規則的要求。例如,源 IP 地址、目的 IP 地址、協議類型等都可以作為匹配條件。
目標(Target):目標定義了滿足匹配條件的數據包應該如何處理。iptables 有四個內置目標:ACCEPT(接受數據包)、DROP(丟棄數據包)、QUEUE(將數據包放入隊列)和 RETURN(返回到上一個鏈)。用戶也可以創建自定義目標。
鏈式規則的理解可以通過以下示例來說明:
假設我們有一個防火墻規則,允許來自特定 IP 地址的 SSH 連接,同時拒絕所有其他 SSH 連接。我們可以使用以下兩個規則實現這個目標:
# 允許來自 192.168.1.100 的 SSH 連接
INPUT -s 192.168.1.100 -p tcp --dport 22 -j ACCEPT
# 拒絕所有其他 SSH 連接
INPUT -p tcp --dport 22 -j DROP
在這個例子中,我們使用了兩個規則,分別屬于 INPUT 鏈。第一個規則允許來自 IP 地址為 192.168.1.100 的 SSH 連接,第二個規則拒絕所有其他 SSH 連接。通過將這兩個規則放在 INPUT 鏈中,我們可以實現所需的防火墻策略。