Mur*_*iar 142 networking ethernet switch vlan trunk
什么是 VLAN?他们解决什么问题?
我正在帮助一个朋友学习基本的网络,因为他刚刚成为一家小公司的唯一系统管理员。我一直在向他指出与各种网络主题相关的 Serverfault 上的各种问题/答案,并注意到一个差距 - 似乎没有一个答案可以从第一原则解释什么是 VLAN。本着如何子网划分工作的精神,我认为在这里提出一个带有规范答案的问题会很有用。
答案中要涵盖的一些潜在主题:
编辑:明确地说,我已经知道 VLAN 是如何工作的 - 我只是认为 Serverfault 应该有一个涵盖这些问题的答案。如果时间允许,我也会提交我自己的答案。
Eva*_*son 244
虚拟 LAN (VLAN) 是一种抽象,允许单个物理网络模拟多个并行物理网络的功能。这很方便,因为在某些情况下,您可能需要多个并行物理网络的功能,但又不想花钱购买并行硬件。我将在这个答案中谈论以太网 VLAN(即使其他网络技术可以支持 VLAN),我不会深入探讨每一个细微差别。
作为一个纯粹人为设计的示例场景,假设您拥有一座办公楼,并出租给租户。作为租约的一个好处,每个租户都将在办公室的每个房间获得实时以太网插孔。您为每层楼购买一个以太网交换机,将它们连接到该楼层每个办公室的插孔,然后将所有交换机连接在一起。
最初,您将空间租给两个不同的租户——一个在 1 楼,一个在 2 楼。这些租户中的每一个都使用静态 IPv4 地址配置他们的计算机。两个租户使用不同的 TCP/IP 子网,一切似乎都运行良好。
后来,一个新租户租了 3 层的一半,并带来了这些新奇的 DHCP 服务器之一。时间流逝,一楼租户也决定加入 DHCP 潮流。这是事情开始出错的时候。3 楼的租户报告说,他们的一些计算机正在从不是他们的 DHCP 服务器的机器上获取“有趣”的 IP 地址。很快,1楼的租户也报告了同样的事情。
DHCP 是一种协议,它利用以太网的广播功能允许客户端计算机动态获取 IP 地址。因为租户都共享同一个物理以太网网络,所以他们共享同一个广播域。从网络中的任何计算机发送的广播数据包都会将所有交换机端口泛滥到所有其他计算机。1 楼和 3 楼的 DHCP 服务器将接收所有 IP 地址租用请求,并将有效地进行决斗,看看谁可以先回答。这显然不是您希望租户体验的行为。但是,这是没有任何 VLAN 的“扁平”以太网网络的行为。
更糟糕的是,2 楼的租户获得了这个“Wireshark”软件,并报告说,他们不时看到来自交换机的流量,这些流量引用了他们从未听说过的计算机和 IP 地址。他们的一名员工甚至发现,通过将分配给他的 PC 的 IP 地址从 192.168.1.38 更改为 192.168.0.38,他可以与这些其他计算机进行通信!据推测,他距离为其他租户之一执行“未经授权的无偿系统管理服务”仅几步之遥。不好。
你需要一个解决方案!您只需拔下地板之间的插头,就可以切断所有不需要的通信!是的!那是票...
这可能会奏效,除非您有一个新租户,他将租用地下室的一半和 3 楼未占用的一半。如果 3 楼开关和地下室开关之间没有连接,新租户将不会能够在他们的计算机之间进行通信,这些通信将分布在他们的两个楼层。拔插头不是答案。更糟糕的是,新租户又带来了一台这样的 DHCP 服务器!
您想为每个租户购买物理上独立的以太网交换机集,但看到您的建筑物有 30 层,其中任何一层都可以细分为 4 种方式,潜在的老鼠巢之间的地板到地板电缆大量并行以太网交换机可能是一场噩梦,更不用说价格昂贵了。如果只有一种方法可以使单个物理以太网网络像多个物理以太网网络一样运行,每个物理以太网网络都有自己的广播域。
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 则不会t 从新的 DHCP 服务器获取 IP 地址。优秀!问题解决了!
哦,等等...我们如何将 VLAN 13 数据传输到地下室?
您的半层 3 层和半地下室租户想要将地下室的计算机连接到他们在 3 层的服务器。您可以直接从分配给他们 3 层交换机中的 VLAN 的端口之一运行电缆到地下室和生活会很好,对吧?
在 VLAN(802.1Q 之前的标准)的早期,您可能会这样做。整个地下室交换机实际上是 VLAN 13(您选择分配给 3 楼和地下室的新租户的 VLAN)的一部分,因为该地下室交换机将由 3 楼分配的端口“馈送”到 VLAN 13。
此解决方案将有效,直到您将地下室的另一半租给您的 1 楼租户,该租户也希望在其 1 楼和地下室计算机之间进行通信。您可以使用 VLAN 拆分地下室交换机(例如,分成 VLAN 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 时,您可以使用“中继”端口连接这些交换机。这涉及将每个交换机上的端口配置从“访问”模式更改为“中继”模式(在非常基本的配置中)。
当端口配置为中继模式时,交换机发送该端口的每个帧都会在该帧中包含一个“VLAN 标记”。这个“VLAN 标记”不是客户端发送的原始帧的一部分。相反,这个标签是由发送交换机在从中继端口发送帧之前添加的。此标记表示与帧源自的端口相关联的 VLAN 编号。
接收交换机可以查看标记以确定该帧源自哪个 VLAN,并根据该信息仅将帧转发到分配给始发 VLAN 的端口。由于连接到“访问”端口的设备不知道正在使用 VLAN,因此在将帧发送到配置为访问模式的端口之前,必须从帧中去除“标记”信息。标签信息的剥离会导致整个 VLAN 中继过程对客户端设备隐藏,因为它们接收的帧将不带有任何 VLAN 标签信息。
在现实生活中配置 VLAN 之前,我建议在测试交换机上为中继模式配置一个端口,并使用嗅探器(如 Wireshark)监视从该端口发出的流量。您可以从另一台计算机创建一些示例流量,插入访问端口,然后查看离开中继端口的帧实际上将大于测试计算机发送的帧。您将在 Wireshark 的帧中看到 VLAN 标记信息。我发现真正值得看看在嗅探器中发生的事情。在这一点上,阅读 802.1Q 标记标准也是一件不错的事情(特别是因为我不是在谈论“本地 VLAN”或双重标记之类的东西)。
随着您在建筑物中租用越来越多的空间,VLAN 的数量也会增加。每次添加新 VLAN 时,您都会发现必须登录越来越多的以太网交换机并将该 VLAN 添加到列表中。如果有某种方法可以将该 VLAN 添加到单个配置清单并让它自动填充每个交换机的 VLAN 配置,那不是很好吗?
Cisco 专有的“VLAN 中继协议”(VTP) 或基于标准的“多 VLAN 注册协议”(MVRP——以前拼写为 GVRP) 等协议实现了这一功能。在使用这些协议的网络中,单个 VLAN 创建或删除条目会导致协议消息被发送到网络中的所有交换机。该协议消息将 VLAN 配置的更改传达给其余交换机,这些交换机反过来修改它们的 VLAN 配置。VTP 和 MVRP 不关心哪些特定端口被配置为特定 VLAN 的访问端口,而是在将 VLAN 的创建或删除传达给所有交换机时很有用。
当您对 VLAN 感到满意时,您可能想返回并阅读“VLAN 修剪”,它与 VTP 和 MVRP 等协议相关联。现在没有什么需要特别关注的。(维基百科上的VTP 文章有一个很好的图表,解释了 VLAN 修剪及其好处。)
在我们走得更远之前,重要的是要考虑现实生活而不是人为的例子。代替在这里复制另一个答案的文本,我将向您推荐我的答案:何时创建 VLAN。它不一定是“初学者级别的”,但现在值得一看,因为在回到人为的示例之前,我将简要地参考它。
对于“tl;dr”人群(无论如何,他们此时肯定都已经停止阅读了),上面该链接的要点是:创建 VLAN 以缩小广播域,或者当您出于某些特定原因(安全、政策等)。使用 VLAN 真的没有任何其他好的理由。
在我们的示例中,我们使用 VLAN 来限制广播域(以保持 DHCP 等协议正常工作),其次是因为我们希望在不同租户的网络之间进行隔离。
一般来说,为了方便、便于隔离以及 ARP 协议的工作方式,VLAN 和 IP 子网之间通常存在一对一的关系。
正如我们在本答案开头所见,可以在同一个物理以太网上使用两个不同的 IP 子网而不会出现问题。如果您使用 VLAN 来缩小广播域,您将不希望与两个不同的 IP 子网共享同一个 VLAN,因为您将组合它们的 ARP 和其他广播流量。
如果您出于安全或策略原因使用 VLAN 来隔离流量,那么您可能也不希望在同一 VLAN 中组合多个子网,因为这将违背隔离的目的。
IP 使用基于广播的协议,地址解析协议 (ARP),将 IP 地址映射到物理(以太网 MAC)地址。由于 ARP 是基于广播的,因此将同一 IP 子网的不同部分分配给不同的 VLAN 会出现问题,因为一个 VLAN 中的主机将无法从另一个 VLAN 中的主机接收 ARP 回复,因为广播不在 VLAN 之间转发。您可以通过使用代理 ARP 来解决这个“问题”,但最终,除非您有充分的理由需要跨多个 VLAN 拆分 IP 子网,否则最好不要这样做。
最后,值得注意的是 VLAN 并不是一个很好的安全设备。许多以太网交换机存在错误,允许来自一个 VLAN 的帧发送到分配给另一个 VLAN 的端口。以太网交换机制造商已经努力修复这些错误,但是否会出现完全无错误的实现值得怀疑。
在我们设计的示例中,2 层员工可能会通过将其流量隔离到 VLAN 中来阻止向另一个租户提供免费系统管理“服务”的时间。不过,他也可能想出如何利用交换机固件中的漏洞,让他的流量也“泄漏”到另一个租户的 VLAN 上。
城域以太网提供商越来越依赖 VLAN 标记功能和交换机提供的隔离。说使用 VLAN没有提供安全性是不公平的。不过,公平地说,在具有不受信任的 Internet 连接或 DMZ 网络的情况下,最好使用物理上独立的交换机来承载这种“敏感”流量,而不是使用交换机上的 VLAN 来承载受信任的“防火墙后”流量。
到目前为止,这个答案所讨论的所有内容都与第 2 层 - 以太网帧有关。如果我们开始将第 3 层引入其中会发生什么?
让我们回到人为的建筑示例。您已经接受了 VLAN 选择将每个租户的端口配置为单独 VLAN 的成员。您已经配置了中继端口,这样每个楼层的交换机都可以将标有源 VLAN 编号的帧交换到上下楼层的交换机。一个租户可以拥有分布在多个楼层的计算机,但是,由于您熟练的 VLAN 配置技能,这些物理上分布的计算机可能看起来都是同一个物理 LAN 的一部分。
您对自己的 IT 成就非常满意,以至于您决定开始为租户提供 Internet 连接。你买了一个胖互联网管道和一个路由器。您将这个想法传达给所有租户,其中两个立即购买。幸运的是,您的路由器具有三个以太网端口。您将一个端口连接到您的胖 Internet 管道,另一个端口连接到分配给第一个租户的 VLAN 访问权限的交换机端口,另一个端口连接到分配给第二个租户的 VLAN 访问权限的端口。您在每个租户的网络中使用 IP 地址配置路由器的端口,租户开始通过您的服务访问 Internet!收入增加,你很高兴。
但很快,另一个租户决定使用您的 Internet 产品。但是,您的路由器上的端口用完了。该怎么办?
幸运的是,您购买了支持在其以太网端口上配置“虚拟子接口”的路由器。简而言之,此功能允许路由器接收和解释标有原始 VLAN 编号的帧,并为虚拟(即非物理)接口配置适用于它将与之通信的每个 VLAN 的 IP 地址。实际上,这允许您“多路复用”路由器上的单个以太网端口,使其看起来像多个物理以太网端口。
您将路由器连接到其中一台交换机的中继端口,并配置与每个租户的 IP 寻址方案相对应的虚拟子接口。每个虚拟子接口都配置有分配给每个客户的 VLAN 编号。当一个帧离开交换机上的中继端口,发往路由器时,它将携带一个带有原始 VLAN 编号的标记(因为它是一个中继端口)。路由器将解释此标记并将数据包视为到达对应于该 VLAN 的专用物理接口。同样,当路由器向交换机发送帧以响应请求时,它将向帧添加 VLAN 标记,以便交换机知道应将响应帧传送到哪个 VLAN。实际上,您已将路由器配置为“出现”
使用虚拟子接口,您可以向所有租户出售 Internet 连接,而无需购买具有 25 个以上以太网接口的路由器。您对自己的 IT 成就相当满意,因此当您的两个租户向您提出新请求时,您会积极响应。
这些租户选择在项目上“合作”,并且他们希望允许从一个租户办公室(一个给定 VLAN)中的客户端计算机访问另一个租户办公室(另一个 VLAN)中的服务器计算机。由于他们都是您的 Internet 服务的客户,因此在您的核心 Internet 路由器(在其上为每个租户的 VLAN 配置了一个虚拟子接口)中的 ACL 进行了相当简单的更改,以允许流量在它们的 VLAN 之间流动以及从他们的 VLAN 到 Internet。您进行更改并让租户上路。
第二天,您收到两个租户的投诉,称一个办公室的客户端计算机与第二个办公室的服务器之间的访问速度非常慢。服务器和客户端计算机都有与您的交换机的千兆以太网连接,但文件仅以大约 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 层交换机中的嵌入式路由器路由。 “棒子上的路由器”。
使用第 3 层交换机并不意味着仍然不会存在与互连交换机的中继端口带宽相关的瓶颈。不过,这与 VLAN 解决的问题是正交的。VLAN 与带宽问题无关。通常,带宽问题可以通过获得更高速度的交换机间连接或使用链路聚合协议将几个低速连接“绑定”到一个虚拟的高速连接中来解决。除非所有创建要由后 3 层交换机内的嵌入式路由器路由的帧的设备本身都直接插入第 3 层交换机上的端口,否则您仍然需要担心交换机之间的中继带宽。第 3 层交换机不是万能的,但它通常比“
最后,某些交换机具有提供动态 VLAN 成员资格的功能。不是将给定端口分配为给定 VLAN 的接入端口,而是可以在连接设备时动态更改端口的配置(接入或中继,以及哪些 VLAN)。动态 VLAN 是一个更高级的主题,但了解该功能的存在可能会有所帮助。
功能因供应商而异,但通常您可以根据所连接设备的 MAC 地址、设备的 802.1X 身份验证状态、专有和基于标准的协议(例如,CDP 和 LLDP)配置动态 VLAN 成员资格,以允许 IP 电话“发现”语音流量的 VLAN 编号)、分配给客户端设备的 IP 子网或以太网协议类型。
小智 11
VLAN 是“虚拟局域网”。以下是我的理解——我的背景主要是系统工程和管理,有面向对象编程和很多脚本的一面。
VLAN 旨在创建跨多个硬件设备的隔离网络。过去的传统 LAN 可能只存在于您拥有专用于特定网络的单个硬件设备的地方。连接到该网络设备(交换机或集线器,取决于历史时间范围)的所有服务器/设备通常允许在 LAN 之间自由通信。
VLAN 的不同之处在于,您可以将多个网络设备互连并通过将服务器分组到一个 VLAN 中来创建隔离网络,从而无需为单个 LAN 配备“专用”网络设备。可配置的 VLAN 和支持的服务器/设备的数量因网络设备制造商而异。
同样取决于供应商,我不认为所有服务器都需要在同一子网上才能成为同一 VLAN 的一部分。对于传统网络配置,我相信他们做到了(网络工程师在此处插入更正)。
使 VLAN 与 VPN 不同的是字母“P”代表“私有”。通常 VLAN 流量不加密。
希望有帮助!