Routing

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

  • January 10, 2021

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

基本場景:VLAN 10、11、12 三個 VLAN,分別有 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 中的機器通信。但是,來自 VLAN 11 的機器應該對 VLAN 12 中的機器一無所知(反之亦然)。

當所有三台機器都使用網路遮罩 255.255.0.0 時,路由配置設置如下:

在此處輸入圖像描述

現在,問題。當我從 10.0.10.5 向 10.0.11.5 發送 TCP 或 UDP 數據包時(例如通過 do nc -n 10.0.11.5 100),我可以在屬於 VLAN 12 的機器上執行的 Wireshark 中看到這個數據包。它不能反過來工作,但是,即從 10.0.11.5 發送的數據包在 VLAN 12 中不可見。

我應該怎麼做才能使來自 VLAN 11 的以機器為目標的數據包永遠不會到達屬於 VLAN 12 的埠?

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

如果為 VLAN 和 MAC DA 啟用路由

$$ destination address $$入站單播數據包是內部網橋路由器介面的,數據包被路由。

您分配給 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 的 MAC_DEST

(這就是任何數據包轉發在乙太網上的工作方式 - 沒有特定於 Netgear。)

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

另外,設置路由 -> IP -> 路由模式=

Netgear 支持:什麼是 VLAN 路由

引用自:https://serverfault.com/questions/1049247