橋接和 iptables SNAT 衝突

橋接和 iptables SNAT 衝突

我正在這裡進行一項設置,並讓它正常工作,但有一個小例外。

我的網橋一側的裝置未透過 SNAT 連接到 Internet。


圖表/概述:

                Primary_Network (Site_A)
                        |
                        |
Internet ------- Linux_Bridge_GW (GW)
                        |
                        |
                 Secondary/CoLo Site (Site_B)

這是設定:

  1. Site_A 擁有所有生產伺服器和工作站。
  2. Site_B 有一組伺服器,我們希望將故障轉移到這些伺服器,並從中提供面向網際網路的服務。
  3. GW 有兩個接口,它們被中繼並承載適當的 VLAN 流量(允許站點之間流量的第 2 層傳播)//這一切都運作得很好。
  4. 遇到的問題是,來自 Site_B 的主機在 Site_A(同一子網路)上有其預設 GW,GW 在正在傳遞的 VLAN 上沒有 IP。
  5. Site_A 上的所有主機都可以毫無問題地存取 Internet。
  6. GW 在子網路上有一個位址,僅用於網際網路目標流量。 (這樣做是為了 Websense 不必解析不必要的流量。我們使用此 VLAN 作為 Websense 所在交換器上的監控連接埠來源)。

我認為正在發生的事情:

  1. 封包/訊框進入位於 Site_B 的 physdev,發送到 Internet。
  2. 核心看到資料包,並將其從網橋的另一端轉送到該主機的預設閘道。
  3. Site_A(包含核心網路的預設閘道)發現該封包的目的地是它不知道的主機,因此它將其傳送到它的預設閘道(linux 橋,因為它是 Internet 綁定的)。
  4. 核心會說“嘿,我以前見過你”,因此不會對資料包進行 SNAT 並將其發送到互聯網上的黑洞。

為什麼我認為它會發生:

  1. 面向 NIC 的互聯網上的 tcpdump 顯示封包離開接口,並將私有位址作為其來源。

我想要什麼:

  1. 對資料包進行 SNAT。
  2. 像下面這樣的東西會很棒
    • 資料包來自 Site_B
    • 核心發現資料包不是發送到其自身或任何私有位址的
    • 核心說:“好吧,既然你注定要上網,我將把這個介面發送給你,而不是將你轉發到你的正常預設網關,即那裡的 WAAAY。”
    • 封包來自互聯網,並根據其目的地主機所在的站點發送到適當的網橋 physdev。

答案1

如果封包被橋接,當然 iptables 將永遠不會看到它們。

解決方案?使用 ebtables 將網際網路綁定封包重新導向到機器,以便它們得到 SNAT 處理(我會使用 -j REDIRECT 進行 MAC 修改)

相關內容