Iptables
在“iptables”的生命週期中,核心會在哪一步利用“路由表”?
iptables
. 我瀏覽了 Iptables 的手冊並了解了一些基本概念,例如鍊、表、鉤子、規則和目標。在 Linux 生態系統中,iptables 是一個廣泛使用的防火牆工具,它與核心的 netfilter 包過濾框架介面。route table
. 在 Linux 中,還有另一個表route table
。我試圖弄清楚它們之間的關係並將它們放在一張大圖中。
這是一個很好的圖表來顯示 iptables 的流程,有兩個
route
階段。在哪一步,核心會利用“路由表”嗎?參考
- DigitalOcean:深入了解 Iptables 和 Netfilter 架構
- 我讀過這個問題“ StackOverflow:iptables vs route 有什麼區別? ”,但它沒有回答我的問題。
在兩個“路線”步驟中。一種用於傳入數據包,一種用於從本地應用程序創建的數據包。
請注意,iptables 和路由適用於兩個完全不同的概念:路由回答“這個數據包應該發送到哪裡?”的問題,而 iptables 回答“我需要過濾或以某種方式特別處理這個數據包嗎?”的問題。
雖然您可以濫用過濾過程來強制將數據包傳送到某個地方,但這不是初衷,但網際網路上太多的人認為他們必須以某種方式這樣做。(對咆哮感到抱歉,這是我最討厭的事情之一)。
iptables 根據數據包內容或數據包定址決定如何使用以下一項或多項操作來響應數據包:
- 過濾器:忽略、拒絕或接受數據包(防火牆)
- mangle :更改數據包,包括 NAT 重寫
如您的圖表所示,適當的 iptables(藍色)可以在每個路由步驟之前和之後參與。
路由表完全根據標頭中的地址決定數據包的去向:
- 輸入路由決定它是在本地接受(進入 iptables INPUT 表)還是轉發(iptables FORWARD 表);如果相應的 ip 表為空或表接受數據包,則數據包將分別發送到偵聽應用程序或(如果啟用了轉發),發送到輸出路由。
- 輸出路由獲取轉發的數據包和應用程序發送的數據包。然後它決定將數據包發送到哪個網路介面,以及是否將其直接發送到其目標主機(與介面在同一網路上),還是發送到外部路由器
- 標有“本地程序”的框不是路由步驟,而是代表系統上正在接收數據包或發出新數據包的本地應用程序——兩個可能不相關的操作。
轉發可能需要更多解釋。當一個 linux 機器啟用了轉發功能時,它就像一個路由器。通常,這意味著它有多個網路介面,它可能會接收到不是發往本地系統的數據包,而是發往與接收它的介面不同的介面上的網路。在乙太網中,每個數據包都有一個乙太網 (LAN) 地址和一個用於源和目標的 IP 地址。通過將路由器的乙太網地址和 WAN IP 地址放入相應的目標地址,您可以將數據包發送到 WAN 地址。然後路由器(可能是另一個 linux 機器)將通過其路由表執行該數據包並確定將其發送到的下一個網路。