影響 POSTROUTING 鏈中或之後的出站介面選擇嗎?

影響 POSTROUTING 鏈中或之後的出站介面選擇嗎?

我有一個託管多個 KVM 實例的系統。所有這些都連接到一個橋(例如brvirt),該橋也連接到eth1。此第 2 層環境位於使用 172.16.10.0/24 進行位址變更的專用網路。系統上還有另外兩個接口,我們稱之為eth0(10.10.10.10) 和eth2(10.10.20.20)。

一般來說,外部連線是透過SNAT位址提供的eth0(主機的預設閘道也在該介面之外)。為了一些系統,我想要SNAT在 10.10.20.0/24 網路上有一個明確的 1-1 規則,該規則附加到eth2

POSTROUTING這是一個問題,因為當我們點擊鏈執行出站介面選擇時SNAT已經做出了。核心已經選擇了預設路由(假設連接到除直接連接網路之外的任何其他網路),這意味著當規則SNAT修改來源IP 位址時,本地路由基礎設施會丟棄資料包,因為它源自錯誤的第2層網路。

有沒有辦法解決?我什麼真的想要做的是根據鏈末端資料包的來源位址做出路由決策POSTROUTING......但它的呼叫是POSTROUTING有充分理由的。

答案1

這可以透過簡單的基於策略的路由來完成。

您將需要一組具有以下模式的規則和路由:

ip rule add from 172.16.10.X iif brvirt lookup 200
ip route add default via 1.2.3.4 src 4.3.2.1 dev ethY table 200

變數:

172.16.10.X = KVM's IP
200         = Example value for routing_table, has to be unique for each KVM
ethY        = either eth0 or eth2
1.2.3.4     = Example Gateway on iface ethY
4.3.2.1     = Example Source-IP for each KVM

172.16.10.X這將路由來自指定 iface 的任何內容ethY,其來源位址為4.3.2.1

您也可以使用更複雜的方法,fwmarks但我認為在這種情況下不需要這樣做。

您可以使用以下方式驗證路線:ip route get iif brvirt from 172.16.10.X 8.8.8.8。這將顯示核心用於從172.16.10.X到 的連接的路由和輸出設備8.8.8.8

希望它能回答你的問題,

fo

相關內容