目錄
一、防火墻基礎:netfilter 與 iptables 的關系
1??什么是 netfilter?
2??什么是 iptables?
二、iptables 核心:五鏈四表與規則體系
1??什么是 “鏈”(Chain)?
2?? 什么是 “表”(Table)?
3??規則與動作:數據包的 “處理指令”
常用動作(Target):
三、iptables 數據包匹配流程:數據是如何 “闖關” 的?
1??表的處理順序
2??鏈的處理順序:按數據包流向區分
3??鏈內規則的匹配邏輯
四、新一代防火墻:nftables 的崛起
1??nftables 的核心優勢
2??支持 nftables 的 Linux 發行版
3??基本操作命令
五、總結:學習路徑與應用建議
對于 Linux 初學者來說,防火墻是保障系統網絡安全的核心工具。無論是限制非法訪問、管理端口權限,還是實現內外網通信,都離不開防火墻技術。
一、防火墻基礎:netfilter 與 iptables 的關系
在學習具體工具前,我們需要先理清兩個核心概念:netfilter和iptables,這是理解 Linux 防火墻的基礎。
1??什么是 netfilter?
netfilter 是 Linux 內核中的 “安全框架”,屬于內核空間(Kernel Space)。它就像系統內部的 “交通指揮中心”,在網絡數據包經過協議棧的關鍵位置(稱為 “鉤子點”)注冊了處理函數,負責抓取數據包、匹配規則并執行處理動作(如允許、拒絕)。
簡單說,netfilter 是 “真正干活的”,它具備三大核心功能:
- 網絡地址轉換(NAT):修改數據包的源 / 目的 IP 或端口;
- 數據包內容修改:如調整 TTL(生存周期)、TOS(服務類型);
- 數據包過濾:決定是否允許數據包通過。
2??什么是 iptables?
iptables 并非真正的防火墻,而是一個位于用戶空間的命令行工具。它的作用是 “翻譯” 管理員的配置(規則),并將這些規則傳遞給內核中的 netfilter 框架。
打個比方:如果 netfilter 是 “工廠生產線”,iptables 就是 “操作面板”—— 管理員通過 iptables 設置規則,netfilter 則按照規則處理數據包。
iptables 的核心功能是:
- 控制進出系統的數據包流向(過濾);
- 實現網絡地址轉換(NAT);
- 自定義安全策略,增強系統安全性。
二、iptables 核心:五鏈四表與規則體系
iptables 的規則管理依賴 “表” 和 “鏈” 的分層結構,這是它的核心設計。理解 “五鏈四表”,就能掌握 iptables 的大半邏輯。
1??什么是 “鏈”(Chain)?
鏈是規則的 “容器”,相當于數據包經過的 “關卡”。Linux 內核預設了 5 條鏈,分別對應數據包在網絡流程中的 5 個關鍵節點:
鏈名稱 | 作用場景 | 核心功能 |
---|---|---|
INPUT | 數據包目標是防火墻本機(入站) | 控制哪些數據包能進入本機(如限制 SSH 訪問),管理ICMP數據包(如ping請求) |
OUTPUT | 數據包由防火墻本機發出(出站) | 控制本機能發送哪些數據包(如禁止訪問特定 IP) |
FORWARD | 數據包需要經防火墻轉發到其他地址 | 管理內網到外網、或不同網段間的轉發(如端口映射),允許轉發來自特定源IP地址的TCP端口80(HTTP)的數據包 |
PREROUTING | 數據包進入系統后,路由選擇前 | 主要用于目標地址轉換(DNAT,如外部訪問內網服務),將數據包的目標地址從公網地址轉換為私有地址,用于實現NAT網關功能 |
POSTROUTING | 數據包經過路由選擇后,發送到網絡接口前 | 主要用于源地址轉換(SNAT,如內網共享公網 IP 上網),將內部私有IP地址轉換為公網IP地址,實現內部網絡訪問互聯網的功能 |
2?? 什么是 “表”(Table)?
表是 “功能相同的規則集合”,相當于給規則 “分類歸檔”。iptables 預設了 4 種表,每種表對應特定功能:
表名稱 | 功能描述 | 包含的鏈 | 內核模塊 |
---|---|---|---|
filter | 最常用,負責數據包過濾(允許 / 拒絕) | INPUT、OUTPUT、FORWARD | iptable_filter |
nat | 實現網絡地址轉換(NAT) | PREROUTING、POSTROUTING、OUTPUT | iptable_nat |
mangle | 修改數據包屬性(如 TTL、標記) | 所有 5 條鏈(INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING) | iptable_mangle |
raw | 關閉連接追蹤(提高性能) | PREROUTING、OUTPUT | iptable_raw |
3??規則與動作:數據包的 “處理指令”
規則是管理員定義的 “條件 + 動作”:當數據包滿足條件(如源 IP、端口、協議)時,執行預設動作。
常用動作(Target):
- ACCEPT:允許數據包通過,繼續后續流程;
- DROP:直接丟棄數據包,不回復(客戶端會等待超時);
- REJECT:拒絕數據包,并向客戶端發送 “拒絕響應”;
- SNAT:修改源 IP(如內網 IP→公網 IP,解決多設備共享上網);
- DNAT:修改目標 IP(如公網 IP→內網服務器 IP,實現外部訪問內網服務);
- MASQUERADE:SNAT 的特殊形式,適用于公網 IP 動態變化的場景(如撥號上網);
- LOG:將數據包信息記錄到
/var/log/messages
,不中斷后續規則匹配。
注意:除 LOG 外,其他動作匹配后會 “停止后續規則檢查”,因此規則順序極其重要(先嚴格后寬松)。
三、iptables 數據包匹配流程:數據是如何 “闖關” 的?
數據包進入系統后,會按固定順序經過表和鏈的檢查,這個流程是理解 iptables 的關鍵。
1??表的處理順序
當數據包到達時,表的檢查順序固定為:
raw表 → mangle表 → nat表 → filter表
2??鏈的處理順序:按數據包流向區分
根據數據包的 “去向”(入站、出站、轉發),鏈的檢查順序不同:
-
入站數據(目標是本機):
PREROUTING鏈(raw→mangle→nat) → 路由選擇 → INPUT鏈(mangle→filter) → 本機應用
-
出站數據(本機發出):
本機應用 → OUTPUT鏈(raw→mangle→nat→filter) → 路由選擇 → POSTROUTING鏈(mangle→nat)
-
轉發數據(經本機轉發):
PREROUTING鏈(raw→mangle→nat) → 路由選擇 → FORWARD鏈(mangle→filter) → POSTROUTING鏈(mangle→nat)
3??鏈內規則的匹配邏輯
每條鏈中的規則按 “從上到下” 順序檢查:
- 一旦匹配到規則(除 LOG 外),立即執行動作并停止檢查后續規則;
- 若所有規則都不匹配,則按鏈的 “默認策略” 處理(通常是 ACCEPT 或 DROP)。
四、新一代防火墻:nftables 的崛起
iptables 雖然經典,但存在一些局限:規則管理復雜、IPv4/IPv6 需分開配置、大規模規則下性能下降等。為此,Linux 推出了新一代工具 ——nftables。
1??nftables 的核心優勢
nftables 是內核中的新框架,目標是替代 iptables、ip6tables 等分散工具,它的改進主要體現在:
- 統一管理:一個
nft
命令即可處理 IPv4、IPv6、ARP、網橋等所有類型的數據包,告別工具混亂; - 更靈活的表與鏈:表需指定 “地址族”(如 ip、ip6、inet 同時支持 IPv4/IPv6),鏈需指定 “類型”(filter/nat)和 “鉤子點”(如 prerouting),并可自定義優先級;
- 簡潔語法:規則更接近自然語言,例如 “允許來自 192.168.1.0/24 的 SSH 訪問” 可直接表達;
- 高級數據結構:內置集合(Sets)、映射(Maps)等,支持高效匹配大量 IP / 端口(無需依賴外部工具);
- 事務性操作:規則修改要么全成功,要么全回滾,避免中間狀態不一致。
2??支持 nftables 的 Linux 發行版
nftables 自 Linux 3.13 內核引入,目前主流發行版已廣泛支持:
- Ubuntu 20.04+、Debian 9 + 默認支持;
- Fedora 22+、Arch Linux 默認支持;
- CentOS 8/RHEL 8 + 默認通過 firewalld 基于 nftables 運行。
3??基本操作命令
- 查看內核版本:
uname -r
(確認是否支持 nftables); - 查看 nftables 服務狀態:
systemctl status nftables
; - 切換 iptables 到 nftables 模式(部分系統):
sudo update-alternatives --set iptables /usr/sbin/iptables-nft
。
五、總結:學習路徑與應用建議
對于初學者,建議按以下步驟學習:
- 先掌握 iptables 的基礎:理解 netfilter 與 iptables 的關系,牢記 “五鏈四表” 的功能和應用場景;
- 實踐規則配置:從簡單的端口過濾(如允許 SSH、禁止 ping)開始,逐步嘗試 NAT 轉換;
- 了解 nftables 的優勢:作為新一代工具,它是未來趨勢,掌握其基本概念即可應對進階需求。
Linux 防火墻技術看似復雜,但核心是 “通過規則控制數據包流向”。只要理清表、鏈、規則的邏輯,多動手實踐,就能快速上手,為系統搭建堅實的安全屏障。