为什么位于不同 VLAN 但位于同一子网的设备不能通信?

网络工程 转变 VLAN 子网
2021-07-19 14:06:01

我有一个关于切换的问题。我有两个设备连接到 IP 地址为 192.168.5.20 和 192.168.5.10 的交换机。两个设备具有相同的前缀 /24。这意味着它们在同一个子网上。

如果我在交换机上的不同 VLAN(10 和 20)上拆分这些设备,尽管它们位于同一子网中,但它不会进行通信。为什么会这样?

4个回答

VLAN 所做的一件事就是将一个物理交换机分成多个较小的“虚拟”交换机。

这意味着一台交换机和两个 VLAN 的物理描述:

在此处输入图片说明

在操作上基本相同,以相同的拓扑的这种逻辑描述:

在此处输入图片说明

即使第二幅图中的 IP 地址在同一个子网中,您也会注意到两个虚拟交换机(即 VLAN)之间没有“链接”,因此主机 A/B 不可能与主机 C 通信/D。

为了让第二个图像中的主机相互通信,您需要某种设备来促进从一个“交换机”到另一个“交换机”的通信。为此目的而存在的设备是路由器——因此,流量跨越 VLAN 边界需要路由器:

在此处输入图片说明

并且由于路由器的工作方式,每个路由器接口都必须有自己的、唯一的IP 子网。这就是为什么每个 VLAN 传统上都需要它自己唯一的 IP 子网的原因——因为如果要这些 VLAN之间发生任何通信,则需要唯一的子网。


上面的图片来自我的博客,您可以在此处阅读有关VLAN 作为概念的更多信息,以及在此处阅读有关VLAN之间路由的更多信息

虚拟 LAN 的重点是在单个物理设备上创建单独的第 2 层 LAN。

这就像在一个房间里建造一堵装甲和隔音墙来创建 2 个房间。房间每一半的人都无法再与前一个房间的另一半的人交流。

因此,您在两个不同的 L2 网络上有两台主机,但没有任何东西可以让它们进行通信。

请注意,在大多数情况下,在两个不同的 VLAN 上使用相同的子网是没有意义的。标准情况是将 IP 网络与 VLAN 相关联。

现有答案的补充,从设计和理论的角度涵盖了问题......

与其问“他们为什么不交流? ”,不如问“当他们尝试交流时会发生什么?”

首先,在交换机上配置VLAN是什么意思?在我们的示例中,一些套接字配置为 VLAN 10,一些套接字配置为 VLAN 20。VLAN 的定义是仅连接同一 VLAN 上的套接字。这意味着在给定 VLAN 的端口上接收的帧只会发送到同一 VLAN 的端口。

  10  10  20  20  10  20       VLAN of port
   1   2   3   4   5   6       Port number
===+===+===+===+===+===+===
   |   |   |   |   |   |
   A   B   C   D   E   F       Hosts

在这个图中,我们有六个主机,端口 1、2、5 在 VLAN 10 上,端口 3、4、6 在 VLAN 20 上。

根据问题,假设主机 A 静态配置为 192.168.5.10/24,F 静态配置为 192.168.5.20/24。假设 B 到 E 有其他静态配置地址(它们是什么无关紧要)。

如果 A ping 192.168.5.20,它确定它在相同的 /24,所以发生的第一件事是 ARP 请求:WHO HAS 192.168.5.20,作为以太网广播发送。

交换机在端口 1 上接收广播。这是 VLAN 10,因此它从端口 2 和 5(VLAN 10 中的其他端口)发送广播。主机 B 和 E 收到 ARP 请求并忽略它,因为它不是它们的地址。

而已。

不会有ARP回复;接下来发生的事情将是 A 上的超时,随后是重复的 ARP 请求,直到应用程序放弃。

插入 VLAN 10 端口以外的任何端口的主机将看不到任何内容,无论其 IP 地址如何。这显然包括 F,即 192.168.5.20。

IP 子网在逻辑上对主机进行分组 - 同一子网中的主机使用它们的第 2 层连接直接相互通信。与另一个子网上的主机通信需要使用网关/路由器。

VLAN 在物理上对主机进行分组 - 同一 VLAN/广播域/L2 段内的主机可以直接相互通信。不同 VLAN 中的主机不能。(不要打我 -身体组不是真的正确,但它标志着我的观点。)

因此,当两台主机位于同一个 IP 子网但位于不同的 VLAN/广播域/L2 网络时,它们无法通信:源主机假定目标位于其本地 L2 网络中,因此它尝试 ARP 目标地址(或 NDP 解析 IPv6)。

ARP 的工作原理是将请求作为广播发送到本地 L2 网络,具有请求的 IP 地址的主机以其 MAC 地址响应。由于目的地主机是外部本地网络(= VLAN)它永远不会接收该ARP请求和ARP失败。

即使源会以某种方式知道目的地的 MAC 地址并构建一个寻址到该 MAC 的帧,它也永远不会到达目的地,因为它仍然在 L2 网络之外。来自本地 L2 网络外部的 MAC 毫无意义且无用。