为什么 Vlan 需要路由器来通信?

网络工程 路由器 局域网 子网 网络 拓扑
2022-02-04 02:43:26

为什么在同一交换机上实现的两个独立 VLAN(虚拟 LAN)上的设备需要路由器进行通信?

4个回答

为什么 Vlan 需要路由器进行通信?

简短的回答,他们没有。VLAN 是一个虚拟 LAN它是一种将一个物理交换机逻辑划分为多个虚拟交换机的方法。

如果您有两个不同的物理交换机(未配置 VLAN),连接到每个交换机的设备可以通信吗?不,除非有某种东西可以促进或允许独立交换机之间的通信。

最简单的解决方案是在两个交换机之间提供物理连接(即在两者之间连接网络电缆)。现在,这允许一个交换机上的设备与第二个交换机上的设备进行通信……至少在 L2 上。这也适用于 VLAN。如果您只是想要两个不同 VLAN 之间的 L2 通信,您需要做的就是在两者之间提供连接。

要进行 L3 通信,需要路由器。假设您有多个设备都连接到没有 VLAN 的一台交换机(或全部连接到单个 VLAN),其中一半设备使用 192.168.10.0/24 子网,另一半使用 10.168.10.0/24。不同子网上的任意两台设备可以相互通信吗?答案是肯定的和否定的。

是的,当您谈论 L2 通信时,他们可以。但是,如果您想使用 L3(即 IP)连接到它们,那就不行。要允许两个不同 L3 子网上的设备进行通信,必须跨 L3 边界路由流量。这就是路由器出现的地方。

您的问题的可能来源是单个 VLAN 与单个 IP 子网相关联的普遍看法。虽然这种情况经常发生,但并非总是如此。您可以在单个 VLAN 上使用多个不同的 IP 子网,也可以在多个 VLAN 上使用单个子网。两者都是可能的,尽管您确实应该了解这是如何工作的,更重要的是,您为什么要在这样做之前这样做。

VLAN 不需要路由器进行通信。

好吧,他们通常会这样做,但不一定。他们只需要一些“外部帮助”。有时来自内部。

令人困惑?是的。继续阅读。

在交换机上配置 VLAN 可以有效地使交换机(在内部)将自身拆分为多个交换机。想象一下有多个逻辑背板,一个用于您定义的每个 VLAN。

您继续定义每个交换机端口的行为 w/关于交换机上可用的 VLAN。

  • 一些交换机端口将映射到单个 VLAN,并且在它们发送或接收的以太网帧上不会有 VLAN 标记(switchport mode accessswitchport access vlan XXXCisco 中)。
  • 一些交换机端口将为交换机上所有可用的 VLAN 发送和接收以太网帧 ( switchport mode trunk)
  • 一些交换机端口将为该交换机上可用的一组(子)VLAN 发送和接收以太网帧(switchport mode trunk& switchport trunk allowed vlan [add|remove] XX1,XX2,XX5
  • 然后有一些高级设置和模式,用于标记中继端口上的未标记 VLAN 等。

对于“交换”的大多数方面,VLAN(除了共享硬件资源)彼此完全隔离,就好像它们都是一个单独的交换机一样。甚至每个 VLAN 都有一个 MAC 地址表,有时甚至每个 VLAN 都有一个单独的生成树实例(至少在具有(Rapid-)PVST+的 Cisco 交换机上)。

如果没有外部帮助,就无法让数据从一个(第 2 层)VLAN 流向另一个。

这种外部帮助可能以不同的形式出现(请注意,其中一些对于新手来说是相当“愚蠢的想法”并且会造成巨大的破坏,除非您确切地知道自己在做什么并采取一些对策;它们只是为了说明而显示在这里) :

  • 将一个switchport access vlan XX1端口连接到一个端口的电缆switchport access vlan XX2,有时称为“环路”或“耳线”[是的,那是个坏主意]
  • switchport access vlan XX1另一个连接一个和一个的交换机或网桥(单个 VLAN 或不支持 VLAN)switchport access vlan XX2[是的,另一个坏主意]
  • 具有多个端口(标准路由接口,而不是集成交换机的端口)的外部路由器或防火墙,每个端口都连接到switchport access vlan XXn给定交换机上的一个 [良好设置]
  • 具有单个接口的外部路由器或防火墙,配置有一组带有 VLAN 标记的子接口,连接到switchport mode trunk,并具有匹配的switchport trunk allowed vlan XX1,XX3,XX7. 这有时被称为场景中的路由器。[良好的设置]

然后,这种外部帮助也可能来自内部,现在我们正在进入第 3 层交换领域,第 2 层 VLAN 和第 3 层事物之间的界限变得有些模糊。

  • 同一交换机的内部路由引擎。交换机可能不仅有一组 VLAN(作为简单的第 2 层 VLAN,请参见上文),而且还有一组 SVI(SwitchVirtualInterfaces,interface vlanXXx在 cisco 中)。并非所有第 2 层 VLAN 都需要 SVI,但所有 SVI 都必须具有底层第 2 层 VLAN。
  • SVI 可以配置 IPv4/IPv6 地址和掩码以及路由器上常见的一些其他第 3 层属性。这些 SVI 然后在给定 VLAN 中显示为主机。
  • 启用ip[v6] forwardingip[v6] routing(有时默认启用,请参阅您的文档)然后启用交换机 - 更准确地说:其内部路由引擎 - 将数据包从一个 VLAN 转发或“路由”到另一个 VLAN。当然,这只有在每个参与的 VLAN-with-SVI的 IP(v6) 寻址不重叠时才有可能,否则“路由是不可能的”[1]。
  • 起初,从一个 SVI 到另一个 SVI 的 ip 转发只能在该路由引擎的直接连接网络之间进行,但是有可能添加静态路由和默认路由(可能到某些防火墙)或将交换机的路由引擎集成到某些动态路由设置可能已经到位。本质上,对于相关的VLANs-with-SVI,交换机现在是路由器,应该被视为路由器。

[1] 对于没有 SVI 的纯隔离 Layer2-VLAN,情况并非如此;它们彼此不知道,因此它们实际上并不需要非重叠 IP 寻址。如何为 Layer2-VLAN 定义重叠或唯一的 IP 子网完全取决于网络和系统管理员。这完全取决于给定的寻址计划。

我认为您对子网掩码有很好的了解。子网是一个单独的网络。一般来说,没有路由配置,没有网络与任何其他网络通信。设备相同,但 Vlan 在同一交换机内定义了单独的网络。

独立网络意味着,每个网络都有自己的广播域。因此,同一广播域中的设备可以在其广播域中进行通信。

当交换机无法提供路由功能时,您不需要路由器。如果您有 L3 Switch,则可以在同一设备中配置路由。你不需要单独的路由器。

笔记

据我所知,2 个 VLAN 不能具有相同的 IP 地址范围。在 VRF 中是可能的。

通过使用 VLAN,您可以将交换机拆分为独立的网络。这种分离是通过限制进入每个 VLAN的MAC 地址表的内容来实现的。

MAC 地址用于识别交换机运行的第 2 层(数据链路)上的主机。发送帧时,源主机会将自己的 MAC 地址放在源字段中,将目标 MAC 地址放在目标字段中(不要与在 Layer3 操作并添加为 Layer3 的源/目标的 IP 地址混淆封装在 Layer2 帧中的数据包)。

交换机中的 MAC 地址表为每个端口显示关联的 VLAN 以及可在该端口上访问的 MAC 地址(主机)列表。

当帧在分配给 VLAN 的端口上进入交换机时,交换机将在传入端口的 VLAN 的MAC 地址表中查找帧的MAC 目标地址。两种情况之一将发生:

  • 如果匹配,则该帧将在该端口上发送出去,并且预计将到达目的地,因为我们在表中已有它。
  • 如果没有匹配,则帧将在分配给传入端口的 VLAN 的所有端口上发送出去(其他任何地方都没有!)希望帧能够到达它的目的地。这也是 VLAN 被称为广播域的原因。

在此过程中,交换机还会查看源 MAC 地址并将其添加到与传入端口及其 VLAN 关联的 MAC 地址表中。这就是 MAC 地址表的填充方式。

现在,如果您想在不同 VLAN 上的主机之间进行通信,这不能仅通过第 2 层交换机来完成,因为根据上述解释,即使 MAC 目标(即另一个 VLAN 中主机的 MAC 地址)将未知,帧不会被发送到其他 VLAN 的端口。

您在这里需要的是一个 Layer3 设备(如路由器或 Layer3 交换机 - 如果它有能力,可能是我们已经连接到的同一台交换机),当被问及 Layer2 (MAC) 地址是什么时,它将提供自己的 MAC 地址特定的第 3 层 (IP) 地址。这种机制称为代理 ARP,它将帮助发往源 VLAN 外部主机的帧到达知道如何进一步转发数据包的网关。请注意此处使用数据包,这意味着一旦网关在下一个网段上进一步发送数据包,第 2 层标头将被重建。

PS - 在这个解释中,我假设知道目标 MAC 地址只是为了证明系统是如何工作的。实际上,如果没有网关代表 VLAN 外的目标回答,源甚至无法制作和发送数据框。用于查找与字段的第 3 层 (IP) 地址关联的第 2 层 (MAC) 地址的标准 ARP 机制仅适用于 VLAN(广播域)