[Linux入門] Linux 防火墻技術入門:從 iptables 到 nftables

目錄

一、防火墻基礎: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、FORWARDiptable_filter
nat實現網絡地址轉換(NAT)PREROUTING、POSTROUTING、OUTPUTiptable_nat
mangle修改數據包屬性(如 TTL、標記)所有 5 條鏈(INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING)iptable_mangle
raw關閉連接追蹤(提高性能)PREROUTING、OUTPUTiptable_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

五、總結:學習路徑與應用建議

對于初學者,建議按以下步驟學習:

  1. 先掌握 iptables 的基礎:理解 netfilter 與 iptables 的關系,牢記 “五鏈四表” 的功能和應用場景;
  2. 實踐規則配置:從簡單的端口過濾(如允許 SSH、禁止 ping)開始,逐步嘗試 NAT 轉換;
  3. 了解 nftables 的優勢:作為新一代工具,它是未來趨勢,掌握其基本概念即可應對進階需求。

Linux 防火墻技術看似復雜,但核心是 “通過規則控制數據包流向”。只要理清表、鏈、規則的邏輯,多動手實踐,就能快速上手,為系統搭建堅實的安全屏障。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/917195.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/917195.shtml
英文地址,請注明出處:http://en.pswp.cn/news/917195.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

函數fdopendir的用法

以下是關于 fdopendir 函數的詳細解析,結合其核心功能、參數說明及典型應用場景:🔍 ?一、函數功能與原型??核心作用?將已打開的目錄文件描述符(fd)轉換為目錄流指針(DIR*),用于后…

[源力覺醒 創作者計劃]_文心4.5開源測評:國產大模型的技術突破與多維度能力解析

聲明:文章為本人真實測評博客,非廣告,并沒有推廣該平臺 ,為用戶體驗文章 一起來輕松玩轉文心大模型吧👉 文心大模型免費下載地址 一、引言:文心4.5開源——開啟多模態大模型新時代 2025年6月30日&#x…

微信小程序無法構建npm,可能是如下幾個原因

安裝位置的問題,【npm安裝在cd指定位置】小程序緩存的問題退出小程序,重新構建即可

從 MyBatis 到 MyBatis - Plus:@Options 注解的那些事兒

在 MyBatis 以及 MyBatis - Plus 的開發過程中,注解的使用是提升開發效率和實現特定功能的關鍵。今天我們就來聊聊 Options 注解,以及在 MyBatis - Plus 中它的使用場景和替代方案。 一、MyBatis 中的 Options 注解 在 MyBatis 框架中,Option…

轉換圖(State Transition Diagram)和時序圖(Sequence Diagram)畫圖流程圖工具

針對程序員繪制狀態轉換圖(State Transition Diagram)和時序圖(Sequence Diagram)的需求,以下是一些好用的工具推薦,涵蓋在線工具、桌面軟件和基于文本的工具,適合不同場景和偏好。這些工具在易…

基于php的在線酒店管理系統(源代碼+文檔+PPT+調試+講解)

課題摘要在旅游住宿行業數字化轉型的背景下,傳統酒店管理存在房態更新滯后、預訂渠道分散等問題。基于 PHP 的在線酒店管理系統,憑借其開發高效、兼容性強的特點,構建集客房管理、預訂處理、客戶服務于一體的綜合性管理平臺。 系統核心功能包…

視頻質量檢測中卡頓識別準確率↑32%:陌訊多模態評估框架實戰解析

原創聲明本文為原創技術解析,核心技術參數與架構設計引用自《陌訊技術白皮書》,禁止未經授權的轉載與改編。一、行業痛點:視頻質量檢測的現實挑戰在實時流媒體、在線教育、安防監控等領域,視頻質量直接影響用戶體驗與業務可信度。…

流式輸出阻塞原因及解決辦法

流式輸出不懂可看這篇文章:流式輸出:概念、技巧與常見問題 正常情況,如下代碼所示: async def event_generator():# 先輸出數字1yield "data: 1\n\n"# 然后每隔2秒輸出數字2,共輸出10次for i in range(10):…

linux系統----Ansible中的playbook簡單應用

目錄 Playbooks中tasks語法使用 1、file 創建文件:touch 創建目錄:directory 2、lineinfile 修改文件某一行文本 3、replace 根據正則表達式替換文件內容(指定換字符串) 5、template/copy 模板作用類似于copy&#xff0…

bmcweb工作流程

在openbmc中,bmcweb是一個web服務程序,類似于lighttpd,提供web服務。本文將簡單介紹這個服務進程的執行流程。 bmcweb的入口函數main(). main() -> run() run()先注冊routes,最后調用app.run(). 第一個注冊的route為crow::webassets:requestRoutes(). crow::webasse…

傘狀Meta分析重構癌癥幸存者照護指南:從矛盾證據到精準決策

還記得你第一次做出Meta分析時的成就感嗎?那種從海量文獻中抽絲剝繭,最終得出可靠結論的感覺,簡直不要太爽!但是,時代在進步,科研在卷動,Meta分析也有它的"升級版"——傘狀Meta分析&a…

IOMMU Client設備DMA配置過程分析(九)

1.設備樹 cp0_pcie0是一個PCIe RC控制器,使用SMMU將PCIe設備的IOVA轉換成物理地址,使用iommu-map-mask和iommu-map定義PCIe設備使用的Stream ID。設備樹定義如下所示。 [arch/arm64/boot/dts/marvell/armada-ap80x.dtsi] smmu: iommu100000 {compatibl…

使用node-cron實現Node.js定時任務

1. 簡介 node-cron 是一個輕量級的Node.js庫,用于在指定時間或間隔執行任務。它是Unix系統cron工具的JavaScript實現,適用于需要定時執行腳本的場景(如數據備份、定期爬蟲等)。 2. 安裝 npm install node-cron # 或 yarn add node…

前綴和-525.連續數組-力扣(LeetCode)

一、題目解析1、只包含0、1的二進制數組2、找到含有相同數量的0和1,并返回其子數組長度二、算法原理解法1:暴力枚舉 時間復雜度O(N^2)解法2:前綴和哈希表對于統計子數組中的0和1的數量有點困難,我們可以將其轉化一下轉化&#xff…

汽車電子控制系統開發的整體安全理念

1. 摘要在汽車制造商和一級供應商避免責任的背景下,公認的技術規則作為法律要求的標準具有重要的實際意義。道路車輛電子控制單元的安全性目前主要通過 ISO 26262 的要求和流程來保障。特別是隨著道路交通自動化程度的不斷提高以及現代車輛隨之而來的復雜性&#xf…

IDEA重新安裝常用設置

IDEA重新安裝常用設置 展示固定導航欄 項目構建和運行操作委托給maven 參考:IDEA build委托到Maven build

微服務的編程測評系統9-競賽新增-競賽編輯

提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔 文章目錄前言1. 競賽新增1.1 競賽基本信息增加-后端開發1.2 競賽新增題目-后端1.3 競賽基本信息-前端1.4 競賽新增題目-前端2. 競賽編輯2.1 競賽詳情-后端2.2 競賽詳情-前端2…

《零基礎入門AI:線性回歸進階(梯度下降算法詳解)》

在上一篇博客中,我們學習了線性回歸的基本概念、損失函數(如MSE)以及最小二乘法。最小二乘法通過求解解析解(直接計算出最優參數)的方式得到線性回歸模型,但它有一個明顯的局限:當特征數量很多時…

基于C語言實現的KV存儲引擎(一)

基于C語言實現的KV存儲引擎項目簡介整體架構網絡模塊的實現recatorproactorNtyco項目簡介 本文主要是基于 C 語言來實現一個簡單的 KV 存儲架構,目的就是將網絡模塊跟實際開發結合起來。 首先我們知道對于數據的存儲可以分為兩種方式,一種是在內存中進…

c++和python聯合編程示例

安裝 C與 Python 綁定工具 pip install pybind11這其實相當于使用 python 安裝了一個 c的庫 pybind11,這個庫只由頭文件構成, 支持基礎數據類型傳遞以及 python 的 numpy 和 c的 eigen 庫之間的自動轉換。 編寫 CMakeList.txt cmake_minimum_required(VERSION 3.14)…