為什麼我看到來自另一個 VLAN 上的電腦的單播數據包?
我(仍在)嘗試在 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。
在我的例子中,一步一步:
- 在 10.0.10.5 你做
ping 10.0.11.5
- 伺服器詢問“誰有 10.0.10.1”
- 開關說“MAC 10:da:12:34 有 10.0.10.1”
- 伺服器發送一個數據包 SOURCE 10.0.10.5 DEST 10.0.11.5 MAC_DEST 10:da:12:34
- 看到這樣的 MAC_DEST 的交換機決定更改分配給該數據包的 VLAN
- 交換機還將 MAC_DEST 更改為屬於 10.0.11.5 的 MAC_DEST
(這就是任何數據包轉發在乙太網上的工作方式 - 沒有特定於 Netgear。)
可能,您不需要一個埠位於多個 VLAN 中(我實際上沒有檢查)。
另外,設置路由 -> IP -> 路由模式=是
Netgear 支持:什麼是 VLAN 路由