网络技术:VLAN 虚拟局域网

虚拟局域网#

交换型网络#

在最早的集线器搭建的网络中,所有的设备都在同一个冲突域和广播域中,这会滋生很多问题。后来引入了交换机之后就可以搭建交换型网络,交换机收到数据包以后,会查找内存中的地址对照表以确定目的 MAC 需要从哪个端口转发。交换机可以划分冲突域(每个与交换机端口相连的设备都是一个独立的冲突域),但是还是无法划分广播域,也就是说广播数据还是会发送到整个局域网中。
因此如果在该网络中的用户和设备越来越多,每台交换机需要处理的广播和分组也就越多,就容易出现诸如广播风暴的问题。同时交换型网络还会有安全问题,因为在没有设置诸如密码等安全措施的情况下,网络中的每个用户都能看到所有的设备。

VLAN#

VLAN 是一个网络用户和网络资源的逻辑编组,它们和管理者定义的交换机端口相连。通过创建 VLAN 可以指定交换机端口为不同的子网服务,从而在第 2 层交换型网络中创建更小的广播域。——《CCNA 学习指南(第 7 版)》

这么讲文绉绉的,我基于个人理解做个类比。假设计算机学院今年招生 400 人,我们可以直接把这 400 人作为一个班级进行培养。这种做法的弊端是显而易见的,如果学院要通知事情必须统一通知这 400 位同学,材料也得统一进行整理,不同专业的每位同学有事情都需要直接找整个年级的负责人。换句话来说,400 位同学放在一个班级中超级不好管理,无论是时间开销还是事务的复杂性都是很大的。这种情况就类似于集线器搭建的网络,只有一个广播域和一个冲突域。

比较好的方式就是分班,把这 400 位同学按照专业和人数分为多个班级,这样每个班级就可以由自己的班主任和班委负责管理,不需要什么事情都找年级负责人了。这种情况就和 VLAN 的作用很像了,通过把一些设备划分到同一个虚拟的局域网中,就可以减小广播域的规模,同时增加了广播域的数量。也就是说虽然局域网中的设备在物理上是在同一个局域网中,但在逻辑上这个的局域网被划分为了多个 VLAN。
按照这种类比,为什么交换型网络不能类比为分班呢?因为交换型网络只能划分冲突域,不能划分广播域。类比为分班就相当于虽然每位同学有事情可以找自己的班级负责人,但是要通知事情还是需要由年级统一通知 400 位同学,而不是以班级为单位进行通知。

VLAN 的功能#

VLAN 能够将 LAN 中的设备分组,VLAN 中的一组设备通信时就如同连接到同一条电缆,但是 VALN 是一种逻辑上的连接而不是物理连接。VLAN 管理员根据功能、项目组或应用程序等因素划分网络,而不会受到物理空间的限制,也就是说只需要让设备加入某个 VLAN,就可以在这个逻辑上的局域网内和同样属于该局域网内的设备通信。虽然 VLAN 中的设备和其他 VLAN 设备可能会共享某些共用的基础设施,但是呈现出来的效果是这些设备将运行在独立的网络上,互不干扰。
VLAN 创建逻辑广播域,可以跨越多个物理 LAN 网段,因此 VLAN 可以将大的广播域细分成小的广播域,这样就能提高网络的性能。这意味着一个 VLAN 中的某个设备发送广播,该广播不会扩散到其他 VLAN,只会在该设备所在的 VLAN 里传播。同时,VLAN 可以根据特定的用户分组实施访问和安全策略

VLAN 的优点#

控制广播#

属于同一个广播的所有设备属于一个广播域,这些广播不会通过连接到其他 VLAN 的交换机端口转发。VLAN 中主机发送的单播、组播和广播流量,数据传输都仅限于该 VLAN 的设备。

安全性#

在传统的使用集线器的网络中,任何人都可以访问所属的局域网中的资源,而且任何人都可以监视网络传输的数据。VLAN 的创建可以对局域网内的设备和端口进行严格的控制,而且也可以限制外界对 VLAN 之内的资源访问。

灵活性#

VLAN 内的广播无法转发到连接其他 VLAN 的端口,可以防止广播风暴的发生。VLAN 可以划分为多个更小的 VLAN,从而进一步限制广播域的大小。

可扩展性#

对于新加入 VLAN 的设备,只需要把用户连接的交换机接口加入对应的 VLAN 即可,不需要在物理设备上接入。

VLAN 中继#

接入端口#

当交换机的端口被设置为接入端口时,该端口只属于一个 VLAN,只能为该 VLAN 传输数据流。如果这种端口不会对数据标记 VLAN,这就意味着接入端口会丢弃标记过的分组。交换机把帧发给和接入链路相连接的设备前,会先把 VLAN 的标志信息删除,这也意味着接入链路不能和 VLAN 外部的设备通信。
使用接入接口时,同一个 VLAN 的设备要在交换机间传播帧,都需要另外接线。

中继端口#

中继端口(VLAN TRUNK)可以允许交换机之间传播所有 VLAN 的流量,它是一条 100 或 1000 Mbit/s 的点到点链路。中继链路可以让属于同一个 VLAN,但是属于不同交换机的设备可以通信。VLAN TRUNK 不属于具体的 VLAN,而是作为多个 VLAN 中路由器和交换机之间的通道。接入端口收到数据之后,会认为该数据是属于该接口所属的 VLAN 的数据。
如果没有 VLAN TRUNK,VLAN 就显得不是很有用。只要配置了 VLAN TRUNK 接口,交换机之间 VLAN 互联就不需要另外接线了。

标识 VLAN#

VLAN ID#

当配置了 VLAN TRUNK 时,由于 TRUNK 需要把帧传输到另一个交换机的相同 VLAN 的接口上,因此表示帧属于哪个 VLAN 是很重要的。标识帧的方式是在 TRUNK 转发帧时,在帧中添加 VLAN ID 字段,该字段称之为 VLAN 徽记。
VLAN ID 在转发帧时的工作流程为:进入交换结构后交换机提取 VLAN ID 字段,然后查看
过滤表**,若存在到达目的交换机的另一条 VLAN TRUNK,就从该 VLAN TRUNK 转发出去。帧到达连接到同一 VLAN 的目的设备的接入端口时,VLAN ID 会被删除从而让接入接口能正常接收帧。
如果 VLAN ID 与出站端口的 VLAN 相同,则发送时可以不标记,对于其他情况下都必须标记。

IEEE 802.1Q#

802.1Q 是 IEEE 指定的帧标记的标准,802.1Q 在帧中插入一个字段来标记 VLAN。启用该协议需要先配置 VLAN TRUNK,然后指定它使用 802.1Q 封装数据。

VLAN 的类型#

默认 VLAN#

交换机加载默认配置进行初始化时,所有交换机端口都默认属于默认 VLAN,思科交换机的默认 VLAN 是 VLAN 1。VLAN 1 具有所有 VLAN 的功能,它不能被删除和重命名。

本征 VLAN#

未标记的 VLAN 流量都从本征 VLAN 转发,本征 VLAN 默认为 VLAN 1,最好把本征 VLAN 配置为未使用的 VLAN。

数据 VLAN#

数据 VLAN 用于传输用户生成的流量,将网络分为用户组或设备组。

管理 VLAN#

管理 VLAN 是配置用于访问交换机功能 VLAN,默认情况下是 VLAN 1,最好不要使用 VLAN 1 作为管理 VLAN。可以对管理 VLAN 的交换机虚拟接口分配 IP 地址和掩码,使用例如 Telnet 或 SSH 等进行管理。

VLAN 间路由#

由于 VLAN 在逻辑上也是局域网,因此如果没有路由器进行转发,不同 VLAN 上的设备就无法通信。使用路由器将网络流量从一个 VLAN 转发到另一个 VLAN 的过程称之为 VLAN 间路由

  • 由于第二层交换机的功能有限,所以适合进行 VLAN 间通信。

传统 VLAN 间路由#

传统 VLAN 间路由使用多个物理接口实现,各个接口必须连接到一个独立的网络,并且配置不同的子网。连接至路由器的交换机端口处于接入模式,并且把路由器的每个物理接口都分配给不同的 VLAN。
传统 VLAN 间路由的方法很浪费接口,且效率低下,现在已经不再使用。

单臂路由#

单臂路由是通过单个物理接口在网络中的多个 VLAN 之间路由流量的方式,路由器和交换机只需要一个物理接口就可以在多个 VLAN 之间传输数据。将路由器接口配置为中继接口,通过接收中继接口上来自相邻交换机的 VLAN 标记流量和子接口进行内部路由。子接口是虚拟接口,和单个物理接口相关联。

配置 VLAN 和单臂路由#

实验拓扑#

思科 5.1.3.7 Lab 配置 802.1Q 基于 TRUNK 的 VLAN 间路由的实验拓扑如下。

地址分配表:

设备 接口 IP 地址 子网掩码 默认网关
R1 G0/1.1 192.168.1.1 255.255.255.0 N/A
G0/1.10 192.168.10.1 255.255.255.0 N/A
G0/1.20 192.168.20.1 255.255.255.0 N/A
Lo0 209.165.200.225 255.255.255.224 N/A
S1 VLAN 1 192.168.1.11 255.255.255.0 192.168.1.1
S2 VLAN 1 192.168.1.12 255.255.255.0 192.168.1.1
PC-A NIC 192.168.10.3 255.255.255.0 192.168.10.1
PC-B NIC 192.168.20.3 255.255.255.0 192.168.20.1

交换机端口分配规格:

交换机 端口 模式 网络
S1 F0/1 802.1Q TRUNK N/A
S2 F0/1 802.1Q TRUNK N/A
S1 F0/5 802.1Q TRUNK N/A
S1 F0/6 VLAN 10 – 学生 192.168.10.0/24
S2 F0/18 VLAN 20 – 教师 192.168.20.0/24

配置 S1#

创建 VLAN#

创建 VLAN 的命令如下,可以使用逗号分隔一系列 VLAN ID 建立多个 VLAN,也可以用 “-” 分隔 2 个 VLAN ID 创建一个范围内的 VLAN。

Copy Highlighter-hljs
Switch(config)# vlan vlan_id Switch(config)# vlan vlan_id_1,vlan_id_2 Switch(config)# vlan vlan_id_1-vlan_id_2

进入 VLAN 配置模式后,可以使用 name 为 VLAN 命名。

Copy Highlighter-hljs
Switch(config-vlan)# name vlan_name

此时在 S1 上配置交换机端口分配规格表中列出的 VLAN 及其名称。

Copy Highlighter-hljs
S1(config)# vlan 10 S1(config-vlan)# name Students S1(config-vlan)# vlan 20 S1(config-vlan)# name Faculty S1(config-vlan)# exit

为 VLAN 配置接口#

在接口配置模式下,可以使用该命令将接口配置为 trunk 端口

Copy Highlighter-hljs
Switch(config-if)# switchport mode trunk

此时将连接到 R1 的接口配置为 TRUNK,将连接到 S2 的接口也配置为 TRUNK。

Copy Highlighter-hljs
S1(config)# interface f0/1 S1(config-if)# switchport mode trunk S1(config-if)# interface f0/5 S1(config-if)# switchport mode trunk

在接口配置模式下,可以使用该命令将接口配置为接入端口

Copy Highlighter-hljs
Switch(config-if)# switchport mode access

使用该命令可以将一个接口分配给一个 VLAN。

Copy Highlighter-hljs
Switch(config-if)# switchport access vlan vlan_id

此时将 PC-A 的接入端口分配给 VLAN 10。

Copy Highlighter-hljs
S1(config-if)# interface f0/6 S1(config-if)# switchport mode access S1(config-if)# switchport access vlan 10

使用命令 show vlan brief 查看 VLAN 配置情况。

Copy Highlighter-hljs
S1#show vlan brief

配置 S2#

在 S2 上,配置交换机端口分配规格表中列出的 VLAN 及其名称。

Copy Highlighter-hljs
S2(config)# vlan 10 S2(config-vlan)# name Students S2(config-vlan)# vlan 20 S2(config-vlan)# name Faculty

在 S2 上,将 PC-B 的接入端口分配给 VLAN 20。

Copy Highlighter-hljs
S2(config-if)# interface f0/18 S2(config-if)# switchport mode access S2(config-if)# switchport access vlan 20

在 S2 上,将连接到 S1 的接口配置为 TRUNK。

Copy Highlighter-hljs
S2(config)# interface f0/1 S2(config-if)# switchport mode trunk

R1 配置基于 TRUNK 的单臂路由#

要配置单臂路由,首先需要为路由器连接到 VLAN 的接口配置子接口。使用如下命令可以创建,语法很简单,就是在物理接口后面加上一个点,再加上子接口的编号。

Copy Highlighter-hljs
Router(config)# interface interface_id.subinterface_id

此时为 VLAN 1 配置子接口,在 R1 的 G0/1 上为 VLAN 1 创建子接口,使用 1 作为子接口 ID。

Copy Highlighter-hljs
R1(config)# interface g0/1.1

子接口必须使用如下命令,以支持某个 VLAN 的 802.1Q 的 trunk 链路。

Copy Highlighter-hljs
Router(config-subif)# encapsulation dot1Q vlan_id

此时配置子接口 g0/1.1,使其在 VLAN 1 上运行。

Copy Highlighter-hljs
R1(config-subif)# encapsulation dot1Q 1

使用地址表中的 IP 地址配置子接口。

Copy Highlighter-hljs
R1(config-subif)# ip address 192.168.1.1 255.255.255.0

为 VLAN 10 配置子接口

Copy Highlighter-hljs
R1(config-subif)# interface g0/1.10 R1(config-subif)# encapsulation dot1Q 10 R1(config-subif)# ip address 192.168.10.1 255.255.255.0

为 VLAN 20 配置子接口。

Copy Highlighter-hljs
R1(config-subif)# interface g0/1.20 R1(config-subif)# encapsulation dot1Q 20 R1(config-subif)# ip address 192.168.20.1 255.255.255.0

启用 G0/1 接口。

Copy Highlighter-hljs
R1(config)# interface g0/1 R1(config-if)# no shutdown

查看接口状态。

查看路由表。

参考资料#

《思科网络技术学院教程(第6版):路由和交换基础》,[加] Bob Vachon,[美] Allan Johnson 著,思科系统公司 译,人民邮电出版社
《CCNA 学习指南(第 7 版)》,[美] Todd Lammle 著,袁国忠 徐宏 译,人民邮电出版社
《计算机网络(第七版)》 谢希仁 著,电子工业出版社
园区网内部划分网络
百度百科:交换机

posted @   乌漆WhiteMoon  阅读(979)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示
CONTENTS