为什么我会看到来自另一个 VLAN 上的机器的单播数据包?

为什么我会看到来自另一个 VLAN 上的机器的单播数据包?

我(仍)尝试在第 3 级交换机(Netgear GS516TP)上正确配置 VLAN。

基本场景:有三个VLAN:VLAN10、11、12,分别有三个端口,三台机器。

  • 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 数据包(例如通过执行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 -> 路由模式=是的

Netgear 支持:什么是 VLAN 路由

答案2

你不能那样做,你要么需要特殊的 VLAN 功能(端口隔离或类似功能),要么需要使用路由器来做。

这里发生的情况是,当数据包(以太网帧)进入端口时,它会从该端口的 PVID 获取其 VLAN ID。然后,它会从同一 VLAN 上的其他端口发送出去。(当然,如果交换机为该特定 VLAN 存储了目标 MAC 的端口,则交换机只会将其转发到一个特定端口。但可能不会,因为所有端口都在不同的 VLAN 上,因此在发送帧的 VLAN 中找不到目标。)

这意味着,通过端口 10 发送到交换机的所有内容都可以出现在端口 11 和 12 上,但通过端口 11 或 12 发送的任何内容只能发送到端口 10。


端口隔离/受保护端口/类似功能的作用是阻止单个 VLAN 内的帧转发,但某些特殊端口除外。使用此类功能,您可以将所有端口放在一个 VLAN 中,并将端口 10 标记为特殊,这样它就可以向/从 11 和 12 发送/接收流量。但该功能会将 11 和 12 相互隔离。


另一个选项是将 VLAN 11 和 VLAN 12 作为带标签的 VLAN 引入端口 10 上的计算机。然后,在该计算机上,您可以为 VLAN 创建不同的 IP 接口,使其能够与这两个 VLAN 进行通信。如果计算机上没有设置路由,则 11 和 12 无法相互通信。当然,该计算机仍然需要支持 VLAN。

当然,如果 Netgear 本身可以充当 VLAN 之间的路由器,那么也可以。您只需为每台机器设置 VLAN,安排路由并在 11 和 12 之间添加过滤(防火墙)。

相关内容