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


22

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

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


3
您需要一个路由器在不同的VLAN之间进行路由。另外,这样做时,在这两个VLAN上不能有相同的IP子网。

5
您好Jim Pap,欢迎您……就像您将两台主机插入两个不同的交换机一样,一个标记为“ LAN 10”,另一个标记为“ LAN 20”。在交换机上配置VLAN会将您的交换机分为多个虚拟交换机。
jonathanjo

3
这个问题有点像一个重言式。他们之所以不能这样做,是因为他们无法做到。单独的VLAN的创建在逻辑上将交换的互联网分段。现在,您需要使用某种形式的VLAN间路由来使这些设备进行通信。
WakeDemons3

1
@Cown在Cisco 路由器上不可能有来自不同接口上同一子网的地址,但这与不关心IP地址的VLAN本身无关(例如,可以与IPX / SPX)。而且...思科是重要的参与者,但远非唯一的参与者。
JFL

1
@Cown不同的VRF将如何提供帮助?那样他们就不会交流了,要回答您的问题,就这么简单地架起了vlan。自从我参加CCIE之前(距今已有20多年的历史),Cisco路由器已经可以使用桥接功能
Matt Douhan

Answers:


39

VLAN要做的事情之一是使用物理交换机,并将其分解为多个较小的“虚拟”交换机。

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

在此处输入图片说明

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

在此处输入图片说明

即使第二个映像中的IP地址位于同一子网中,您也会注意到两个虚拟交换机(即VLAN)之间没有“链接”,因此主机A / B无法与主机C进行通信/ D。

为了使第二个映像中的主机彼此通信,您将需要某种设备来促进从一个“交换机”到另一个“交换机”的通信。为此目的存在的设备是路由器 -因此,流量穿越VLAN边界需要路由器:

在此处输入图片说明

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


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


2
陷阱陷阱:请勿尝试以这种方式实际拆分交换机,然后通过未标记的端口连接VLAN-除非您确切知道该交换机中STP和CAM实现的设置方式。
rackandboneman

1
@rackandboneman这是一个很好的建议。但是,为了清楚起见,我帖子中的图像仅表示一个物理开关。“两台交换机映像”是具有两个VLAN 的一台物理交换机的逻辑表示。
艾迪

2
“每个路由器接口必须具有自己的唯一IP子网。”,对于某些路由器实现而言可能是正确的,但并非普遍如此。至少在Linux上,您可以将相同的子网分配给多个接口,然后结合使用代理arp和/ 32路由来使流量在它们之间流动。
彼得·格林

@PeterGreen异常始终存在。仅仅因为可以做某事,并不意味着就应该做—也不意味着它与眼前的问题相关。
艾迪

29

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

这就像在一个房间里建造一面防弹墙以创建2个房间一样。房间另一半的人不能再与前一房间另一半的人交流。

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

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


我很难想像在两个不同的VLAN上使用相同子网的任何情况。假设您是路由器,则会收到发往192.168.5.15的数据包。那是哪个VLAN?
Monty Harder

@MontyHarder取决于。它来自哪个网络(虚拟的或非虚拟的)?
重复数据删除器

1
@Deduplicator我不确定为什么数据包的源IP是什么很重要。如果您为两个或多个VLAN使用相同的IP范围,您如何知道IP是什么VLAN?只是没有意义。
Monty Harder

@MontyHarder我确实有这种情况:我与使用相同寻址的提供程序互连,并且这些互连程序是在相同的交换机上进行的。由于我(通过不同的路由器)都与他们交谈,并且彼此之间不交谈,所以很好。
JFL

@MontyHarder实际上,在许多不同的LAN(因此是VLAN)上具有相同的子网是常见的。RFC1918专用地址已在数百万个LAN中重复使用。您可能在同一个VLAN上有多个单独的NAT网络。这很可能会在托管环境中发生恶作剧。但是这些网络确实被认为是完全独立的。
jcaron

5

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

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

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

ARP通过将请求广播发送到本地L2网络来工作,具有请求的IP地址的主机使用其MAC地址进行应答。由于目标主机在本地网络外部,因此它永远不会听到ARP请求,并且ARP失败。

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


3

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

与其问“ 为什么他们不沟通? ”,不如问“ 他们尝试沟通时会发生什么?”。

首先,在交换机上配置VLAN是什么意思?在我们的示例中,有一些套接字配置为VLAN 10,一些套接字配置为VLAN20。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。


1

我希望您对子网掩码有很好的了解。当您有单独的VLAN时,必须具有子网的唯一IP地址范围,这不是必需的。

VLAN是一个单独的局域网,但它是一个虚拟局域网。另外,虚拟局域网用于在同一台交换机中分离网络。但是,当您使用Same ip创建虚拟LAN时,它是没有用的。

除此之外,您还需要在交换机上配置Intervlan Routing。


2
不,拥有相同子网的多个VLAN并非不可能。这是不寻常的,有些气disc,但是完全有可能。
JFL

@JFL是的,可以使用VRF或其他某种形式的分隔符,但是我还没有看到任何用例。请赐教。

@JFL对我也一样。我刚才在cisco数据包跟踪器中尝试了Intervlan路由。我不知道思科数据包跟踪器是否有问题。这是行不通的。我同意考恩。在VRF中是可能的。
红外线

1
@Cown我不是说这是个好主意,也不是可以让他们一起交流(但NAT仍然可以)。但是我有一些用例。例如,我与通过某些重叠的RFC1918网络的提供程序互连。它们连接到不同VLAN中的相同交换机,并且彼此之间不通信。
JFL

@JFL抱歉,我只是看不出与最初的问题相比是什么。是的,可以使用重叠的IP地址进行互连或使用NAT,但是我只是认为这并不反映现实生活中的情况。

1

请考虑一下,当您在家中有一个局域网以及一台IP为192.168.2.1的计算机时会发生什么。您路上的朋友家中也有一个局域网和一台IP 192.168.2.2的计算机。他们在同一个子网中,为什么他们不能互相交谈?

在这样的示例中,原因与您要询问的原因不同。

但是VLAN可以达到相同的结果-它在第二层分割了一个网络。

我的观点是,我们可以很容易地看到“ IP地址在同一子网中”这一事实不足以确定数据包是否可以在它们之间路由。基础拓扑也可以发挥作用。

要将其发挥到极致,最底层需要一些物理材料(很好,可以,或者空气:D)才能实际传输数据。您的计算机可以位于同一子网中的同一房屋中,但是没有物理连接(或具有无线链接),因此您不会期望数据包被路由。


0

VLAN的重点是要进行网络分段。您也可以使用子网达到相同的目的(除了一些警告)。由于您的子网分为两个不同的VLAN,因此您的设备无法在L2网络上进行通信。您可以在交换机上设置IRB接口,以允许VLAN之间进行通信。或者,您可以通过防火墙路由通信,并允许VLAN之间进行选择性通信。理想情况下,应将网络设计为每个VLAN具有不同的子网,然后对VLAN之间的流量进行防火墙。希望这可以帮助。


1
Nonononono在这种情况下不要使用IRB ...问题是,交换机永远不应在同一子网中配置两个VLAN。最好的答案是将所有主机放在同一VLAN的一个子网中。
Mike Pennington

0

当以太网连接承载多个VLAN时,必须标记其中一个VLAN以外的所有VLAN 。符合IEEE 802.1Q的VLAN标签放置在以太网帧中通常位于该帧的EtherType的位置。VLAN标签的第一部分是标签协议标识符,它是一个恒定值0x8100。结果,不知道IEEE 802.1Q标记或配置为不希望它们的设备将看到标记的帧,并认为“这既不是IPv4,ARP也不是IPv6;该Ethertype 0x8100,这是完全不同的,我不知道”认为我一点都不了解。最好只是忽略它。”

支持VLAN的交换机可以通过其VLAN标签过滤出发往每个端口的数据包,还可以选择从该端口的出站流量中的一个选定VLAN中剥离VLAN标记(并将该VLAN标记相互添加到该端口的入站流量),以便所选VLAN的任何流量对于连接到该特定端口的设备而言都是普通的802.1Q以太网流量。这样选择的VLAN被称为该端口的本地VLAN

802.1Q标准允许以太网端口同时支持一个本机VLAN和任意数量的标记VLAN,但是我知道让端口同时通过标记和未标记的以太网帧是一种有点不利的配置:我们需要记住,端口/ NIC中的一个VLAN与所有其他VLAN不同,并且需要进行不同的配置。容易出错。

用Cisco术语,可以将交换机端口配置为访问端口中继端口。访问端口将仅提供对单个VLAN的访问,并且VLAN标签会自动从传出流量中剥离,并添加到该端口的传入流量中。另一方面,中继端口将在一组可配置的VLAN上传递流量,但是所有流量都将带有VLAN标签。

因此,对于在同一台交换机上两个不同VLAN中的两个设备,两个设备都使用同一IP子网上的地址的情况。发生的情况将取决于有关VLAN的交换机端口(以及设备上的网络接口)的配置方式。

1.)交换机端口作为访问端口,设备不支持VLAN:交换机端口将过滤掉“相反” VLAN的流量,因此设备将永远不会看到彼此的流量。这就提出了一个问题,即是否将它们全部视为“在同一网络段上”是否有意义。

2.)交换机端口作为中继端口设置为通过两个VLAN,设备不支持VLAN:每个设备都会认为“为什么其他设备不断向我发送奇怪的Ethertype 0x8100信息?我不这么说。”

3.)交换机端口作为中继端口设置为每个仅通过一个VLAN,设备支持VLAN:您也需要在设备的网络配置中指定VLAN编号,但是最终结果与情况相同#1:设备看不到彼此的流量。

4.)交换机端口作为中继端口设置为通过两个VLAN,设备可以感知VLAN,但配置为不同的VLAN:现在是设备本身进行过滤的VLAN支持层,但实际结果与案例1相同#3:“相对”设备的流量永远不会到达设备网络协议堆栈中的IP协议层。

5.)将交换机端口设置为中继端口,以设置为通过两个VLAN,配置了VLAN意识的设备以及在设备中配置的两个VLAN。这超出了您的要求。现在,该设备将有效地存在于两个VLAN中。

由于两个VLAN都假装在以太网级别上是不同的,但是使用相同的IP子网,因此发生的情况将取决于设备IP路由的实现方式。主要的重要细节将是IP堆栈是设计为使用强主机模型还是弱主机模型,以及VLAN的概念如何准确地集成到系统中。

例如,Linux会将任何已配置的带标记的VLAN呈现为额外的虚拟NIC,以反映基础物理NIC的链接状态,但在技术上尽可能独立。因此,就像您将两个NIC插入两个单独的物理网段(具有100%重叠的IP子网)一样:系统可能会很好地接收传入流量,但是将假定连接到目标IP子网的任何NIC都可以与之通信该IP子网中的任何其他主机,并且将使用哪个(虚拟的,特定于VLAN的)NIC首先出现在路由表中...因此,配置可能会或可能不会起作用,具体取决于主机各部分的顺序。 NIC和VLAN配置已初始化。您需要使用Linux'

在两个不同的网段上使用相同的IP子网是第3层问题,无论第2层的网段分隔是物理的(=实际独立的NIC)还是逻辑的(=用VLAN创建)。第3层问题将需要第3层解决方案:使用路由器或某些其他设备对其中一个子网进行NAT对称删除以消除IP子网重叠,比尝试在单个设备上处理它要优雅得多。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.