最近在帮朋友公司做网络改造,发现他们内部几十台设备都在一个广播域里,ARP风暴、IP冲突等问题频发,运维同学每天疲于奔命。其实,只要合理划分VLAN,就能轻松解决这类问题。VLAN(虚拟局域网)是网络工程师必须掌握的核心技能,无论是中小企业的网络规划,还是大型数据中心的多租户隔离,都离不开它。
本文将从零开始,手把手带你掌握交换机的VLAN配置。无论你是刚接触网络的新手,还是想系统梳理VLAN知识的工程师,都能从中获益。我们将涵盖VLAN的基础概念、华为/华三/锐捷等主流厂商的配置命令、Trunk和Access口详解、三层交换实现VLAN间路由,以及使用Wireshark抓包分析VLAN标签等实战内容。最后,还会分享一些工程中的最佳实践和排错思路,帮你避开常见的坑。
1. VLAN基础概念:为什么需要它?
在传统的二层网络中,所有连接在同一台交换机上的设备都属于同一个广播域。这意味着,任何一台设备发出的广播帧(如ARP请求),都会被泛洪到所有其他端口。当设备数量增多时,广播流量会急剧增加,消耗大量带宽和CPU资源,这就是所谓的“广播风暴”。此外,所有设备在逻辑上处于同一平面,缺乏安全边界,一台中毒的PC可能影响整个网络。
VLAN(Virtual Local Area Network,虚拟局域网)技术的出现,完美地解决了上述问题。它允许网络管理员在同一台物理交换机上,逻辑地划分出多个独立的广播域。
你可以把一台物理交换机想象成一栋大楼,VLAN就像是楼里一个个独立的、隔音效果非常好的房间(如财务部、研发部)。每个房间(VLAN)里的对话(广播帧)只会在这个房间内传播,不会影响到其他房间。这样既减少了噪音(广播风暴),又保证了私密性(网络安全)。
VLAN的主要价值:
- 控制广播域,提升性能:将大型广播域划分为多个小型广播域,有效抑制广播风暴,提升网络整体性能和稳定性。
- 增强网络安全性:不同VLAN间的设备在二层是隔离的,即使处于同一台交换机,也无法直接通信。这为不同部门(如财务、研发)或不同安全等级的网络提供了天然的隔离屏障。
- 简化网络管理,提高灵活性:网络设备的增减和移动可以基于逻辑(VLAN ID)而非物理位置进行管理。例如,将研发部的员工从5楼调到3楼,只需将其新工位的端口划入研发VLAN即可,无需更改物理布线。
几个关键术语:
- VLAN ID: 用于标识不同VLAN的编号,范围通常是1-4094。其中,VLAN 1是交换机的默认VLAN,通常不建议用于业务数据。
- Access端口: 通常用于连接终端设备(如PC、服务器、打印机)。Access端口只属于一个VLAN,它接收和发送的数据帧都是不带VLAN标签的。
- Trunk端口: 用于交换机之间的互联,或者连接支持VLAN的路由器/防火墙。Trunk端口可以承载多个VLAN的流量,它在发送数据帧时会打上VLAN标签(Tag),以便对端设备识别该帧属于哪个VLAN。
- PVID (Port VLAN ID): 端口的默认VLAN ID。对于Access口,PVID就是它所属的VLAN ID。对于Trunk口,PVID通常指该端口接收不带标签的帧时,为其分配的VLAN ID。
2. 实验环境准备
在开始配置前,我们需要搭建一个实验环境。对于初学者,强烈推荐使用华为eNSP、H3C HCL或思科 Packet Tracer这类网络模拟器。它们可以免费提供完整的交换机、路由器模拟,让你随意实验而不怕配错。
本文的配置示例将主要以华为交换机(VRP系统)的命令为主,因为其在国内应用广泛,且华三、锐捷等厂商的命令与之相似度高,便于举一反三。同时,我们会对比指出其他厂商的常见命令差异。
实验拓扑图(逻辑描述):我们模拟一个简单的场景:一台核心交换机(三层交换机)下联两台接入层交换机。
- VLAN 10: 用于研发部,网段规划为 192.168.10.0/24。
- VLAN 20: 用于市场部,网段规划为 192.168.20.0/24。
- 接入交换机1(SW-Access1): 端口G0/0/1连接研发部PC1,端口G0/0/2连接市场部PC2。端口G0/0/24上联核心交换机。
- 接入交换机2(SW-Access2): 配置类似,连接PC3和PC4。
- 核心交换机(SW-Core): 作为三层网关,实现VLAN间路由。下联端口与接入交换机互联。
软件准备:
- 华为eNSP模拟器。
- Wireshark抓包软件(用于后续分析数据帧)。
3. 核心配置详解:从Access到Trunk
3.1 创建VLAN
在华为交换机上,创建VLAN非常简单。可以单独创建,也可以批量创建。
# 进入系统视图 <Huawei> system-view [Huawei] sysname SW-Access1 # 1. 创建单个VLAN(例如VLAN 10) [SW-Access1] vlan 10 [SW-Access1-vlan10] description R&D_Department # 可选:为VLAN添加描述 [SW-Access1-vlan10] quit # 2. 批量创建多个VLAN(例如VLAN 10, 20, 30) [SW-Access1] vlan batch 10 20 30 # 查看已创建的VLAN [SW-Access1] display vlan The total number of vlans is : 4 U: Up; D: Down; TG: Tagged; UT: Untagged; MP: Vlan-mapping; ST: Vlan-stacking; # VID Type Ports ----------------------------------------------------- 1 common UT:GE0/0/1(U) GE0/0/2(D) ... # VLAN 1是默认VLAN,所有端口初始都在VLAN 1 10 common UT: ... # 新创建的VLAN,还没有端口加入 20 common UT: 30 common UT:其他厂商命令参考:
- 华三 (H3C): 命令基本相同,
vlan 10,description ...,display vlan。 - 锐捷 (Ruijie):
vlan 10,name R&D_Department,show vlan。 - 思科 (Cisco):
vlan 10,name R&D_Department,show vlan brief。
3.2 配置Access端口
Access端口用于连接终端设备。配置时,需要将端口链路类型指定为Access,并划入特定的VLAN。
# 配置GigabitEthernet 0/0/1端口为Access类型,并划入VLAN 10 [SW-Access1] interface gigabitethernet 0/0/1 [SW-Access1-GigabitEthernet0/0/1] port link-type access # 设置端口为Access模式 [SW-Access1-GigabitEthernet0/0/1] port default vlan 10 # 将端口划入VLAN 10 [SW-Access1-GigabitEthernet0/0/1] quit # 同理,配置G0/0/2端口划入VLAN 20 [SW-Access1] interface gigabitethernet 0/0/2 [SW-Access1-GigabitEthernet0/0/2] port link-type access [SW-Access1-GigabitEthernet0/0/2] port default vlan 20 [SW-Access1-GigabitEthernet0/0/2] quit配置要点:
port link-type access是基础,必须先执行。port default vlan XX执行后,该端口的PVID就被设置为XX,并且端口以Untagged方式加入该VLAN。- 连接该端口的PC,其网卡不需要也不应该配置任何VLAN ID,它发送的就是普通的、无标签的以太网帧。
3.3 配置Trunk端口
Trunk端口用于交换机间互联,允许多个VLAN的流量通过。
# 配置上联端口G0/0/24为Trunk类型 [SW-Access1] interface gigabitethernet 0/0/24 [SW-Access1-GigabitEthernet0/0/24] port link-type trunk # 设置端口为Trunk模式 # 允许指定的VLAN通过(允许VLAN 10和20的流量通过此Trunk) [SW-Access1-GigabitEthernet0/0/24] port trunk allow-pass vlan 10 20 # 设置Trunk端口的PVID(可选,通常保持默认VLAN 1,但建议修改为不使用的VLAN以提高安全) [SW-Access1-GigabitEthernet0/0/24] port trunk pvid vlan 99 # 将PVID设为VLAN 99(一个不用于业务的VLAN) [SW-Access1-GigabitEthernet0/0/24] quitTrunk配置深度解析:
port trunk allow-pass vlan: 这是Trunk端口最重要的命令,它定义了一个“白名单”。只有列表内的VLAN数据帧才能通过这个Trunk端口。最佳实践是只允许必要的VLAN通过,而不是简单的all。port trunk pvid vlan: 这个命令定义了端口默认的VLAN ID。当Trunk端口收到一个不带标签的数据帧时,交换机会给它打上PVID所指定的VLAN标签。同样,当交换机需要从Trunk端口发送一个属于PVID VLAN的帧给对端时,会剥离标签发送。将Trunk的PVID设置为一个不用于业务的VLAN(如VLAN 999),可以防止来自其他交换机的未打标帧意外进入业务VLAN,是一种安全加固手段。- 标签处理规则:
- 入方向: 收到带Tag的帧,检查VLAN ID是否在
allow-pass列表中,是则接收,否则丢弃。 - 入方向: 收到不带Tag的帧,则打上
PVID指定的Tag,再检查该PVID是否在allow-pass列表中。 - 出方向: 发送的帧,其VLAN ID等于PVID,则剥离Tag发送;否则,带Tag发送。
- 入方向: 收到带Tag的帧,检查VLAN ID是否在
其他厂商命令参考:
- 华三 (H3C):
port link-type trunk,port trunk permit vlan 10 20,port trunk pvid vlan 99。 - 锐捷 (Ruijie):
switchport mode trunk,switchport trunk allowed vlan 10,20,switchport trunk native vlan 99(思科风格)。 - 思科 (Cisco):
switchport mode trunk,switchport trunk allowed vlan 10,20,switchport trunk native vlan 99。
4. 实战案例:构建跨交换机的VLAN网络
现在,我们将按照第2章的环境,完整配置两台接入交换机(SW-Access1, SW-Access2)和核心交换机(SW-Core)。
4.1 接入交换机SW-Access1配置
sysname SW-Access1 vlan batch 10 20 interface GigabitEthernet0/0/1 port link-type access port default vlan 10 interface GigabitEthernet0/0/2 port link-type access port default vlan 20 interface GigabitEthernet0/0/24 # 上联口 port link-type trunk port trunk allow-pass vlan 10 20 port trunk pvid vlan 994.2 接入交换机SW-Access2配置
假设其G0/0/1在VLAN 10, G0/0/2在VLAN 20, 上联口为G0/0/24。
sysname SW-Access2 vlan batch 10 20 interface GigabitEthernet0/0/1 port link-type access port default vlan 10 interface GigabitEthernet0/0/2 port link-type access port default vlan 20 interface GigabitEthernet0/0/24 port link-type trunk port trunk allow-pass vlan 10 20 port trunk pvid vlan 994.3 核心交换机SW-Core配置(三层交换)
核心交换机需要做两件事:1. 与接入交换机互联的端口配置为Trunk;2. 为每个VLAN创建三层接口(VLANIF)作为网关。
sysname SW-Core vlan batch 10 20 99 # 配置下联两个Trunk口,连接两台接入交换机 interface GigabitEthernet0/0/1 # 连接SW-Access1的G0/0/24 port link-type trunk port trunk allow-pass vlan 10 20 port trunk pvid vlan 99 interface GigabitEthernet0/0/2 # 连接SW-Access2的G0/0/24 port link-type trunk port trunk allow-pass vlan 10 20 port trunk pvid vlan 99 # 创建VLANIF接口,并配置IP地址作为对应VLAN的网关 interface Vlanif 10 ip address 192.168.10.1 24 # VLAN 10的网关 description Gateway_for_VLAN10_R&D interface Vlanif 20 ip address 192.168.20.1 24 # VLAN 20的网关 description Gateway_for_VLAN20_Marketing # 可选:配置一个管理VLAN(VLAN 99)的IP,用于远程管理交换机 interface Vlanif 99 ip address 172.16.99.1 24 description Management_VLAN # 开启路由功能(华为三层交换机默认开启) ip routing4.4 终端配置与连通性测试
配置PC IP地址:
- PC1 (VLAN 10): IP 192.168.10.10/24, 网关 192.168.10.1
- PC2 (VLAN 20): IP 192.168.20.10/24, 网关 192.168.20.1
- PC3 (VLAN 10): IP 192.168.10.20/24, 网关 192.168.10.1
- PC4 (VLAN 20): IP 192.168.20.20/24, 网关 192.168.20.1
连通性测试:
- 同VLAN内通信: PC1 (192.168.10.10) 应该能
ping通 PC3 (192.168.10.20)。这是二层通信,数据流经过核心交换机时只做二层转发。 - 跨VLAN通信: PC1 (192.168.10.10) 应该能
ping通 PC2 (192.168.20.10)。这是三层通信,数据包需要先送到网关192.168.10.1 (VLANIF 10),由核心交换机进行路由,再转发到VLAN 20的网络,最终到达PC2。 - 测试网关: 所有PC都应该能
ping通自己的网关(如192.168.10.1)。
- 同VLAN内通信: PC1 (192.168.10.10) 应该能
如果跨VLAN不通,请检查核心交换机的ip routing命令是否配置,以及VLANIF接口状态是否为UP。
5. 进阶技术与排错指南
5.1 使用Wireshark抓包分析VLAN Tag
理论学得再好,不如抓个包看看。通过Wireshark,我们可以直观地看到Trunk链路上的数据帧是如何携带VLAN标签的。
操作步骤:
- 在eNSP中,在核心交换机SW-Core和接入交换机SW-Access1之间的链路上右键,选择“开始抓包”。
- 用PC1去ping PC3(同VLAN)和PC2(跨VLAN)。
- 停止抓包,在Wireshark中分析。
- 在Wireshark的过滤栏输入
vlan,可以只显示携带VLAN标签的帧。
关键字段解读:在以太网帧头部,你会看到类似802.1Q Virtual LAN的标签。
- Priority: 优先级 (3 bits)
- CFI (Canonical Format Indicator): 规范格式指示器 (1 bit), 在以太网中通常为0。
- VID (VLAN Identifier):这就是VLAN ID(12 bits),范围1-4094。你会看到值为10或20的VID。
通过抓包,你可以验证:
- 同VLAN通信时,在Access口上是无标签帧,在Trunk口上是带标签帧。
- 跨VLAN通信时,请求帧从PC1到网关是带VLAN 10标签,回复帧从网关到PC2是带VLAN 20标签(在Trunk链路上)。
5.2 常见配置故障排查
| 问题现象 | 可能原因 | 排查思路与命令 |
|---|---|---|
| 同VLAN内主机无法通信 | 1. 端口未加入正确VLAN。 2. 端口链路类型错误(如该用Access用了Trunk)。 3. 交换机MAC地址表未学习到。 | 1.display port vlan查看端口VLAN信息。2. display interface brief查看端口状态是否为UP。3. display mac-address查看是否学习到对端MAC。 |
| 跨VLAN主机无法通信 | 1. 三层交换机未创建VLANIF或IP配错。 2. 未开启 ip routing。3. Trunk链路未放行相应VLAN。 4. 主机网关配置错误。 | 1.display ip interface brief查看VLANIF状态和IP。2. display current-configuration | include ip routing。3. display interface trunk查看Trunk端口允许的VLAN列表。4. 在主机上 ping网关,先确保到网关可达。 |
| Trunk链路两端不通 | 1. 两端Trunk允许的VLAN列表不匹配。 2. 两端PVID不一致且未注意Untagged帧处理。 3. 物理链路或端口问题。 | 1. 在两台交换机上分别使用display interface [接口] trunk对比PVID和VLANs allowed。2. 使用 display interface [接口]检查错误计数、双工模式等。 |
| 交换机无法远程管理 | 1. 管理VLAN未正确创建和配置IP。 2. 到达管理IP的路由不存在。 3. Telnet/SSH服务未开启。 | 1.display vlan确认管理VLAN存在且有端口加入。2. display ip routing-table查看路由。3. display telnet server status和display ssh server status。 |
5.3 Hybrid端口简介
除了Access和Trunk,华为/华三交换机还有一种更灵活的端口类型:Hybrid。Hybrid端口可以像Trunk一样接收和发送多个VLAN的帧,并且可以灵活控制每个VLAN的帧在出端口时是带Tag(Tagged)还是不带Tag(Untagged)。
典型应用场景:
- 连接服务器/IP电话: 服务器可能需要同时接入业务VLAN(带Tag)和管理VLAN(不带Tag)。
- 灵活QinQ: 更复杂的企业网或运营商网络。
配置示例(服务器连接口):
interface GigabitEthernet0/0/10 port link-type hybrid port hybrid pvid vlan 100 # 设置PVID为管理VLAN 100 port hybrid untagged vlan 100 # 发送VLAN 100的帧时剥离标签 port hybrid tagged vlan 10 20 # 允许VLAN 10和20带标签通过在这个例子中,服务器网卡需要配置VLAN(比如VLAN 10),发送带Tag 10的帧。交换机收到后,允许其通过。同时,交换机发给服务器的管理流量(VLAN 100)是不带标签的,服务器普通网卡就能接收。
对于新手,前期掌握好Access和Trunk足以应对绝大多数场景。Hybrid可以在需要时深入学习。
6. 工程最佳实践与安全建议
规划清晰的VLAN ID和IP网段:
- 制定内部规范,如:VLAN 10-19用于部门,VLAN 100-199用于服务器,VLAN 999用于管理,VLAN 4094用于特殊用途等。
- IP网段与VLAN ID对应,例如VLAN 10对应192.168.10.0/24,便于管理和排错。
禁用未使用的端口:
interface range GigabitEthernet 0/0/3 to 0/0/23 shutdown description Not_In_Use这可以防止未经授权的设备接入网络。
严格限制Trunk链路的VLAN:
- 永远不要使用
port trunk allow-pass vlan all。 - 只允许业务必需的VLAN通过。这既是安全要求,也能避免不必要的广播流量扩散。
- 永远不要使用
修改默认VLAN 1的用途:
- VLAN 1默认存在且不能删除,所有端口初始都属于VLAN 1。
- 最佳实践:将VLAN 1仅用于交换机间通信(如STP协议),不要将任何用户端口划入VLAN 1。将用户端口的PVID改为其他VLAN。
为管理流量创建独立的VLAN:
- 创建一个专用于网络设备管理的VLAN(如VLAN 99),并为其配置一个独立的IP网段。
- 只允许特定的管理主机IP访问该网段,并在边界设备上配置ACL加强安全。
配置端口安全:
interface GigabitEthernet0/0/1 port-security enable port-security max-mac-num 1 # 限制该端口最多学习1个MAC地址 port-security protect-action restrict # 违规后采取限制动作(可配为shutdown)这可以防止私接交换机或MAC地址泛洪攻击。
及时保存配置:
save华为交换机配置修改后运行在内存中,断电会丢失。使用
save命令将配置保存到存储设备(如vrpcfg.zip文件)。定期备份配置(如使用SFTP将vrpcfg.zip备份到服务器)是运维的好习惯。文档化:
- 维护一份网络拓扑图和VLAN/IP地址规划表。
- 在交换机配置中使用
description命令为每个接口和VLAN添加描述。
掌握VLAN的配置是网络管理的基石。从简单的端口隔离到复杂的三层交换网络,其核心思想始终是逻辑分割与可控互通。建议你在模拟器中反复练习本文的案例,并尝试设计更复杂的拓扑,例如加入冗余链路和生成树协议(STP),或者配置基于IP子网的VLAN。遇到问题时,善用display命令查看状态,用Wireshark抓包分析数据流,大部分疑惑都能迎刃而解。网络技术重在实践,多动手配置,多思考流量路径,你的理解会越来越深刻。