我帮一家做电商代运营的小公司调试网络时,遇到过一件挺折腾的事:办公区明明只有四十多台电脑,可一到下午订单高峰期,整个办公室的网络就卡成幻灯片,打印机能连上却经常丢任务,连财务那边访问服务器都时不时掉线。后来排查了一圈才发现,问题不在带宽,也不在路由器性能,而是所有人挤在同一个广播域里,ARP广播、未知单播泛洪全搅在一起,再加上个别电脑中了蠕虫类脚本在疯狂发探测包,直接把二层网络拖垮了。那次的解决办法就是重新梳理VLAN规划,把所有业务按部门拆开,再配合三层交换机做网关隔离广播域。正是这个经历,让我后来认认真真把VLAN相关的知识从头到尾过了一遍,做了一个完整的VLAN综合实验。
这篇内容就是我做完整个综合实验后的记录和复盘,涵盖VLAN底层原理、Access和Trunk口的正确使用、跨交换机VLAN通信、Native VLAN的坑、三层网关和DHCP按网段分配地址,以及我在实验里反复踩过的几个故障。适合刚学完VLAN基础、想动手做综合实验的网络初学者,也适合平时工作中要维护小中型局域网、想系统梳理VLAN知识的运维朋友。后面说的每个步骤和排错思路,都是我自己在实验环境里实际跑过的,直接照着做基本都能复现。
1. 先把实验目的说透:这个综合实验到底在模拟什么
做任何网络实验之前,我都会先问一句:这个拓扑是要解决什么现实问题?如果只是照着资料敲一遍命令,实验做完第二天基本就忘光了。所以这次VLAN综合实验,我先设定了一个具体的业务背景,所有配置都围绕这个背景展开。
1.1 一个小型办公网的典型痛点
假设现在有一家小型公司,行政、技术、财务三个部门在同一层楼办公,共用一台服务器存放共享资料,另外还有一套监控系统和若干台打印机。如果公司直接把所有电脑、打印机、服务器全部接在同一台交换机上,不做任何VLAN隔离,会出现下面这些现象:
- 广播风暴被无限放大:每台设备发出的ARP广播会被交换机泛洪到所有端口,设备越多,广播帧占比越高,有效带宽被大量挤占。
- 安全问题突出:财务电脑和普通办公电脑在同一广播域内,任何一台机器被入侵后都可以直接嗅探或扫描到其他机器,攻击面非常大。
- 故障定位困难:如果某个端口下面接的设备出现了环路或者异常流量,整片网络都会受到牵连,根本分不清是哪一类业务出了问题。
VLAN(Virtual Local Area Network)核心作用就是把一个物理交换机划分成多个逻辑上的独立广播域,不同VLAN之间默认二层隔离,广播帧不会跨VLAN传递,这样既缩小了广播域,也提升了安全性和管理效率。
1.2 本次实验的拓扑与业务划分
我搭的实验环境是这样设计的:一台三层交换机作为核心,两台二层交换机作为接入设备,分别命名为SW-Core、SW-A和SW-B,模拟不同办公区域的接入。终端设备包括PC、服务器、打印机和管理终端,用来模拟行政、技术、财务三类业务,以及一个需要被隔离的网络管理网段。
业务规划如下表所示:
| VLAN ID | VLAN名称 | 用途 | 网段 | 网关 |
|---|---|---|---|---|
| 10 | ADMIN | 行政部门办公 | 192.168.10.0/24 | 192.168.10.1 |
| 20 | TECH | 技术部门办公 | 192.168.20.0/24 | 192.168.20.1 |
| 30 | FIN | 财务部门办公 | 192.168.30.0/24 | 192.168.30.1 |
| 40 | SERVER | 服务器区域 | 192.168.40.0/24 | 192.168.40.1 |
| 100 | MGMT | 设备管理 | 192.168.100.0/24 | 192.168.100.1 |
这家公司里,行政电脑接在SW-A上,技术和财务电脑接在SW-B上,服务器直连核心交换机,打印机放在行政区域,管理终端接在核心交换机的独立管理口。
这个拓扑我觉得是很有代表性的:它涵盖了单交换机下的VLAN划分、跨交换机的Trunk链路、核心三层交换机做网关、服务器区域的独立VLAN隔离,以及管理网段的划分,几乎把VLAN综合实验里该有的知识点都串起来了。
2. 动手配置前,先把VLAN的底层机制吃透
很多人配置VLAN时容易出错,原因不是命令不熟,而是没搞懂交换机在端口上到底对数据帧做了什么操作。我建议在做实验前,先把802.1Q的封装机制和端口模式彻底搞清楚,后面排错会省很多力气。
2.1 802.1Q标签到底改了什么
标准的以太网帧包含目标MAC(6字节)、源MAC(6字节)、类型/长度(2字节)和数据部分。当帧在Trunk链路上传输时,交换机会在源MAC地址之后插入4字节的802.1Q Tag,结构大致是:
TPID(2字节):固定为 0x8100,表示这是一个带VLAN Tag的帧 TCI(2字节): - PCP(3bit):优先级,0~7 - DEI(1bit):丢弃指示,通常为0 - VID(12bit):VLAN编号,范围0~4095,可用编号是1~4094插入这个标签之后,交换机就能识别这个数据帧属于哪个VLAN。如果帧不带标签,交换机就会把它归入端口的默认VLAN(PVID)来处理。
这里要注意一点:VLAN编号并非越大越好。VLAN 1是默认VLAN,很多交换机默认把所有端口都放在VLAN 1里,Trunk口默认也会放行VLAN 1,实际项目里建议不要用VLAN 1承载业务流量,以免出现配置混淆。
2.2 Access口和Trunk口的分工逻辑
端口模式是VLAN配置里最基础也最关键的一环。我见过很多新手在Access和Trunk之间纠结,其实只要记住它们的适用场景,就不难选。
- Access口:一般用来连接终端设备(PC、打印机、服务器网卡)。Access口只属于一个VLAN,发送数据帧时不带标签,接收数据帧时如果带标签,通常会直接丢弃(部分交换机也可以配置为接收并处理)。
- Trunk口:用来连接交换机与交换机、交换机与路由器,或者在交换机与服务器绑定了多VLAN网卡时使用。Trunk口可以同时放行多个VLAN,默认情况下数据帧在Trunk链路上会打上802.1Q标签。
用一句话概括:Access口是面向用户的,负责去掉标签;Trunk口是面向链路的,负责传递带标签的帧。
2.3 最容易踩坑的Native VLAN
Native VLAN(本征VLAN)是实验里最容易出问题的地方。Trunk口一般会设置一个Native VLAN,默认值为VLAN 1。在这个VLAN里传输的数据帧不会打标签,其余VLAN的数据帧都要打标签。
如果Trunk链路两端的Native VLAN配置不一致,交换机收到的无标签帧会被判定到不同的VLAN,就会出现一种很诡异的故障:VLAN 10本来配置得好好的,但两端就是ping不通,查接口状态又都是Up,流量看起来也通了一部分,实际上数据已经走到“错误的VLAN”里了。
我在实验里专门把两端的Native VLAN从默认值改成VLAN 100(管理VLAN),这样既避免了VLAN 1的不确定性,也方便后续管理,后面会详细说配置方法。
3. 设备选型与初始配置的思考过程
做实验之前要先确认自己手里有什么设备。如果条件允许,直接用真实交换机做实验当然最好;没有真实设备的话,模拟器也能完成几乎所有VLAN功能验证。我这次实验用的是三台普通千兆交换机,其中核心交换机支持三层功能,也就是说支持VLAN接口的IP地址配置。
3.1 三层交换机、路由器与模拟器怎么选
做VLAN间互通时,有三个常见方案:单臂路由、三层交换机SVI、用路由器接多个物理接口。三种方案各有各的场景:
| 方案 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|
| 单臂路由 | 成本低,配置相对简单 | 所有跨VLAN流量挤在一个物理接口,容易成瓶颈 | 实验室、小型网络 |
| 三层交换机SVI | 性能高,VLAN间转发由硬件完成,扩展性好 | 设备价格比普通二层交换机高 | 企业局域网主流方案 |
| 多物理接口路由 | 隔离彻底,没有Trunk依赖 | 接口消耗大,扩展性差 | 接口数量很少的特殊场景 |
我这次选择三层交换机SVI方案,因为这最接近实际企业网络的做法。另外补充一点,模拟器里的VLAN实验和真机有细微差别,比如端口默认状态、链路协商速度、部分模拟器对Native VLAN的处理不够严谨等,所以在模拟器里跑通后,有条件的话要用真机再做一遍验证。
3.2 物理链路连接与规划表
接线方式很简单:核心交换机SW-Core的G0/0/1口接SW-A的G0/0/1口,SW-Core的G0/0/2口接SW-B的G0/0/2口,这两个口都要配置成Trunk口。PC、打印机、服务器等终端设备接到各接入交换机的普通端口上。
我建议在配置之前先把规划表画出来,写清楚哪个端口属于哪个VLAN,这样可以避免配置到一半忘了哪些端口已经分配过。下面是我实验用的接入端口规划参考:
| 交换机 | 端口范围 | VLAN | 用途 |
|---|---|---|---|
| SW-A | G0/0/1 | Trunk | 连接核心交换机 |
| SW-A | G0/0/2-G0/0/10 | VLAN 10 | 行政办公终端 |
| SW-A | G0/0/11-G0/0/12 | VLAN 40 | 打印机(特殊情况下需要跨VLAN共享,可后续做ACL) |
| SW-B | G0/0/1 | Trunk | 连接核心交换机 |
| SW-B | G0/0/2-G0/0/10 | VLAN 20 | 技术办公终端 |
| SW-B | G0/0/11-G0/0/20 | VLAN 30 | 财务办公终端 |
这里提一个我在项目中积累的小经验:不要把打印机放在某个部门VLAN里,除非你确定它只给那个部门用。现实里打印机往往是多个部门共用的,最简单的做法是给打印机单独划一个VLAN,再在核心交换机上配置跨网段访问规则。虽说这会让配置复杂一点,但比事后因为权限问题改来改去要强得多。
4. 核心配置实操:从创建VLAN到跨交换机通信
下面进入实际操作环节。我用的命令行风格是通用的交换机配置方式,不同品牌命令会略有差异,但思路完全一样,换成你手头的设备后只需要调整关键词。
4.1 第一步:在三台交换机上创建VLAN
先在核心交换机上创建所有VLAN:
# 进入配置模式 system-view # 批量创建VLAN vlan batch 10 20 30 40 100接入交换机SW-A只需要VLAN 10和VLAN 100:
system-view vlan batch 10 100接入交换机SW-B需要VLAN 20、30和100:
system-view vlan batch 20 30 100创建VLAN的操作本身不难,难的是想清楚每台设备需要哪些VLAN。接入交换机只要包含通过它转发业务的VLAN就行了,没必要复制核心交换机的全部VLAN,配置得越简洁越好排查。
4.2 第二步:配置Access口并验证终端互通
在SW-A上,把行政办公终端端口加入VLAN 10:
interface GigabitEthernet0/0/2 port link-type access port default vlan 10在SW-B上,把技术部门和财务部门端口分别加入对应VLAN:
interface GigabitEthernet0/0/2 port link-type access port default vlan 20 quit interface GigabitEthernet0/0/11 port link-type access port default vlan 30配置完成后,同一台交换机下同VLAN的终端已经可以互相访问,跨VLAN的终端则默认不通。这时候可以用两个PC做一次ping测试:把两台PC分别划到VLAN 10和VLAN 20,设置好同网段IP后,发现它们无法互通,这就是VLAN隔离起了作用,符合预期。
4.3 第三步:配置Trunk链路并处理Native VLAN
这是整个实验里最需要小心的部分。核心交换机连接SW-A的端口配置如下:
interface GigabitEthernet0/0/1 port link-type trunk port trunk allow-pass vlan 10 100 port trunk pvid vlan 100SW-A连接核心交换机的端口配置同样处理:
interface GigabitEthernet0/0/1 port link-type trunk port trunk allow-pass vlan 10 100 port trunk pvid vlan 100对SW-B,只需要把允许通过的VLAN改成20、30和100:
interface GigabitEthernet0/0/1 port link-type trunk port trunk allow-pass vlan 20 30 100 port trunk pvid vlan 100配置Trunk时有三个细节特别容易出错,我逐个说下:
- 两端允许通过的VLAN列表要一致。如果核心侧Trunk放行了VLAN 10,而接入侧没放行,那VLAN 10的帧到了Trunk口就会被丢弃,接口虽然是Up的,但业务完全不通。
- Native VLAN必须两端一致。我建议把Native VLAN从默认的VLAN 1改成VLAN 100,这样Trunk链路上VLAN 100的帧不带标签,其余VLAN带标签,排查时只需看无标签帧,逻辑更清晰。
- Trunk口默认放行所有VLAN,出于安全考虑应该显式限制允许通过的VLAN范围。我在很多项目里遇到过因为Trunk口放行了不该放行的VLAN,导致用户在网络里“串门”的情况。
4.4 第四步:配置核心交换机SVI网关
要让不同VLAN之间能通信,必须给VLAN配置三层接口,也就是SVI(Switch Virtual Interface)。在核心交换机上执行:
interface Vlanif 10 ip address 192.168.10.1 255.255.255.0 quit interface Vlanif 20 ip address 192.168.20.1 255.255.255.0 quit interface Vlanif 30 ip address 192.168.30.1 255.255.255.0 quit interface Vlanif 40 ip address 192.168.40.1 255.255.255.0 quit interface Vlanif 100 ip address 192.168.100.1 255.255.255.0 quit4.5 第五步:配置DHCP按VLAN分配地址
手动配置IP做验证是可以的,但综合实验最好把DHCP也加上,这样终端一接上去就能拿到对应网段的地址,更接近真实办公网的使用体验。我在核心交换机上配置DHCP服务:
# 使能DHCP服务 dhcp enable # 配置VLAN 10地址池,排除网关地址 ip pool vlan10 network 192.168.10.0 mask 255.255.255.0 gateway-list 192.168.10.1 dns-list 223.5.5.5 excluded-ip-address 192.168.10.1 quit # 在VLAN10的三层接口下使能DHCP中继或全局选择地址池 interface Vlanif 10 dhcp select global quitVLAN 20、30、40同理。实验做完后,可以让PC改成自动获取IP,如果PC能正确拿到对应VLAN网段的地址且网关可ping通,说明DHCP和VLAN的联动配置没有问题。
补充一点关于DHCP的原理:DHCP请求默认是广播帧,而广播帧只在同一个广播域内传递。VLAN划分后,各VLAN是独立广播域,DHCP服务器如果不在同一个VLAN内,就需要三层设备做DHCP中继,或者像上面这样直接在核心交换机上给每个VLAN配置地址池。我这次用“每个VLAN接口选择global地址池”的方式,属于最简洁的做法。
5. 验证与排错:实验做完不叫完,能查清楚才算真会
配置写完只是第一步,真正考验功力的是验证和排错。下面这部分是我实验中最有价值的内容,全是自己踩过的坑和总结的排查链路。
5.1 验证链路畅通的标准操作流程
实验做完后,我从终端侧开始逐层验证,每一步都有明确的目的:
- 查看端口状态:确认终端所接端口处于Up状态,没有因为VLAN配置冲突被异常阻塞。
- 查看VLAN和Trunk信息:在交换机上执行显示VLAN列表的命令,确认端口确实被划入预期VLAN。
- 终端IP地址检查:如果使用DHCP,先确认PC拿到的IP网段对不对;如果PC拿到169.254.x.x这类地址,说明DHCP请求没有到达DHCP服务器。
- ping网关:终端能ping通自己的网关,说明二层链路OK。
- ping跨网段地址:终端能ping通其他VLAN的终端,说明三层转发OK。
我实验里还专门做了抓包验证。在Trunk端口上抓包时,能看到VLAN 10和VLAN 20的数据帧都带着不同的VID标签;而抓取VLAN 100(Native VLAN)的数据时,帧上没有标签。这个细节看图特别直观,建议有条件的人一定做一次抓包,能大大加深对VLAN标签的理解。
5.2 三个典型的VLAN故障排查实例
我在反复测试中故意制造了几种故障场景,下面记录一下完整的排查方法和命令。照着这个思路走,大部分VLAN问题都能定位。
故障一:同VLAN终端ping不通,但端口状态正常
排查步骤:
- 先看终端IP和掩码,确认两台PC确实在同一网段。
- 在接入交换机上执行“查看端口VLAN”命令,确认两台PC对应端口都划到了同一个VLAN。
- 检查Trunk链路是否放行了该VLAN。
- 用“查看MAC地址表”确认交换机是否正确学习了终端网卡的MAC地址。
我模拟了一次SW-A上某端口忘记划入VLAN 10的场景,结果就是两台PC在物理上连着同一台交换机,却怎么都ping不通。原因很简单:交换机不知道这个端口属于哪个VLAN,帧被默认放到VLAN 1里处理,和VLAN 10的广播域完全不互通。
故障二:跨交换机同VLAN终端不通,接口状态正常
这是最经典的Trunk配置错误场景。我把SW-A的Trunk口放行列表里的VLAN 10删掉,模拟人为误操作。结果现象是:两台都在VLAN 10里的PC,接在SW-Core下的能通,接在SW-A下的怎么都ping不通核心侧的设备。
排查顺序:
- 先检查SW-A和SW-Core互联端口的Trunk信息,确认allow-pass vlan列表里有VLAN 10。
- 再对比两端Native VLAN是否一致。
- 最后检查两端Trunk口的PVID。
因为VLAN 10的帧在这个Trunk链路上是要带标签的,如果某侧没放行这个VLAN,交换机直接就把帧丢弃了,检查端口流量时能看到有计数增长,但数据进不来。
故障三:同VLAN能通,跨VLAN不通,网关也ping不通
这个故障的原因往往不在VLAN本身,而在三层接口或路由。
排查步骤:
- 先看终端网关配置是否对了,很多实验里网关少配一位数字就全盘失败。
- 到核心交换机上查看VLAN虚拟接口是否存在,IP地址是否配置正确。
- 确认终端所在接入交换机与核心之间的Trunk链路是否放行了对应该VLAN。
如果VLAN接口没创建,交换机对目标网段的数据包就没有路由,直接丢包,表现为网关不可达。我遇到过不止一次有人把VLAN创建了、端口也划了,但忘了创建SVI接口,这个时候物理链路全通,跨VLAN却还是不通,排查一圈最后发现三层接口没建,非常典型。
5.3 梳理一套自己的VLAN排错清单
经过这个综合实验,我整理了一份适合日常排查的清单,分享给大家:
- 终端IP和网关是否匹配,VLAN对应的网段是否规划正确
- 终端所接端口是不是Access口,是否划入正确VLAN
- Trunk两端allow-pass vlan列表是否对称
- Trunk两端Native VLAN(PVID)是否一致
- 核心交换机上有没有创建对应VLAN的SVI接口
- Vlanif接口是否在正确VLAN下,IP和掩码是否正确
- 如果跨三层设备访问,还需要检查路由方向、ACL放行策略
排错时切忌一上来就东点一下西点一下。按照“终端→接入交换机→Trunk链路→核心交换机→三层网关→路由”这个顺序逐层推进,绝大多数问题都能在十几分钟内定位。
6. 实验做完后的几点体会与扩展建议
整个VLAN综合实验做完,我对VLAN的理解比单纯看书深了很多。以前总以为Access和Trunk只是端口模式的选择,现在才真正理解它们背后对应的是“带标签帧”和“无标签帧”的处理逻辑。回到开头那个小公司的案例,当时就是通过类似的VLAN划分,把各部门隔开,再在核心三层交换机上做好网关和基本安全策略,广播域小了,ARP广播数量锐减,网络卡顿问题基本消失。
几个实操体会想分享给后来的人:
第一,VLAN划分不是越细越好。有些网络管理员喜欢每个功能都单独划一个VLAN,结果Trunk链路上跑着一堆VLAN,安全策略和路由配置都变得极其复杂。对小公司来说,按部门或业务类型划分就足够了。
第二,管理VLAN要单列。把设备管理网段独立出来,好处在于即使业务网络发生环路或广播风暴,管理链路仍然可以通畅,至少你能登进交换机做排查。我这次实验里专门把Native VLAN改成VLAN 100,也是为了让管理流量不依赖默认VLAN 1。
第三,实验后的扩展方向可以考虑安全和冗余。比如在两个接入交换机之间增加链路聚合,把Trunk做成链路聚合组,提升带宽和可靠性;也可以在核心交换机上配置ACL,在VLAN间做访问控制,比如财务VLAN只允许被特定管理终端访问,其他VLAN一律拒绝,这些都是在真实网络运维中必须考虑的点。
VLAN实验看起来内容简单,实际上涉及的细节非常多,从数据帧格式到三层转发都有值得琢磨的地方。希望这篇记录能帮你减少一些试错的时间,多做几组故障模拟,真正把这套排查思路内化成自己的网络功底。