Linux 網路

最後更新: 2026-06-17 09:53:22 +0800 +0800
原文以英文撰寫。您正在閱讀AI翻譯版本。

Linux 透過支援網路命名空間的介面公開網路狀態。自 Linux 2.6.25 起, /proc/net 是指向 /proc/self/net 的相容性符號連結,因此它描述的是執行讀取操作之程序所在的 網路命名空間。現代工具通常使用 Netlink,而不是解析 procfs。

IPv4 轉送資訊庫(FIB)決定封包的傳送位置。 /proc/net/route 是它的歷史檢視;ip route 則透過 Netlink 查詢和變更核心。Netlink 是一種 以訊息為導向的通訊端家族,讓使用者空間無需新增系統呼叫即可設定和檢查核心子系統。 路由、連結、位址、鄰居、流量控制和 Netfilter 都使用它。

Netfilter 與 iptables #

Netfilter 在網路堆疊中提供封包處理掛鉤。iptables 是用於 IPv4 的傳統使用者空間規則管理工具 (IPv6 使用 ip6tables);目前的系統通常使用 nftables,但其相容層仍可接受 iptables 語法。

重要的 iptables 表包括:

  • filter 是預設的過濾表,包含 INPUT、FORWARD 和 OUTPUT 鏈。
  • nat 對連線的第一個封包執行位址或連接埠轉譯,並包含 PREROUTING、INPUT、OUTPUT 和 POSTROUTING 鏈。
  • mangle 在多個掛鉤處修改特殊的封包欄位。
  • raw 在連線追蹤之前執行,並可透過 NOTRACK 讓流量免於連線追蹤。
  • security 在過濾表之後套用強制存取控制標籤,用於 SELinux 及相關 Linux Security Module 原則。

規則會依照鏈中的順序進行評估。INPUT 套用於傳送至本機通訊端的封包,FORWARD 套用於經過路由的流量, 而 OUTPUT 套用於本機產生的封包。連線追蹤讓後續封包能夠遵循針對其流程所作出的決定。

評論

在 GitHub 上閱讀或評論(發表評論需要登入)