题 VLAN如何工作?


什么是VLAN?他们解决了什么问题?

我正在帮助一个朋友学习基本的网络,因为他刚刚成为一家小公司的唯一系统管理员。我一直指着他在Serverfault上关于各种网络主题的各种问题/答案,并注意到一个差距 - 似乎没有一个答案可以从第一原理解释什么是VLAN。本着精神 子网如何工作,我认为在这里提出一个带有规范答案的问题会很有用。

答案中可能涉及的一些潜在主题:

  • 什么是VLAN?
  • 他们打算解决什么问题?
  • 在VLAN之前,事情是如何运作的?
  • VLAN如何与子网相关?
  • 什么是SVI?
  • 什么是中继端口和访问端口?
  • 什么是VTP?

编辑:要清楚,我已经知道VLAN如何工作 - 我只是认为Serverfault应该有一个涵盖这些问题的答案。如果时间允许,我也会提交自己的答案。


115
2017-10-06 23:17




或许另一个问题:静态和动态VLAN之间有什么区别?管理它们的方法是什么?还有一个:管理供应商之间VLAN互操作的标准是什么? - Hubert Kario
就像飞蛾扑火一样,我已经到了并加了我的4000字......(我想我可以活着它是一个社区维基......我想我真的不需要代表...>微笑<) - Evan Anderson
@Evan:我有点希望你能出现。不过我必须承认,在将其转换为CW之前,我可以做更多的代表。 :) - Murali Suriar


答案:


虚拟LAN(VLAN)是允许单个物理网络模拟多个并行物理网络功能的抽象。这很方便,因为在某些情况下您可能需要多个并行物理网络的功能,但您宁愿不花钱购买并行硬件。我将在这个答案中谈论以太网VLAN(即使其他网络技术可以支持VLAN),我也不会深入研究每一个细微差别。

一个受控的例子和一个问题

作为一个纯粹人为的示例场景,假设您拥有一个租赁给租户的办公楼。作为租赁的好处,每个租户将在办公室的每个房间获得实时以太网插孔。您为每个楼层购买以太网交换机,将它们连接到该楼层中每个办公室的插孔,并将所有交换机连接在一起。

最初,您将空间租赁给两个不同的租户 - 一个在1楼,1个在2个。每个租户都配置他们的计算机w /静态IPv4地址。两个租户都使用不同的TCP / IP子网,一切似乎都运行得很好。

后来,一个新的租户租了一半的3楼,并带来了这些新奇的DHCP服务器之一。时间过去了,一楼租户也决定跳上DHCP的潮流。事情开始出错的时候就是这样。 3楼租户报告说,他们的一些计算机正从一台非DHCP服务器的机器上获得“有趣”的IP地址。很快,1楼的​​租户报告了同样的事情。

DHCP是一种利用以太网广播功能的协议,允许客户端计算机动态获取IP地址。由于租户都共享相同的物理以太网,因此他们共享相同的广播域。从网络中的任何计算机发送的广播数据包将所有交换机端口泛洪到每台其他计算机。第1层和第3层的DHCP服务器将收到所有IP地址租约请求,并且有效地决定谁可以先回答。这显然不是您打算让租户体验的行为。但是,这是一种没有任何VLAN的“扁平”以太网网络的行为。

更糟糕的是,第二层的租户收购了这个“Wireshark”软件并报告说,他们不时会看到来自交换机的流量,这些流量引用了他们从未听说过的计算机和IP地址。他们的一名员工甚至发现他可以通过将分配给他的PC的IP地址从192.168.1.38更改为192.168.0.38来与这些其他计算机进行通信!据推测,他距离为其他租户之一执行“未经授权的无偿系统管理服务”只需几步之遥。不好。

潜在解决方案

你需要一个解决方案!你可以在地板之间拔插头,这会切断所有不必要的通信!是啊!那是票......

那可能有用, 除了 您有一个新租户将租用地下室的一半和地板3的未占用的一半。如果地板3开关和地下室开关之间没有连接,新租户将无法进行通信他们的计算机将遍布他们的两个楼层。拉插头不是答案。更糟糕的是,新租户尚未推出 另一个 其中一个DHCP服务器!

您可以调整为每个租户购买物理上独立的以太网交换机的想法,但是看看您的建筑有30层楼,其中任何一层都可以细分为4种方式,潜在的老鼠之间的地板到地板之间的电缆大量并行以太网交换机可能是一场噩梦,更不用说昂贵了。如果只有一种方法可以使单个物理以太网网络像多个物理以太网网络一样,每个网络都有自己的广播域。

VLAN到救援

VLAN是解决这个混乱问题的答案。 VLAN允许您将以太网交换机细分为逻辑上不同的虚拟以太网交换机。这允许单个以太网交换机就像多个物理以太网交换机一样。例如,对于细分的楼层3,您可以配置48端口交换机,使得较低的24个端口位于给定的VLAN(我们称之为VLAN 12)中,而较高的24个端口位于给定的VLAN中(我们称之为VLAN 13)。在交换机上创建VLAN时,必须为它们分配某种类型的VLAN名称或编号。我在这里使用的数字大多是随意的,所以不要担心我选择的具体数字。

一旦你将3楼交换机划分为VLAN 12和13,你会发现新的3楼租户可以将他们的DHCP服务器插入分配给VLAN 13的其中一个端口,而插入分配给VLAN 12的端口的PC也不会从新的DHCP服务器获取IP地址。优秀!问题解决了!

哦,等等......我们如何将VLAN 13数据下载到地下室?

交换机之间的VLAN通信

您的半地板3和半地下室租户希望将地下室中的计算机连接到3楼的服务器。您可以直接从分配到其VLAN中的其中一个端口的电缆3中切换到地下室和生活会好的,对吗?

在VLAN的早期阶段(802.1Q标准之前),您可能就是这样做的。整个地下室交换机实际上是VLAN 13的一部分(您选择在3楼和地下室分配给新租户的VLAN),因为该地下室交换机将被分配到3楼的端口“馈送”到VLAN 13。

这个解决方案可以工作,直到你将地下室的另一半租给你的1楼租户,他们也希望在1楼和地下室电脑之间进行通信。您可以使用VLAN(例如,VLANS 2和13)拆分地下室交换机,并从1楼到地下室分配给VLAN 2的端口运行电缆,但您更好的判断告诉您这可能很快成为老鼠的巢电缆(并且只会变得更糟)。使用VLAN拆分交换机是好的,但是必须从其他交换机运行多条电缆到不同VLAN的成员端口似乎很混乱。毫无疑问,如果你必须在地下室开关之间划分4路,那么在高层也有空间的租户你只需要在地下室交换机上使用4个端口来终止楼上VLAN的“馈线”电缆。

现在应该清楚的是,需要某种类型的通用方法来在单个电缆上的交换机之间移动来自多个VLAN的流量。只需在交换机之间添加更多电缆以支持不同VLAN之间的连接,这不是一种可扩展的策略。最终,如果有足够的VLAN,您将使用这些VLAN间/交换机间连接占用交换机上的所有端口。所需要的是一种通过单个连接从多个VLAN传输数据包的方法 - 交换机之间的“中继”连接。

到目前为止,我们谈到的所有交换机端口都称为“访问”端口。也就是说,这些端口专用于访问单个VLAN。插入这些端口的设备本身没有特殊配置。这些设备不“知道”存在任何VLAN。客户端设备发送的帧被传送到交换机,然后交换机负责确保仅将帧发送到分配给分配给帧进入交换机的端口的VLAN成员的端口。如果一个帧进入指定为VLAN 12成员的端口上的交换机,则交换机将仅发送该帧作为VLAN 12成员的端口。交换机“知道”分配给它接收的端口的VLAN编号。框架,并以某种方式知道只将该帧传送出相同VLAN的端口。

如果交换机有某种方式将与给定帧相关联的VLAN编号共享给其他交换机,则另一台交换机可以正确地处理将该帧仅传送到适当的目标端口。这就是802.1Q VLAN标记协议的功能。 (值得注意的是,在802.1Q之前,一些供应商制定了自己的VLAN标记和交换机间中继标准。在大多数情况下,这些预标准方法都已被802.1Q取代。)

如果有两个VLAN感知交换机相互连接,并且您希望这些交换机在相互之间传送帧到正确的VLAN,则可以使用“trunk”端口连接这些交换机。这涉及将每个交换机上的端口配置从“访问”模式更改为“中继”模式(在非常基本的配置中)。

当端口配置为中继模式时,交换机发出的每个帧都将在帧中包含“VLAN标记”。此“VLAN标记”不是客户端发送的原始帧的一部分。相反,在将帧发送到中继端口之前,发送交换机会添加此标记。此标记表示与帧所源自的端口关联的VLAN编号。

接收交换机可以查看标签以确定帧起源于哪个VLAN,并且基于该信息,仅将帧转发出分配给始发VLAN的端口。由于连接到“访问”端口的设备不知道正在使用VLAN,因此必须从帧中剥离“标记”信息,然后才能将其发送到以访问模式配置的端口。这种标签信息的剥离导致整个VLAN中继过程对客户端设备是隐藏的,因为它们接收的帧将不承载任何VLAN标记信息。

在现实生活中配置VLAN之前,我建议在测试交换机上配置中继模式端口,并使用嗅探器(如Wireshark)监控从该端口发出的流量。您可以从另一台计算机创建一些示例流量,插入访问端口,并看到离开中继端口的帧实际上将大于测试计算机发送的帧。您将在Wireshark的框架中看到VLAN标记信息。我发现实际上看到嗅探器中发生的事情是值得的。在这一点上阅读802.1Q标记标准也是一件不错的事情(特别是因为我不是在谈论“本地VLAN”或双标记)。

VLAN配置梦魇和解决方案

随着您在建筑物中租用越来越多的空间,VLAN的数量也会增加。每次添加新VLAN时,您都会发现必须登录越来越多的以太网交换机并将该VLAN添加到列表中。如果有一些方法可以将该VLAN添加到单个配置清单并让它自动填充每个交换机的VLAN配置,那不是很好吗?

思科专有的“VLAN中继协议”(VTP)或基于标准的“多VLAN注册协议”(MVRP--之前拼写的GVRP)等协议实现了此功能。在使用这些协议的网络中,单个VLAN创建或删除条目导致协议消息被发送到网络中的所有交换机。该协议消息将VLAN配置的变化传递给其余的交换机,而这些交换机又修改了它们的VLAN配置。 VTP和MVRP不关心哪些特定端口被配置为特定VLAN的访问端口,而是在将VLAN的创建或删除传送到所有交换机时非常有用。

当您对VLAN感到满意时,您可能希望返回并阅读“VLAN修剪”,这与VTP和MVRP等协议相关。就目前而言,没有什么可以非常关注的。 (该 维基百科上的VTP文章 有一个很好的图解释了VLAN修剪及其带来的好处。)

什么时候在现实生活中使用VLAN?

在我们走得更远之前,重要的是要考虑现实生活,而不是人为的例子。在这里我会引用你的,而不是复制另一个答案的文本 我的回答是:什么时候创建VLAN。它不一定是“初学者级别”,但现在值得一看,因为我将在回到一个人为的例子之前简要地参考它。

对于“tl; dr”人群(此时肯定已经停止了阅读),上面链接的要点是:创建VLAN以使广播域更小或者由于某些特定原因需要隔离流量(安全性) ,政策等)。使用VLAN没有任何其他充分理由。

在我们的示例中,我们使用VLAN来限制广播域(以保持DHCP协议正常工作),其次,因为我们希望在各个租户的网络之间进行隔离。

一个旁白:IP子网和VLAN

一般而言,为方便起见,VLAN和IP子网之间通常存在一对一的关系,以便于隔离,并且由于ARP协议的工作原理。

正如我们在本回答开头所看到的,可以在同一物理以太网上使用两个不同的IP子网而不会出现问题。如果您使用VLAN缩小广播域,则不希望与两个不同的IP子网共享相同的VLAN,因为您将组合其ARP和其他广播流量。

如果您出于安全性或策略原因使用VLAN来隔离流量,那么您可能也不希望在同一VLAN中组合多个子网,因为您将无法实现隔离的目的。

IP使用基于广播的协议(地址解析协议(ARP))将IP地址映射到物理(以太网MAC)地址。由于ARP是基于广播的,因此将相同IP子网的不同部分分配给不同的VLAN将是有问题的,因为一个VLAN中的主机将不能从另一VLAN中的主机接收ARP回复,因为广播不在VLAN之间转发。您可以通过使用代理ARP来解决这个“问题”,但最终,除非您有充分的理由需要在多个VLAN之间拆分IP子网,否则最好不要这样做。

最后一个:VLAN和安全性

最后,值得注意的是,VLAN不是一个很好的安全设备。许多以太网交换机都有错误,允许来自一个VLAN的帧被发送到分配给另一个VLAN的端口。以太网交换机制造商已经努力修复这些错误,但是确实会有一个完全没有错误的实现是值得怀疑的。

在我们设计的例子中,可能会停止向另一个租户提供免费系统管理“服务”的2楼员工通过将他的流量隔离到VLAN来阻止这样做。他还可能会弄清楚如何利用交换机固件中的漏洞,以便让他的流量“泄漏”到另一个租户的VLAN上。

城域以太网供应商越来越依赖于VLAN标记功能和交换机提供的隔离。说那是不公平的 没有 使用VLAN提供的安全性。但可以公平地说,在不受信任的互联网连接或DMZ网络的情况下,最好使用物理上独立的交换机来承载这种“敏感”流量而不是交换机上的VLAN,这些交换机也会带来您可靠的“防火墙后”流量。

将第3层带入图片

到目前为止,这个答案所讨论的一切都与第2层 - 以太网帧有关。如果我们开始将第3层引入其中会发生什么?

让我们回到人为的建筑示例。您已经接受了VLAN,它们选择将每个租户的端口配置为单独VLAN的成员。您已配置中继端口,以便每个楼层的交换机可以将标记有原始VLAN编号的帧交换到楼上和楼下的交换机。一个租户可以将计算机分布在多个楼层,但由于您熟练的VLAN配置技能,这些物理上分布的计算机似乎都可以是同一物理LAN的一部分。

您已经充满了自己的IT成就,决定开始为租户提供互联网连接。你买一个胖的互联网管道和路由器。你把这个想法浮动到你所有的租户,其中两个立即买入。幸运的是,你的路由器有三个以太网端口。将一个端口连接到胖Internet管道,将另一个端口连接到分配用于访问第一个租户VLAN的交换机端口,将另一个端口连接到分配用于访问第二个租户VLAN的端口。您可以在每个租户的网络中使用IP地址配置路由器的端口,并且租户可以通过您的服务开始访问Internet!收入增加,你很高兴。

不久,另一位租户决定上网。但是,你的路由器上没有端口了。该怎么办?

幸运的是,你买了一台支持在其以太网端口上配置“虚拟子接口”的路由器。简而言之,此功能允许路由器接收和解释标记有原始VLAN编号的帧,并使虚拟(即非物理)接口配置适合其将与之通信的每个VLAN的IP地址。实际上,这允许您“复用”路由器上的单个以太网端口,使其看起来像多个物理以太网端口一样。

将路由器连接到其中一台交换机的中继端口,并配置与每个租户的IP寻址方案对应的虚拟子接口。每个虚拟子接口配置有分配给每个客户的VLAN编号。当一个帧离开交换机上的中继端口,绑定到路由器时,它将带有一个带有原始VLAN号的标签(因为它是一个中继端口)。路由器将解释此标记并将数据包视为到达与该VLAN对应的专用物理接口。同样,当路由器响应请求向交换机发送帧时,它将向帧添加VLAN标记,使得交换机知道响应帧应该被传送到哪个VLAN。实际上,您已将路由器配置为“出现”为多个VLAN中的物理设备,而仅使用交换机和路由器之间的单个物理连接。

Sticks和Layer 3交换机上的路由器

使用虚拟子接口,您已经能够向所有租户销售Internet连接,而无需购买具有25+以太网接口的路由器。您对自己的IT成就非常满意,因此当您的两位租户向您提出新请求时,您会做出积极的回应。

这些租户选择在项目上“合作”,他们希望允许从一个租户办公室(一个给定VLAN)中的客户端计算机访问另一个租户办公室(另一个VLAN)中的服务器计算机。由于他们都是您的Internet服务的客户,因此在您的核心Internet路由器(在其中为每个租户的VLAN配置了虚拟子接口)上进行相当简单的ACL更改,以允许流量在其VLAN之间流动从他们的VLAN到互联网。您进行更改并在途中发送租户。

第二天,您收到两个租户的投诉,即一个办公室的客户端计算机与第二个办公室的服务器之间的访问速度非常慢。服务器和客户端计算机都有与您的交换机的千兆以太网连接,但文件仅以45Mbps的速度传输,巧合的是,这大约是核心路由器连接到交换机的速度的一半。显然,从源VLAN流向路由器并从路由器返回到目标VLAN的流量正受到路由器与交换机连接的瓶颈。

你用你的核心路由器做了什么,允许它在VLAN之间路由流量,通常被称为“棒上路由器”(一种可以说是愚蠢的异想天开的委婉说法)。此策略可以很好地工作,但流量只能在VLAN之间流动,最高可达路由器与交换机连接的容量。如果某种程度上,路由器可以与以太网交换机本身的“胆量”相结合,它可以更快地路由流量(因为根据制造商的规格表,以太网交换机本身能够切换2Gbps的流量)。

“第3层交换机”是以太网交换机,从逻辑上讲,它包含一个埋在自身内部的路由器。我发现将第3层交换机视为具有隐藏在交换机内的微小且快速的路由器非常有帮助。此外,我建议您将路由功能视为与第3层交换机提供的以太网交换功能明显不同的功能。出于所有意图和目的,第3层交换机包含在单个机箱中的两个不同设备。

第3层交换机中的嵌入式路由器以一定速度连接到交换机的内部交换结构,该速度通常允许在线速或接近线速的VLAN之间路由数据包。类似于您在“路由器上的路由器”上配置的虚拟子接口,第3层交换机内的这个嵌入式路由器可以配置虚拟接口,这些接口“显示”为“访问”到每个VLAN的连接。这些从VLAN到第3层交换机内的嵌入式路由器的逻辑连接称为交换虚拟接口(SVI),而不是被称为虚拟子接口。实际上,第3层交换机内的嵌入式路由器具有一定数量的“虚拟端口”,可以“插入”交换机上的任何VLAN。

嵌入式路由器的执行方式与物理路由器相同,只是它通常没有与物理路由器相同的动态路由协议或访问控制列表(ACL)功能(除非您购买了非常好的第3层)开关)。然而,嵌入式路由器具有非常快的优点,并且没有与其插入的物理交换机端口相关联的瓶颈。

对于我们这里与“合作”租户的示例,您可以选择获取第3层交换机,将其插入中继端口,以便来自两个客户VLAN的流量到达它,然后配置具有IP地址和VLAN成员资格的SVI,以便它客户VLAN中“出现”。完成后,只需调整核心路由器上的路由表和第3层交换机中的嵌入式路由器,以便租户VLAN之间的流量由第3层交换机内的嵌入式路由器路由。 “棒上的路由器”。

使用第3层交换机并不意味着仍然不会出现与交换机互连的中继端口带宽相关的瓶颈。然而,这是VLAN解决的问题的正交问题。 VLAN与带宽问题无关。通常,通过获得更高速的交换机间连接或使用链路聚合协议将几个低速连接“绑定”在一起形成虚拟的高速连接来解决带宽问题。除非所有创建帧的设备都要由后面3个交换机内的嵌入式路由器路由,否则它们本身就会直接插入第3层交换机的端口,您仍然需要担心交换机之间的中继带宽。第3层交换机不是灵丹妙药,但它通常比“棒上的路由器”更快。

动态VLAN

最后,某些交换机中有一个功能可以提供动态VLAN成员资格。不是将给定端口指定为给定VLAN的访问端口,而是可以在连接设备时动态更改端口的配置(访问或中继,以及哪些VLAN)。动态VLAN是一个更高级的主题,但知道功能存在可能会有所帮助。

供应商之间的功能各不相同,但通常您可以根据所连接设备的MAC地址,设备的802.1X身份验证状态,专有和基于标准的协议(例如,CDP和LLDP,以允许IP电话)来配置动态VLAN成员资格“发现”语音流量的VLAN编号),分配给客户端设备的IP子网或以太网协议类型。


204
2017-10-07 04:37



又来了黄金,对吧? :) - squillman
+1你明显付出了相当大的努力,谢谢! - Tim Long
+1:哇!很好的答案。 - Arun Saha
喜欢这个:“未经授权的无偿系统管理服务”;) - problemPotato
@guntbert - 我很高兴这对你有所帮助。 - Evan Anderson


VLAN是“虚拟局域网”。以下是我的理解 - 我的背景主要是系统工程和管理,其中包括OO编程和脚本编写。

VLAN旨在跨多个硬件设备创建隔离网络。旧时代的传统LAN可能仅存在于专用于特定网络的单个硬件设备的情况下。连接到该网络设备的所有服务器/设备(交换机或集线器取决于历史时间帧)通常被允许在LAN之间自由通信。

VLAN的不同之处在于,您可以通过在VLAN中将服务器组合在一起来互连多个网络设备并创建隔离网络,从而无需为单个LAN配备“专用”网络设备。可配置VLAN和支持的服务器/设备的数量因网络设备制造商而异。

再次取决于供应商,我没有 认为 所有服务器都需要位于同一子网上才能成为同一VLAN的一部分。对于传统网络配置,我相信他们做了(网络工程师在此处插入校正)。

使VLAN与VPN不同的是“私有”字母“P”。通常VLAN流量未加密。

希望有所帮助!


8
2017-10-07 02:46



一个急需的短网关解决了解VLAN。更多的投票进入了很多细节,因此,对后代可能有好处,但如果你想获得一些关于这个主题的快速知识/理解,那就没什么用了。既然我知道我从这个答案中做了什么,我总是可以回去学习更多。 - Harsh Kanchina