VLAN实验避坑指南:从Access、Trunk到PVID的完整排查思路
刚开始做路由交换实验的时候我一度把VLAN想得很简单觉得“不就是把交换机端口分成几个组嘛”。直到有一次在实验环境里把Trunk链路误配置成AccessPC间怎么都ping不通排查了一天一夜才意识到这个基础实验里藏着不少容易忽略的细节。1. VLAN到底在隔离什么链路层广播域的第一次分工1.1 “虚拟局域网”这五个字重点在“虚拟”VLAN的全称是Virtual Local Area Network虚拟局域网。很多人背过这个定义但没真正体会“虚拟”两个字的分量。物理上你只有一台交换机四台PC都插在这台设备上它们天然处在同一个二层网络里。换句话讲四台PC发出的广播帧比如ARP请求会被交换机从除了接收端口以外的所有端口转发出去四台设备彼此都能收到对方的消息这是一个不折不扣的广播域。VLAN做的事情就是把“物理上连在一起”的这组设备在逻辑上拆成几个互不干扰的小组。属于VLAN 100的设备收不到来自VLAN 200的广播帧VLAN 200的设备也看不见VLAN 100的广播流量。设备依然插在同一台交换机上但从二层视角看它们已经被隔离开了。理解这个逻辑可以想象一个合租公寓。整层楼的人住在一起谁喊一嗓子全楼层都能听见。VLAN就是给每个房间装了一扇隔音门关上门之后房间内的人怎么交流都行但相邻房间听不见。想找隔壁的人不能只靠嗓门了你得走到公共走廊经由前台路由器转达。1.2 VLAN不是IP子网先分清二层与三层的分工我见过不少新人朋友把VLAN和IP网段划等号实际上两者的隔离层级完全不同。VLAN工作在二层也就是数据链路层它隔离的是广播域。IP子网工作在三层也就是网络层它隔离的是广播域吗也有关系但根本上解决的是逻辑寻址问题。一个VLAN里可以配置多个IP网段吗技术上可以但通常情况下没人这么干因为二层隔离和三层隔离不配合的话管理会乱成一锅粥。反过来一个IP网段也可以横跨多个VLAN但跨VLAN通信必须依赖三层路由设备否则两端永远找不到对方。对做实验的新手来说最直观的理解是VLAN决定“广播能不能到你那里”IP子网决定“报文能不能找到你”。广播过不去就算IP地址规划得再完美ping也是不通的。1.3 实验里最常用的是哪种VLAN划分方式VLAN的划分方式有好几种基于端口、基于MAC地址、基于协议、基于IP子网。真实项目中90%以上用的都是基于端口的静态VLAN。管理员手动把交换机的某一个接口划入指定VLAN简单、清晰、容易排查。实验课里做的VLAN实验几乎也都是这个模式。基于MAC地址的动态VLAN通常用在终端频繁移动的办公场景比如员工换了物理位置交换机通过识别MAC地址自动把它划到原来的VLAN里。但这类方案配置量大VLAN表容易膨胀实验里几乎不去碰它。还有一点需要提前建立概念VLAN ID的范围是1到4094。默认情况下所有端口都属于VLAN 1VLAN 1也是管理VLAN一般不建议把业务流量放在VLAN 1里。因为VLAN 1很特殊很多协议报文默认打的就是VLAN 1的标签如果业务流量也混在里面排查问题的时候会分不清东西。2. 实验拓扑与地址规划为什么必须用两台交换机才能理解Trunk2.1 拓扑结构两条链路、两台交换机、四台PCVLAN实验最经典的拓扑需要两台交换机来支撑。只在一台交换机上做VLAN划分你会错过整个实验里最核心的部分——Trunk。我用的拓扑如下PC1(OFFICE)────SW1────────SW2────(RD) PC3 │ Trunk │ PC2(OFFICE)────SW1────────SW2────(RD) PC4PC1和PC2接在SW1上划分到VLAN 100方便起见给业务名取一个办公网语义的OFFICE。PC3和PC4接在SW2上划分到VLAN 200业务名取研发网语义RD。SW1与SW2之间用一条链路连接这条链路必须配置成Trunk。之所以强调必须用两台交换机是因为VLAN隔离在一台设备上体现为“端口分组”但到了两台设备上你会发现一个新问题PC3和PC4不在同一台交换机上交换机之间只有一条链路如何保证PC1发往PC3的帧能正确穿越SW1和SW2之间的链路同时又不会把VLAN 200的广播带到VLAN 100里答案就是Trunk加802.1Q标签。VLAN的跨设备传输才是这个实验真正的学习重点。2.2 地址规划先把IP、VLAN、接口对应关系列清楚实验前我建议先把地址表列出来不要边想边配。表里的每一项都要能和拓扑图上的每一根线对应上。设备所属VLANIP地址用途说明PC1VLAN 100192.168.100.1/24办公网终端PC2VLAN 100192.168.100.2/24办公网终端SW1VLAN 100192.168.100.254/24预留后续单臂路由网关PC3VLAN 200192.168.200.1/24研发网终端PC4VLAN 200192.168.200.2/24研发网终端SW2VLAN 200192.168.200.254/24预留后续三层网关第一阶段做二层隔离实验时PC不需要配网关因为同VLAN通信根本不需要路由。网关上特意预留了.254这个地址是为了后面做VLAN间通信实验时不用回头改IP规划。地址规划这里有个小经验VLAN ID和IP网段最好能对应起来。VLAN 100配192.168.100.0/24VLAN 200配192.168.200.0/24一眼就能看出谁属于谁。实际项目里这种命名习惯能省掉大量排查时间。2.3 模拟器选哪种教学级图形模拟还是真机镜像模拟实验环境的选择会影响体验但不影响核心原理。我接触过几类模拟环境各有各的脾气。教学级图形化模拟器上手快拖拽设备就能连线内置的抓包功能适合观察802.1Q标签长什么样。缺点是协议实现有简化某些细节行为跟真实设备有出入不过做VLAN实验完全够用。真机镜像类模拟器加载的是厂商真实系统程序命令和真实设备几乎一模一样适合那些准备考网络工程师认证的朋友。缺点是拓扑组建麻烦报错信息写得比较冷酷新手容易在细节上受挫。还有条件的话可以直接在实验箱真机上做。真机上能看到端口指示灯随线缆插拔的变化能感受到物理链路对逻辑配置的影响这是模拟器替代不了的体验。我的建议是第一次做VLAN实验就用你手头最顺手的模拟器目标只有一个——把配置命令和原理对应起来。等后续做更复杂的实验再换真机镜像环境也不迟。3. 配置手记Access口、Trunk口与那段最容易被跳过的PVID3.1 配置前先摸底确认每台PC落在哪个接口很多实验指导书会直接告诉你“PC1连接SW1的G0/0/1口”但在真实场景里你面对的设备接口可能贴满了线也可能什么都没贴。登录设备之后第一件事永远是做端口摸底。用查看命令列出所有接口的状态重点看两个字段接口的协商状态是不是UP接口下学习到了哪些MAC地址。如果某个接口状态是DOWN说明对端PC没接线或者网线有问题后续配置做了也是白做。这一步看起来多余实际上非常关键。有一次我在实验环境里照着拓扑图猛配一通最后发现PC2接的其实是SW1的G0/0/2口而G0/0/1口根本没有设备连接因为拓扑图上标注的端口和实际布线对不上。看清楚再动手能省去后面大量的无效排查。3.2 创建VLAN与Access口配置每条命令的意图都要清楚下面是我在常用环境里的命令写法。不同厂商设备的命令拼写有差异但思路完全一致我这里重点讲透每一步到底在干什么。system-view vlan 100 name OFFICE quit vlan 200 name RD quit第一行进入系统视图相当于进入设备的全局配置模式。vlan 100这条命令创建了一个VLAN并进入VLAN视图。name OFFICE是给VLAN起个业务名字方便以后在配置里快速识别用途。创建完VLAN之后把PC1所在的接口划入VLAN 100interface GigabitEthernet0/0/1 port link-type access port default vlan 100 quit接口这里配置了两条关键信息。第一条port link-type access把接口类型设置为Access口。Access口的特点是只能属于一个VLAN收到的无标签帧都会被交换机打上这个接口的PVID标签。第二条port default vlan 100设置的就是PVID。很多入门教材把这条命令叫做“把端口加入VLAN 100”准确地说它设置了端口收到无标签帧后默认打上的VLAN ID。对Access口来说PVID就等于这个端口所属的VLAN。配完PC1的接口后PC2、PC3、PC4的操作完全一致只需要把VLAN号和接口号替换成对应的值。PC1和PC2划入VLAN 100PC3和PC4划入VLAN 200。3.3 Trunk配置跨交换机的VLAN交通干线两台交换机之间的互联链路配置的是Trunk口。Trunk口的含义是这条链路上可以承载多个VLAN的流量每个帧通过802.1Q标签来标明自己属于哪个VLAN。SW1侧配置示例如下interface GigabitEthernet0/0/23 port link-type trunk port trunk allow-pass vlan 100 200 quitSW2侧做相同配置但注意必须是在连接SW1的那个物理接口上配置不要配错口。这里有个容易被新手忽略的细节port trunk allow-pass vlan 100 200我只放行了VLAN 100和VLAN 200没有写成允许所有VLAN通过。这样做的原因有两个。第一收窄广播域。Trunk口号称能承载多个VLAN但并不意味着要把所有VLAN都放上去。只放行需要跨交换机通信的VLAN其余VLAN的广播帧不会跑到这条链路上来。第二方便排错。当Trunk上有异常流量时明确列出放行列表能快速定位是哪个VLAN的问题。为什么不推荐直接用允许所有VLAN这条配置在实验环境里这样配确实能通但到了真实项目中Trunk口默认放行所有VLAN会带来不小的安全风险一个VLAN的广播可能意外扩散到另一台交换机的所有端口。养成显式放行的习惯VLAN实验里就该开始。3.4 PVID到底是个什么鬼Access口和Trunk口都有默认VLANPVID的全称是Port-based VLAN ID端口默认VLAN ID。这个概念在VLAN实验里太重要了但也最容易被人忽略。Access口收到一个无标签帧交换机查找这个端口的PVID给它贴上对应的VLAN标签然后放进该VLAN的转发流程。这就像前台收到一封信信封上没有写寄往哪个部门前台就按照这个端口默认的部门归属帮它贴上标签。Trunk口同样存在PVID。缺省情况下Trunk口的PVID是VLAN 1收到无标签帧时同样会打上VLAN 1的标签。实验里一般不修改Trunk口的PVID就让它在VLAN 1待着。但你必须理解这个行为否则下面这个坑你迟早会踩。3.5 一次真实踩坑Access口误配成Trunk口之后的完整排查链路那次问题是这样的PC1能ping通PC2PC3能ping通PC4但PC3无论如何也ping不通PC4。按拓扑图来看这两台PC都在VLAN 200里而且都接在SW2上按理说不该有问题。我当时的排查思路按顺序复盘一下可以作为参考。第一步确认终端配置。在PC3上查看IP地址配置确认掩码无误确认PC4的IP地址没配错。这一步虽然基础但必须做因为很多“排查半天”的案例最后发现是终端IP配错了。第二步查SW2上的VLAN表。用查看VLAN信息的命令看VLAN 200是否存在以及有哪些端口加入。结果让我意外VLAN 200存在但接口列表里只有接PC3的口PC4的接口不在里面。第三步查PC4接口的配置。这下问题暴露了PC4所接的接口端口类型居然还是trunk。也就是说这个接口根本没被划入VLAN 200。过程是这样的我先前做跨交换机实验时暂时把这个接口临时改成了Trunk用来测试链路测试结束后忘了改回来后面的配置命令是在错误状态下执行的。PC4发出的帧到达这个Trunk口时因为是无标签帧被交换机的PVID规则打上了默认VLAN 1的标签。PC3的广播帧都在VLAN 200里转发自然到不了PC4。修复很简单把接口改回access设置默认VLAN为200。但排查过程却花了不少时间关键原因是我之前一直盯着VLAN配置和Trunk配置看没有第一时间想到“终端所接的接口类型错了”这个方向。这个案例给我的教训是交换机的端口类型是实验里排错时要优先检查的指标。很多怪异现象到最后都归结于某个接口的link-type和预期不一致。4. 验证不是ping通就结束看标签、查表项、找广播4.1 ping通只是表象测试矩阵帮你确认隔离逻辑配置完成后验证工作不能只做“ping一下通了”就收工。建议你把测试矩阵列清楚每个场景都跑一遍才能确认VLAN隔离逻辑真正生效。测试场景操作预期结果说明同VLAN互通PC1 ping PC2通两台设备都在VLAN 100广播域内可达同VLAN跨设备PC1 ping PC3通跨交换机但属于同一VLANTrunk承载跨VLAN互通PC1 ping PC4不通VLAN隔离生效二层广播不可达拔掉Trunk后同VLAN跨设备PC1 ping PC3不通验证Trunk是跨交换机通信的唯一通路第四种测试很多人会漏掉但非常有价值。拔掉SW1与SW2之间的链路后PC1应该无法再ping通PC3而PC1和PC2之间依然互通。这个现象能直观告诉你Trunk在整条链路里的作用。4.2 查看命令看什么VLAN表、端口表、MAC地址表ping通之后打开查看命令确认设备内部的数据状态这才是验证的重点。查看VLAN摘要信息重点关注每个VLAN包含了哪些端口区分VLAN 100和VLAN 200的端口列表是否符合预期。查看MAC地址表重点关注交换机学习到了哪些MAC地址以及这些MAC地址归属于哪个VLAN。一个完整的MAC表项通常包含MAC地址、VLAN ID、出接口三个要素。如果看到某台PC的MAC地址出现在错误的VLAN里说明端口划分有问题。查看端口详细的VLAN属性重点关注接口的PVID和放行VLAN列表。Access口的PVID应该等于它所属的VLANTrunk口的放行列表里应包含所有需要跨交换机通信的VLAN。这三张表查完整个实验的二维状态就已经很清晰了流量怎么进的交换机怎么转的又从哪里出去每一环都有据可查。4.3 抓包看一次802.1Q标签比背十遍协议都管用很多教材讲802.1Q标准说你会在以太网帧的源MAC地址和Type字段之间插入4字节的标签。文字描述听着抽象真去抓一次包就一目了然。在模拟器里对Trunk接口设置抓包然后从PC1 ping PC3。抓到的帧会在以太网头部里多出一个VLAN标签信息里面包含12比特的VLAN ID。你还会注意到同一条Trunk链路上VLAN 100和VLAN 200的帧是混在一起传输的区别全靠标签来识别。抓包之后你会深刻理解为什么Trunk口必须处理带标签帧为什么交换机知道该把这个帧转发到哪里去。这个“看到标签”的经验能帮你建立对VLAN跨设备通信的整体画面。4.4 从ping失败的三种表现快速推断问题断点实验里遇到ping不通不同现象的指向完全不同这里总结一下。同VLAN内ping不通优先检查本端和对端的接口类型、PVID设置确认两台PC是否被划入同一个VLAN。跨VLAN ping不通这是预期现象。如果你希望它们能通信说明三层网关还没配置或者路由有问题不要急着怀疑二层VLAN配置错了。拔掉Trunk后同VLAN跨设备ping不通这是预期现象。反过来如果你发现拔掉Trunk后还能通那多半是链路上还有另一条没有被发现的物理通路常见于实验拓扑里有多余连线没有清理。还有一种情况比较隐蔽PC能ping通网关但ping不同网段的PC说明二层隔离是对的三层路由表或策略有问题。排查从三层开始不要回头去动VLAN配置。4.5 广播抑制的直观感受看一次设备CPU飙升说一个我至今印象很深的实验细节在没有划分VLAN的扁平二层环境里我同时开了好几台虚拟PC设备CPU占用率一路飙升。原因很简单每台PC启动时都会发送大量的广播帧而所有端口都在同一个广播域里这些广播被无差别复制到每一台终端上。划分VLAN之后同样数量的设备广播只限制在各自的小组内CPU负载明显下降。这种“用数据说话”的体验比任何文字描述都更能让人理解VLAN抑制广播的实际价值。5. 把实验向前推一步单臂路由与三层交换该怎么接续5.1 二层隔离不是终点跨VLAN通信才是后续重点VLAN实验做到这里二层隔离的目标已经达成不同VLAN之间互不相通。但真实网络里各个VLAN之间往往需要通信。想想一个典型的办公场景财务部门的同事需要访问公共文件服务器而文件服务器属于IT部门所在的VLAN。如果VLAN之间完全隔离办公流程就断了。所以VLAN实验从来不是孤立存在的它的后续实验一定是跨VLAN路由。根据你的实验条件有两条路可以走单臂路由方案或者三层交换机方案。5.2 单臂路由用一条物理链路撑起多个VLAN的网关单臂路由的原理是在路由器上将连接交换机Trunk口的物理接口逻辑上拆分成多个子接口。每个子接口指定一个VLAN ID并配置一个IP地址作为该VLAN的网关。为什么叫“单臂”因为路由器依靠一条物理链路和交换机相连这条链路同时承载多个VLAN的进出流量从物理形态上看路由器就像用一条手臂搭在交换机上。常用环境里的配置大致是这样interface GigabitEthernet0/0/0.1 dot1q termination vid 100 ip address 192.168.100.254 255.255.255.0 arp broadcast enable quit interface GigabitEthernet0/0/0.2 dot1q termination vid 200 ip address 192.168.200.254 255.255.255.0 arp broadcast enable quit子接口配置的三个要素对应关系很直白子接口编号是逻辑标识dot1q termination vid 100告诉设备这个子接口处理哪个VLAN带标签的帧ip address设置的是该VLAN的网关地址。arp广播使能用来处理VLAN内的ARP请求。完成之后把PC1到PC4的网关分别指到对应子接口的IP地址跨VLAN ping就开始通了。数据从PC1发出先到网关路由器查路由表后再经同一根物理链路返回交换机由交换机根据VLAN标签转发给目标VLAN内的PC。5.3 三层交换方案用SVI当网关现代园区网的主流做法如果你实验环境里用的是三层交换机更推荐用SVI方式来做VLAN间路由。SVI是Switch Virtual Interface的缩写就是给VLAN创建一个三层虚接口直接在这个接口上配置IP地址作为网关。interface Vlanif100 ip address 192.168.100.254 255.255.255.0 quit interface Vlanif200 ip address 192.168.200.254 255.255.255.0 quit配置看起来比单臂路由简单得多因为VLAN虚接口直接和VLAN绑定不用去管子接口编号、标签封装这些细节。PC网关指向各VLAN的SVI地址即可。两种方案怎么选可以从几个维度对比。对比维度单臂路由三层交换SVI硬件需求一台路由器加交换机三层交换机转发性能受限于路由器处理能力硬件转发性能更高配置复杂度子接口、标签、ARP要逐项配直接在VLAN虚接口配IP适用场景小型网络、教学演示园区网、企业汇聚层我个人的建议是单臂路由实验一定要做一遍因为它是理解子接口和VLAN标签的好教材。实际项目里大规模网络通常会用三层交换方案因为性能更好配置也更有扩展性。5.4 继续往下走之前给新手的几句实操建议VLAN实验做完之后我建议你再做几件事把知识焊死在理解里。第一主动制造故障。把Trunk口的放行VLAN列表改成不包含VLAN 200看看跨交换机的VLAN 200设备之间会怎么表现。把已规划的Access口误配成Trunk口观察终端通信异常的现象。主动制造一次故障并完整排查比把整套配置成功敲十遍更有效。第二保留完整的排错记录。我在实验过程中都会把查看命令的输出保存下来标注时间点和操作步骤。这样做的好处是后续出问题时可以回溯配置变更历史。尤其是做一些接口类型调整、PVID修改这类操作没有记录很容易迷失方向。第三留意命名和编号习惯。VLAN ID、网段、业务名称要保持对应比如VLAN 100对应办公网VLAN 200对应研发网。一开始就养成这种习惯以后做综合实验时不会手忙脚乱。到现在我做VLAN实验还保留一个习惯每配完一台设备都会把端口类型和VLAN表截一遍屏再往下走。VLAN是所有交换实验里最简单也最容易出细节错的而细节全在这些表项里。这个实验看起来基础但无论是端口类型的理解、PVID的作用还是Trunk的放行控制每一项都是后续所有交换技术的地基。把地基打牢了后面学习生成树、链路聚合、VXLAN这些进阶内容时你会回来感谢这个下午的。