如果你以为VLAN配置实验就是“创建两个VLAN,把PC分进去,ping不通就成功了”,那这个实验你只做了一半。我这次带着验证广播域隔离、跨交换机同VLAN通信、VLAN间三层路由三个目标,把企业网里最常见的VLAN配置场景完整搭了一遍。中间踩过的坑比预想多得多,尤其是Trunk链路PVID和两端允许VLAN不一致这两个地方,几乎每个新手都会撞上。这篇文章就把这次VLAN配置实验,从拓扑设计、命令敲法、验证思路到故障复盘完整写下来,适合正在学网络基础、准备做课程设计或打算参加网络认证的读者,有经验的老手也可以直接跳到第3章和第5章看避坑记录。
环境方面,我用的是一台支持三层转发的企业级交换机模拟器,命令行和市面上的主流设备基本一致,你完全可以用同类工具跟着复现,也可以把思路直接搬到实体机上。
1. 这个VLAN实验到底在验证什么问题
1.1 广播域扩大带来的现实麻烦
在没有VLAN的二层网络里,所有端口默认都在同一个广播域,这相当于一个小区没有房门,喇叭一响,每家每户都必须停下来听。当PC1发出一个ARP广播,交换机在VLAN1内泛洪,所有接在同一台交换机上的终端都会收到并处理,哪怕这个ARP请求和自己完全无关。网络规模小的时候问题不大,可一旦接入设备到了几十上百台,广播报文会持续占用终端CPU,严重的还会形成广播风暴,整个网络出现丢包甚至瘫痪。
VLAN的核心作用就是在数据链路层把广播域切开。交换机会对每个VLAN维护独立的MAC地址表,广播帧只在本VLAN内泛洪,其他VLAN的端口根本收不到。这个机制听起来简单,但实际配置里涉及Access口、Trunk口、802.1Q标签和三层网关,每一个点都会出现“看起来配置了但效果不对”的情况。所以这个实验不是为了背命令,而是把VLAN从创建、划分、跨设备透传到三层路由的完整流程走一遍,让你真正理解VLAN为什么是这样工作的。
1.2 实验拓扑和地址规划
为了让实验覆盖关键场景,我搭了一个两台交换机的拓扑。SW1作为汇聚交换机,同时承担三层转发功能;SW2作为接入交换机,负责把终端设备接入网络。四台PC分别接在两台交换机的Access端口上,SW1和SW2之间用一条物理链路相连,链路两端都配置为Trunk。这样既能看到同VLAN跨交换机的通信,也能验证不同VLAN之间的隔离与互通。
| 设备 | 接入端口 | 端口模式 | 所属VLAN | IP地址 | 网关 |
|---|---|---|---|---|---|
| PC1 | SW1 Gi0/0/1 | Access | VLAN 10 | 192.168.10.10/24 | 192.168.10.1 |
| PC2 | SW2 Gi0/0/1 | Access | VLAN 10 | 192.168.10.20/24 | 192.168.10.1 |
| PC3 | SW1 Gi0/0/2 | Access | VLAN 20 | 192.168.20.10/24 | 192.168.20.1 |
| PC4 | SW2 Gi0/0/2 | Access | VLAN 20 | 192.168.20.20/24 | 192.168.20.1 |
SW1和SW2之间用Gi0/0/3互连。SW1创建VLANIF 10和VLANIF 20,地址分别设置为192.168.10.1/24和192.168.20.1/24,作为两个VLAN的网关。
这里有一个常见误区要提醒:很多初学者会把网关配在接入交换机SW2上,觉得“只要SW2有网关,下面的PC就能跨VLAN通信”。但在标准园区网架构里,网关一般放在汇聚或核心层,接入交换机只需要把端口划到正确的VLAN,再让Trunk把VLAN标签透传上去就够了。网关越往下放,三层表项越分散,排障越困难。实验选型时先把这个架构想明白,后面配置才不会乱。
2. 动手配置前的设备准备与VLAN划分逻辑
2.1 先把交换机恢复到出厂状态
模拟器里的交换机通常带有默认配置,如果你做上一轮实验时创建过VLAN,不清空就直接开始,后面在看display vlan结果时会分不清哪些是新建的、哪些是残留的。我在做实验前习惯先执行:
reset saved-configuration reboot在提示是否保存配置时选择不保存。如果是实体交换机,还要注意重启前有没有正在跑的业务,模拟器环境就不用担心这个。
重启完成后,先执行display current-configuration,确认当前配置里没有多余的VLAN和接口配置。很多问题的排查起点就是让环境足够干净。如果这一步偷懒,后面排错的干扰项会成倍增加。我见过有人明明上一轮实验把VLAN 99遗留了下来,结果做新实验时同一张物理拓扑上出现了莫名其妙的广播,查了半小时才发现是旧配置没清干净。模拟器里清配置很简单,真实设备上清配置之前务必确认业务影响,但在实验室场景里,干净的起点永远比省几秒钟命令有价值。
2.2 创建VLAN后,Access端口为什么这么选
恢复出厂后打开系统视图,批量创建VLAN:
system-view vlan batch 10 20用vlan batch比一条条vlan 10、vlan 20更高效,而且写错了能立刻被发现。创建完可以用display vlan看一眼,这时的VLAN 10和20状态是down,因为还没有端口绑定。
接下来把连接PC的端口配置为Access模式。以SW1的Gi0/0/1为例:
interface GigabitEthernet0/0/1 port link-type access port default vlan 10为什么终端接入要用Access而不是Trunk?因为PC网卡不会主动给数据帧打802.1Q标签,Access口在入方向会打上端口PVID对应的标签,出方向再把标签剥掉,终端看到的是普通以太网帧,网卡完全不需要感知VLAN的存在。Trunk口则要保留标签来区分多个VLAN,如果直接用Trunk接PC,网卡将很难正确处理带Tag的帧,体验会非常奇怪。
有个特别容易漏的地方:只配port link-type access但忘记配置port default vlan。表面上看命令行没报错,可这个端口实际上还属于VLAN1,PC怎么都进不了VLAN10。我见过不少同学在这里卡住,display vlan一看,端口归属完全不对。可以这么理解:Access口在有多个VLAN的交换机里,必须明确告诉它“你服务哪一个VLAN”,只改模式不指定身份,它就默认待在VLAN1里。
再补充一个底层原理:交换机的内部转发全程都带着VLAN标签,Access口只是边界。它接收无标签帧时打上端口PVID,发送时把标签剥掉。所以port default vlan 10这条命令本质上是在设置端口的PVID,也同时告诉交换机这个端口属于VLAN10。理解了这一点,后面Trunk口的PVID问题会好懂很多。
3. 跨交换机Trunk链路:配置顺序和隐藏的坑
3.1 一条物理链路上要传多个VLAN,标签就是门牌号
SW1和SW2之间只有一根网线,但VLAN10和VLAN20的帧都要从这根线上过。如果不加任何标记,接收端根本分不清某一个帧属于哪个VLAN。802.1Q的做法是在以太网帧头里插入一个4字节的Tag,里面包含12位的VLAN ID。Trunk口就是专门处理这种带标签帧的端口,它允许多个VLAN的帧通过,除了特殊配置的PVID VLAN以外,这些帧都会保留802.1Q标签。
如果你把两台交换机之间的端口配成Access,那这条链路只能承载一个VLAN。假设把SW1的Gi0/0/3和SW2的Gi0/0/3都划到VLAN10,PC1和PC2能通,但PC3和PC4作为VLAN20的设备,跨交换机一定不通,因为Access口会直接把非本VLAN的流量丢弃或剥掉标签,VLAN20的信息过不去。所以跨交换机多VLAN互联必须用Trunk,这是实验里第一个反直觉的点:一根物理链路完全可以承载多个业务,关键不是加线,而是加标签。
3.2 Trunk口的正确配置顺序
在SW1和SW2上,Gi0/0/3都要做同样配置:
interface GigabitEthernet0/0/3 port link-type trunk port trunk allow-pass vlan 10 20配置顺序有讲究。先把port link-type trunk写好,再执行port trunk allow-pass vlan 10 20。如果你先在Access模式下敲allow命令,多数设备会直接提示错误;如果先配置allow再改链路类型,之前设的allow列表可能会被清掉。第一次做实验时我就犯过这种低级错误,之后每次都是先改链路类型,再配置允许VLAN。
配置完成后用display interface GigabitEthernet0/0/3确认。你需要看到两个关键信息:端口类型是trunk,允许通过的VLAN列表里包含10和20。有些设备默认只允许VLAN1通过,如果不执行allow-pass,跨交换机的VLAN10流量根本过不去,但你在display vlan里看VLAN10状态却可能是正常的。这就是典型的“配置看着没问题,实际链路没有放行”。
还要注意两端配置的一致性。Trunk链路是双向的,只在一端放行没有意义,必须两端都允许相同的VLAN集合。我在实验里故意只配置了SW1的Trunk,忘了配SW2,结果从PC2去ping PC1不通,反过来从PC1到PC2却正常。这种单向通的现象非常有迷惑性,排查时一定要把两端都看一遍。
3.3 PVID这一个参数能坑掉你半个小时
Trunk口也有PVID,默认值是1。它的作用是在收到无标签帧时给帧贴一个标签,相当于给没有门牌的流量分配一个默认VLAN。在Trunk链路上,PVID对应的VLAN帧往往被作为native VLAN处理,也就是不携带802.1Q标签,这样设计是为了兼容不支持VLAN标记的老旧设备。
我这次实验踩过一个很典型的坑:某次在SW2上把Gi0/0/3的PVID误改成了20,虽然带标签的VLAN10和VLAN20转发看起来没有立刻异常,但两台交换机之间一旦出现无标签帧,SW2会直接把它当成VLAN20来处理,和预期的VLAN归属完全不一致。display vlan根本看不出问题,只有display interface GigabitEthernet0/0/3才能看到PVID已经变了。我最后是要求自己每次实验前把所有trunk口的PVID都核对一遍,才把这个问题揪出来。
排错时一定要养成一个习惯:凡是涉及Trunk链路,先看两端PVID是否一致,再看allow列表是否一致,最后查Access端口归属。很多人遇到VLAN不通就反复改Access配置,其实问题往往更隐蔽。PVID这个参数平时不起眼,一旦被改错,产生的症状非常隐蔽,而且它不会在display current-configuration的最大路里一眼暴露,必须看接口详情才能发现。
4. VLAN间的路由打通:网关与VLANIF
4.1 不同VLAN为什么不能二层互通
VLAN隔离广播域的同时,把不同VLAN的终端也隔开了。交换机会严格按照VLAN标签转发帧,同一VLAN的帧可以由交换机直接送到目标端口,不同VLAN之间的帧不会出现在对方的转发端口集合里。无论你在同一台交换机上还是跨交换机,只要VLAN标签不同,二层就无法直接互通。这里需要三层设备介入,把每个VLAN当成一个独立网段处理,负责路由转发。
打个比方:VLAN10和VLAN20是同一栋楼的两层,二层交换机是楼层里的通道,可以在同一楼层自由走动,但要从10层去20层,必须走到楼梯间,这个楼梯间就是三层网关。家用环境里这个网关常常是路由器,而在企业网络里,通常是把网关配置在三层交换机上,也就是VLANIF接口。
4.2 VLANIF配置和一次完整转发的拆解
在三层交换机SW1上配置VLANIF接口:
interface Vlanif10 ip address 192.168.10.1 255.255.255.0 interface Vlanif20 ip address 192.168.20.1 255.255.255.0配置完成后用display ip interface brief确认两个接口的IP和状态。VLANIF的本质是:交换机能像路由器一样,为每个VLAN维护一个逻辑三层接口,这个逻辑接口的IP就是这个VLAN内所有终端的网关地址。
接下来看一下PC1访问PC3时发生了什么。PC1发现目的IP192.168.20.10不在自己的网段,于是把报文交给网关192.168.10.1,先通过ARP解析出VLANIF10的MAC地址。报文到达SW1后,SW1查路由表,发现192.168.20.0/24是本地直连网段,出接口是Vlanif20,于是会把目的MAC重写为PC3的MAC。如果ARP缓存里还没有PC3的MAC,VLANIF20会先在VLAN20内发起ARP解析,拿到之后再构造二层帧,并带上VLAN20标签,从对应Access口发出。回程过程完全对称。
这个过程中,SW2不需要配置任何VLANIF,它只是把带VLAN20标签的帧从Trunk口透传下来,再在Access口剥掉标签给PC3。很多人在做了单臂路由实验后会习惯性地给每台交换机都配上网关,其实接入交换机配了VLANIF反而容易出现路由混乱。网关放在哪里,是一个网络架构问题,不是所有交换机都要配三层接口。实验里最大的收获之一,就是把这个“谁该配网关”的逻辑理清了。
5. 验证这套VLAN实验环境的方式与排错路径
5.1 用ping和display命令做验收
配置完成后,先用最直观的ping做连通性验收。PC1去ping PC2,应该通,这验证的是VLAN10跨交换机经过Trunk链路的二层通信。PC1去ping PC4,也应该通,这验证的是VLAN10和VLAN20之间的三层路由。PC1去ping PC3,属于同一台交换机上的跨VLAN通信,同样验证路由功能。
ping之前最好先确保各PC的IP、掩码和网关都填对了,很多人在图形界面上把网关漏了,导致跨VLAN怎么都ping不通。如果网关漏了,同VLAN通信正常,但一跨VLAN就超时,这是一个非常典型的信号。
然后看一下交换机侧的表项:
display vlan 10 display vlan 20 display interface GigabitEthernet0/0/3 display mac-address display arpdisplay vlan看端口归属,display interface看Trunk的PVID和允许VLAN,display mac-address看交换机针对不同VLAN维护的二层转发表,display arp看三层设备解析到的主机IP与MAC映射。这几个命令配合使用,基本能判断问题出在哪一层。
我建议你故意做几次破坏性验证:把PC2所在端口临时划到VLAN20,PC1再去ping PC2,会变成跨VLAN通信,如果网关配置没问题依然能通,这正好能帮助你理解二层隔离和三层的区别。再把Trunk里去掉VLAN10,PC1就彻底ping不通PC2,这个现象能直观看到Trunk allow列表的作用。实验不只是为了看到“通”,而是为了看到“不同条件下为什么会通、为什么不不通”,破坏性验证比照抄命令有意义得多。
5.2 典型故障特征与排查顺序
排错时不要一上来就怀疑配置,先按顺序排除。我把这次实验里真正遇到过的现象整理成了一张表:
| 现象 | 可能原因 | 排查手段 |
|---|---|---|
| 同VLAN跨交换机不通 | Access端口VLAN归属不一致、Trunk allow遗漏、物理链路未up | display vlan、display interface |
| 单方向通、反方向不通 | 两端Trunk allow列表不一致、PC防火墙拦截回包 | 对比两端Trunk配置、检查PC防火墙 |
| 跨VLAN不通但同VLAN正常 | PC网关没写或写错、VLANIF未创建或IP错误 | display ip interface brief、检查网卡 |
| 时通时不通 | STP收敛、端口协商异常、线路接触不良 | 等待端口变forwarding、display stp |
这些都是我在这类实验里真实见过的现象。尤其单向通这个问题,很多人会反复改Access端口配置,其实问题往往在Trunk的allow列表。比如SW1允许了VLAN10没允许VLAN20,SW2却允许了VLAN20没允许VLAN10,两边发出去的帧被对端丢弃,网络就会表现出“从PC1能ping通PC2,但从PC2 ping PC1不通”之类的单向问题。
另外STP也很容易迷惑新手。配置完成后马上ping不通,过十几秒又通了,很可能端口正在经历阻塞到转发的收敛过程。在模拟器或旧交换机上尤其常见,碰到这种情况先别急着改配置,等几秒再说,也可以用display stp查看端口状态。如果反复出现,再看是不是连接终端的端口没有配置成边缘端口,这个在企业网里是常规操作。
6. 把VLAN配置实验向真实网络场景延伸
6.1 从静态VLAN走向动态VLAN
手动把端口划到指定VLAN,也就是静态VLAN,适合几十台终端的场景。但企业园区网动不动几百上千台PC,如果员工换办公室、换交换机端口,管理员就要到处改端口配置,维护成本非常高。真实环境里更多会用动态VLAN:终端接入交换机后,通过802.1X认证,认证服务器返回这个用户或这个终端应该属于哪个VLAN,交换机再动态把端口划入对应VLAN。
这个实验你可以自己搭:一台AAA服务器,一台支持802.1X的交换机,PC配置认证客户端。认证通过前端口可能停在某个默认VLAN,认证通过后服务器下发新的VLAN号,端口自动切换。做完你会理解,VLAN配置不只是设备端的命令问题,还牵扯账号体系和认证策略,这也解释了为什么大型网络里接入层配置通常很“薄”,真正的策略都由后台下发。本身这个方向已经算进阶,但它是从静态VLAN走向真实网络架构的必由路径。
6.2 混合端口、端口隔离与更进阶的方向
除了Access和标准Trunk,我实验用的设备还支持Hybrid模式,它允许一个端口同时放行多个VLAN,并且可以单独指定哪些VLAN在出方向剥标签。实际网络中Hybrid用得不少,典型场景是同一个物理接口既要承载带Tag的业务流量,又要以无标签方式承载管理或语音流量。实验里把Trunk和Access玩熟后,建议再配一遍Hybrid,原理不会复杂,但会让你看到端口VLAN模式的灵活性。
另一个值得做的小实验是端口隔离。同一VLAN里的两台PC,在默认情况下是可以互相访问的,但某些场景希望同VLAN内的终端也互不可见,只允许它们访问网关和服务器。端口隔离可以在不新增VLAN的情况下实现二层隔离,适合用在宿舍网或公共接入环境。再往上做,还可以把VLAN和ACL结合,为不同业务VLAN配置不同的访问控制策略,这个方向已经接近真实网络的防火墙和流量策略设计。
最后说点实在的话。我每次做VLAN实验都会故意把配置改错再查一遍,让错误现象自己暴露出来。只照着教程敲一遍命令,能记住的永远是步骤,理解不了为什么出现问题。PVID、Trunk allow列表、网关位置这三个点,是VLAN配置中最容易让新手反复折腾的地方,也是排查思路最能体现经验的地方。把这组实验吃透,后面再看三层交换、无线网络VLAN规划甚至园区网架构,都会顺利很多。