為什麼我會看到來自另一個 VLAN 上的電腦的單播封包?

為什麼我會看到來自另一個 VLAN 上的電腦的單播封包?

我(仍在)嘗試在 3 級交換器 (Netgear GS516TP) 上正確配置 VLAN。

基本場景:有3個VLAN:VLAN 10、11、12,分別有3個連接埠、3台機器。

  • 10.0.10.5,連接到連接埠 g10,屬於 VLAN 10。
  • 10.0.11.5,連接到連接埠 g11,屬於 VLAN 11。
  • 10.0.12.5,連接到連接埠 g12,屬於 VLAN 12。

在此輸入影像描述

VLAN 10 具有未標記的連接埠 g10、g11 和 g12。

在此輸入影像描述

VLAN 11 具有未標記的連接埠 g10 和 g11。同樣,VLAN 12 具有未標記的連接埠 g10 和 g12。

在此輸入影像描述

目標是使屬於 VLAN 11 和 VLAN 12 的電腦能夠與 VLAN 10 中的電腦進行通訊。

雖然所有三台機器都使用網路遮罩 255.255.0.0,但路由配置設定如下:

在此輸入影像描述

現在,問題來了。當我從 10.0.10.5 向 10.0.11.5 發送 TCP 或 UDP 封包時(例如透過執行nc -n 10.0.11.5 100),我可以在屬於 VLAN 12 的電腦上執行的 Wireshark 中看到該封包。 10.0.11.5 傳送的資料包在VLAN 12 中不可見。

我該怎麼做才能讓來自 VLAN 11 的目標電腦的資料包永遠不會到達屬於 VLAN 12 的連接埠?

答案1

預設情況下,每個連接埠僅使用 L2 資訊來決定如何處理封包(L2 == MAC == 橋)。該決定不尊重 L3,即它不知道 VLAN 的 IP 範圍。

如果為 VLAN 啟用路由,且入站單播封包的 MAC DA [目標位址] 是內部橋接路由器介面的 MAC DA [目標位址],則會路由該封包。

您指派給 VLAN 的 IP 位址(在上一張螢幕截圖中可見)本身不會「擷取」封包。您需要將伺服器設定為實際將封包傳送到「內部橋接路由器介面」;通常,這是透過在伺服器上新增路由表條目來完成的:

(on 10.0.10.5):
10.0.11.0/24 dev eth0 via 10.0.10.1

只有發送到該「內部橋接路由器介面」的封包才會移動到另一個 VLAN。

在我的例子中,一步一步:

  1. 在 10.0.10.5 你做ping 10.0.11.5
  2. 伺服器詢問“誰有 10.0.10.1”
  3. 交換器顯示“MAC 10:da:12:34 有 10.0.10.1”
  4. 伺服器傳送封包 SOURCE 10.0.10.5 DEST 10.0.11.5 MAC_DEST 10:da:12:34
  5. 交換器看到這樣的 MAC_DEST 決定更改分配給該封包的 VLAN
  6. 交換器也將 MAC_DEST 更改為屬於 10.0.11.5

(這就是任何資料包轉發在乙太網路上的工作方式 - 與 Netgear 無關。)

也許,您不需要一個連接埠位於多個 VLAN 中(我實際上沒有檢查)。

另外,設定路由->IP->路由模式=是的

網件支援:什麼是 VLAN 路由

答案2

你不能那樣做,你需要特殊的 VLAN 功能(連接埠隔離等),或需要使用路由器來完成。

這裡發生的情況是,當封包(或乙太網路封包)進入連接埠時,它會從該連接埠的 PVID 取得其 VLAN ID。然後從同一 VLAN 中的其他連接埠發送出去。 (當然,如果交換器具有為該特定VLAN 儲存的目標MAC 的端口,那麼交換器當然只會將其轉發到特定端口。也可能不會,因為所有端口都位於不同的VLAN 上,因此目標不會轉發到該連接埠)可在發送訊框的 VLAN 中找到。

這意味著,透過連接埠 10 發送到交換器的所有內容都可以出現在連接埠 11 和 12 上,但透過連接埠 11 或 12 發送的任何內容只能傳送到連接埠 10。


連接埠隔離/受保護連接埠/類似功能的作用是阻止單一 VLAN 內的訊框轉送(某些特殊連接埠除外)。透過此功能,您可以將所有連接埠放入一個 VLAN 中,並將連接埠 10 標記為特殊端口,這樣它就可以向/從 11 和 12 發送/接收流量。 。


另一種選擇是將 VLAN 11 和 VLAN 12 作為標記 VLAN 引入連接埠 10 上的電腦。然後,在該機器上,您可以為 VLAN 建立不同的 IP 接口,使其與兩者進行通訊。如果機器上沒有設定路由,11 和 12 就無法相互通訊。當然,機器仍然需要能夠識別 VLAN。

當然,如果 Netgear 本身可以充當 VLAN 之間的路由器,那麼也可以。您只需為每台電腦設定 VLAN、安排路由並在 11 和 12 之間新增過濾(防火牆)即可。

相關內容