
干网络这行谁没在Cisco Packet Tracer里敲过几条VLAN命令呢。我记得最开始学VLAN配置的时候手里一台真机都没有全靠PT一遍遍搭拓扑、建VLAN、配Trunk配错了就删掉重来。后来第一次摸到真实的2960交换机发现之前在模拟器里练出来的那套VLAN配置思路几乎原封不动就能用上。这篇博文不搞虚的直接围绕“Cisco Packet Tracer VLAN配置实验”讲透三件事VLAN到底在解决什么问题、完整配置命令怎么敲、踩坑之后怎么顺着蛛丝马迹排查。适合正在学网络基础、准备考CCNA或者刚入行需要快速上手VLAN配置的朋友跟着操作一遍你会对二层交换网络有一个彻底清晰的认知。1. 为什么非得在模拟器里把VLAN搞明白1.1 一个典型“全楼一个网段”的灾难现场前阵子帮朋友公司整理网络几十台电脑全挤在192.168.1.0/24这一个网段里。平时用着没感觉一到下午办公高峰期就卡。我在核心交换机上看了下ARP广播报文占比高得吓人打印机一广播、某台机器中了ARP病毒全楼跟着遭殃。更麻烦的是财务、人事、技术几个部门全部二层互通领导想要的“部门隔离”根本无从谈起。这就是VLAN要解决的第一个问题广播域太大。交换机的本质工作是转发帧但它遇到目标MAC为广播地址的帧会在所有端口泛洪。VLAN把一个物理局域网切成多个逻辑广播域不同VLAN的二层流量完全隔离广播报文只在各自VLAN内部传播。VLAN划分之后财务部的人没办法直接在二层访问技术部资源安全性也顺带上来了。1.2 Packet Tracer在VLAN学习中的定位有人觉得Packet Tracer太“玩具”不如GNS3或者EVE-NG专业。但说实话对VLAN这种基础二层技术PT的教学价值非常突出它自带完整的交换机、路由器和PC图标拖拽就能组拓扑CLI命令和真实IOS高度一致还带一个“模拟模式”可以一帧一帧看报文怎么被转发。尤其是看802.1Q标签这个需求在热搜里也很常见——“用PC抓vlan包的设置”。PT的模拟模式能直接展示PDU的细节你在Trunk链路发送一个跨交换机帧点开就能看到帧中间多出来的4字节VLAN Tag。这比你在真实设备上用Wireshark抓包要直观得多也安全得多。学VLAN的第一站PT完全够用。1.3 实验版本与拓扑规划我用的是Packet Tracer 8.2.x思科官方渠道就能拿到注册NetAcad账号之后免费使用。设备模型建议这样选交换机Cisco 2960二层交换做VLAN划分和Trunk3560三层交换做SVI实验路由器Cisco 2911做单臂路由实验终端普通PC即可本文的IP规划统一如下后面所有实验都用这套地址项目VLAN 10技术部VLAN 20财务部网段192.168.10.0/24192.168.20.0/24网关192.168.10.1192.168.20.1PC分配PC1、PC3PC2、PC4端口划分Fa0/1、Fa0/10Fa0/2、Fa0/20为什么网关地址这样规划因为后续单臂路由和SVI实验都要用到三层网关提前规划好后面配置就不会反复改IP。2. VLAN工作的底层逻辑标签、Access和Trunk2.1 VLAN隔离的本质是隔离广播域交换机能隔离冲突域但隔离不了广播域。你往一台24口交换机上接24台机器它们都在同一个广播域里。VLAN的概念很简单把交换机的端口分组每组一个编号编号相同的端口组成一个新的广播域。这就是“VLAN划分”最常见的形态——基于端口的静态VLAN。但问题来了不同的VLAN在物理上还是共用同一台交换机、同一根线缆交换机怎么知道一个帧属于哪个VLAN答案靠标签。一个帧在Access端口进入交换机时如果它属于VLAN 10交换机会内部打上VLAN 10的标签转发到目的Access端口前再把标签剥掉。这个标签只在交换机内部或者Trunk链路上有意义对终端PC是隐藏的。2.2 802.1Q标签到底长什么样标准以太网帧本来有7个字段前导码、目的MAC、源MAC、类型/长度、数据、FCS。802.1Q在源MAC和类型/长度之间插入了4字节的Tag。4字节里包含子字段长度作用TPID2字节固定值0x8100标识这是一个带VLAN Tag的帧Priority3 bit优先级QoS用CFI/DEI1 bit规范格式/丢弃优先级基本不用管VID12 bitVLAN编号范围1-409412 bit的VID最多4096个其中0和4095保留所以真正可用的VLAN ID是1到4094。默认情况所有端口都在VLAN 1里VLAN 1也叫默认VLAN、管理VLAN。很多安全加固的第一条就是建议别把管理网段放在VLAN 1里。2.3 Access端口和Trunk端口的职责边界这是VLAN配置里最核心的概念区别维度Access端口Trunk端口连接对象终端PC、打印机、服务器交换机之间、路由器和交换机之间携带VLAN数只属于一个VLAN可以同时转发多个VLAN的帧发帧行为剥掉Tag发无标签帧保留Tag原样转发收帧行为接收无标签帧按端口VLAN打Tag接收带Tag帧无标签帧归Native VLAN典型命令switchport mode accessswitchport mode trunk还有一个重要概念Native VLAN。Trunk链路上默认所有无标签帧都属于Native VLAN这个值默认是VLAN 1。两端Trunk的Native VLAN必须一致否则会出现帧被错误归类的现象。这一点我在第6章会专门展开它是Trunk故障里最隐蔽的一类问题。2.4 VLAN划分的几种方式不止端口一种很多人以为VLAN划分就是端口分组实际上还有基于MAC地址、基于IP子网、基于协议甚至策略的VLAN划分方式。Packet Tracer里主要是静态端口VLAN因为PT对MAC动态VLAN的支持很弱但这不影响你理解核心逻辑。真实企业环境里如果终端频繁移动可以考虑基于MAC的动态划分如果一台服务器要同时被多个VLAN访问还需要考虑端口是否要做Trunk或者用VLAN翻译、Private VLAN等进阶手段。刚起步阶段把静态端口VLAN吃透80%的组网场景都够用了。3. 实验一跨交换机VLAN划分与Trunk链路配置3.1 组网结构先在PT里拖出两台2960交换机命名SW1和SW2。拓扑连线如下SW1 Fa0/1 接 PC1VLAN 10SW1 Fa0/2 接 PC2VLAN 20SW2 Fa0/10 接 PC3VLAN 10SW2 Fa0/20 接 PC4VLAN 20SW1 Gig0/1 接 SW2 Gig0/1 作为Trunk链路PC的IP配置按第1.3节的规划手动设置。注意PC的网关先不填因为这一阶段只做二层隔离还没有三层路由。如果你在验证阶段发现同一VLAN都通、不同VLAN也能通多半是网关被系统自动填充了删掉再测。3.2 配置SW1创建VLAN并划分端口打开SW1的CLI依次执行enable configure terminal hostname SW1 vlan 10 name Sales vlan 20 name Finance exit interface fastEthernet 0/1 switchport mode access switchport access vlan 10 interface fastEthernet 0/2 switchport mode access switchport access vlan 20 exit write在VLAN配置里重点理解两件事。第一switchport mode access和switchport access vlan 10缺一不可。前者告诉端口“你是Access口不是Trunk口”后者告诉端口“你属于VLAN 10”。有的同学只配了access vlan忘了mode access结果端口默认还在动态协议协商状态行为不确定。上真机的时候有些端口默认是Dynamic Auto模式不显式配mode后续Trunk协商会一脸懵。第二vlan 10进入VLAN视图后系统自动创建VLANname用于标识用途。在show vlan brief里有名字的VLAN明显好看得多排错时一眼识别。SW2的配置完全对称这里不重复贴了。3.3 配置Trunk链路并验证在SW1和SW2的互连端口上配置Trunk。以SW1为例interface gigabitEthernet 0/1 switchport mode trunk默认情况下Trunk口会放行所有VLAN不需要额外写allowed vlan。但严谨起见建议显式指定interface gigabitEthernet 0/1 switchport trunk allowed vlan 10,20配置完成后用三个命令看状态show vlan brief show interfaces trunk show interfaces gigabitEthernet 0/1 switchportshow interfaces trunk输出里有一行“Vlans allowed on trunk”如果你之前没指定默认是1-1005如果你只写了10,20注意VLAN 1默认还在不在allowed列表里。Cisco的Trunk默认放行VLAN 1是为了管理协议比如CDP、VTP能在链路上跑你的用户流量网段如果没有VLAN 1也不会有影响。验证连通性PC1 ping PC3应通PC1 ping PC2应不通。不通的那次正是VLAN隔离生效的证据。为了更直观打开PT右下角的Simulation模式在PC1发起一个到PC3的ping点信封逐步看帧在SW1的Trunk口是否带上了802.1Q标签。你会发现在SW1内部帧从Fa0/1进去之后被标成VLAN 10在Gig0/1出去时带着Tag到了SW2交换机看Tag就知道该送到Fa0/10所在的VLAN 10端口剥掉Tag发给PC3。这个过程语言很难描述清楚但在PT动画里一遍就能看懂。3.4 实验一常见问题为什么“看起来都通了”PT里经常出现一种假象PC1 ping PC2居然通了明明一个VLAN 10一个VLAN 20啊。原因多半是PC的网关填写了同一个地址或者交换机上还残留着默认VLAN 1的端口连接。比如你把PC2插到了Fa0/1上但Fa0/1还处于Access VLAN 10状态PC2自然就被划进VLAN 10了。排查命令用这个show interfaces fastEthernet 0/2 switchport重点看“Access Mode VLAN”这一行它会明确显示端口到底归在哪个VLAN。我在PT里做过不少次这种低级错误用一次show命令就原形毕露。4. 实验二用单臂路由打通VLAN间通信4.1 为什么二层交换机解决不了跨VLAN通信实验一做完同VLAN通了跨VLAN不通。这个“不通”恰恰是VLAN的使命。但如果业务上技术部需要访问财务部的打印机呢你需要路由。二层交换机只看MAC地址表它不知道192.168.10.0这个网段怎么去。真正能完成跨网段通信的设备是路由器路由器基于IP路由表做三层转发。传统方案里路由器要连到交换机上但交换机有多个VLAN如果每VLAN都拉一根线到路由器接口根本不够用。于是有了单臂路由Router-on-a-Stick。交换机往路由器只连一根物理链路链路上跑Trunk允许VLAN 10和20的帧一起走。路由器用子接口Subinterface把这个物理接口逻辑切分成多个虚拟接口每个子接口对应一个VLAN充当该VLAN的网关。4.2 单臂路由完整配置把实验一的SW1和路由器R1连接起来。R1的GigabitEthernet 0/0连接到SW1的GigabitEthernet 0/2SW1的G0/2要配置成Trunkinterface gigabitEthernet 0/2 switchport mode trunkR1配置如下enable configure terminal hostname R1 interface gigabitEthernet 0/0 no shutdown interface gigabitEthernet 0/0.10 encapsulation dot1Q 10 ip address 192.168.10.1 255.255.255.0 interface gigabitEthernet 0/0.20 encapsulation dot1Q 20 ip address 192.168.20.1 255.255.255.0 exit write这里有几个细节必须注意第一物理接口GigabitEthernet 0/0必须no shutdown。子接口配了地址但如果物理接口处于shutdown状态整个链路都起不来。PT里新建的路由器默认状态可能不一致建议每次都显式敲一下。第二encapsulation dot1Q 10是子接口的灵魂。它告诉路由器接收带VLAN 10 Tag的帧时交给接口G0/0.10处理从G0/0.10出去的帧要打上VLAN 10的Tag。如果你漏了这条命令子接口会直接无法处理802.1Q封装的数据包表现为ping不通。第三PC的网关必须指向对应子接口地址。192.168.10.x网段的PC网关配192.168.10.1192.168.20.x网段的PC网关配192.168.20.1。这一步缺失时PC发出去的目的IP根本不属于本地网段会被直接丢弃连路由器都到不了。配置完可以用show ip interface brief确认三个接口状态再用show vlans查看802.1Q封装信息。4.3 实测连通性并看一次“跨VLAN”的完整路径PC1填好网关192.168.10.1PC2填好网关192.168.20.1然后PC1 ping PC2。正常结果应该是通。不通时按顺序排查在PC1上ping自己网关192.168.10.1不通就去查子接口地址和封装。在R1上ping PC1地址能通则说明下行链路没问题问题可能在PC2侧。检查PC2网关是否填了192.168.20.1而不是192.168.10.1。检查SW1连路由器的端口是不是Trunk有时候这个端口还是默认Access VLAN 1导致带Tag的帧直接被丢弃。在PT模拟模式下从PC1打包一个目的为PC2的ICMP消息按下发送后逐个观察交换机从Fa0/1收到无标签帧打上VLAN 10标签通过G0/2 Trunk发给路由器路由器看到Tag 10交给子接口G0/0.10处理查路由表发现192.168.20.0/24在G0/0.20子接口于是重新封装打上VLAN 20标签再扔回交换机交换机从G0/2收到VLAN 20的帧剥掉Tag从Fa0/2转发给PC2。这个转发逻辑我不会用复杂的图来画你只要记住一句话单臂路由的本质是路由器的每个子接口分别对应一个VLAN的网关流量从“VLAN 10网关”进从“VLAN 20网关”出中间依靠Trunk链路承载多个VLAN的帧。4.4 单臂路由的瓶颈为什么后来被边缘化既然实验二能通为什么真实企业网络很少用单臂路由当核心方案因为所有VLAN间互访流量都挤在这一条物理链路上带宽成了瓶颈。你的交换机G0/2只有1Gbps技术部和财务部视频会议互访消耗的流量全从这根线上过加上路由器CPU做三层转发也有性能上限高负载下延迟和丢包立刻显现。单臂路由更适合小型分支、临时网络或学习理解VLAN间路由原理。真正的企业园区网核心通常会选择三层交换机也就是实验三的方案。5. 实验三用三层交换机SVI实现VLAN间路由5.1 SVI是怎么回事三层交换机在二层交换芯片的基础上集成了路由模块你可以在它身上直接创建VLAN接口Switch Virtual InterfaceSVI。SVI可以理解为“交换机给某个VLAN虚拟出来一个路由接口”这个接口的IP就是该VLAN内PC的网关。启用ip routing后三层交换机会像路由器一样查路由表把包从一个VLAN SVI转发到另一个VLAN SVI而且转发走硬件芯片速度远快于路由器软件转发。这就是SVI方案替代单臂路由的核心优势。为什么这件事对理解网络很重要因为很多同学学完单臂路由之后以为“路由器才能路由交换机只能交换”这句话在现代园区网里早就不成立了。三层交换机就是“路由功能集成到交换硬件”的典型SVI就是它的路由接口。5.2 SVI配置步骤把实验一的SW1换成3560三层交换机保留原有VLAN 10、VLAN 20的端口划分然后在SW1上配置enable configure terminal hostname SW1-L3 ip routing interface vlan 10 ip address 192.168.10.1 255.255.255.0 no shutdown interface vlan 20 ip address 192.168.20.1 255.255.255.0 no shutdown exit write注意一个关键点普通2960虽然也能创建interface vlan但它默认是二层交换机没有ip routing功能SVI只能作为管理接口存在无法转发跨VLAN流量。所以在PT里做这个实验一定要选3560或者更高型号的三层交换机。配置完成后用下面的命令验证show ip route show interface vlan 10 show vlan briefshow ip route里应该能看到192.168.10.0/24直连接口Vlan10192.168.20.0/24直连接口Vlan20诡异的是某些PT版本在没有ip routing的情况下SVI照样能通跨VLAN这是个模拟器瑕疵。真机上没有ip routing的交换机虽然也有各种VLAN接口但默认不会在这些接口间做路由转发。所以我个人每次配置完都会看一眼show ip route确认路由表里有Direct条目再继续做连通性测试。PC的网关地址填192.168.10.1和192.168.20.1测试流程和实验二一样。通了之后你可以在模拟模式下看包路径PC1 → SW1交换机内部直接查路由表从Vlan10接口收包从Vlan20接口发出包压根不需要离开交换机。这就是SVI和单臂路由最本质的区别——单臂路由是流量绕一圈出去再回来SVI是流量直接在交换机内部路由。5.3 单臂路由和SVI真实项目里怎么选我把两种方案放一起对比帮助你之后做技术选型对比维度单臂路由SVI三层交换转发性能路由器CPU软件转发一般较低硬件ASIC转发性能高带宽瓶颈单物理链路共享所有VLAN流量无单一链路瓶颈背板转发配置复杂度子接口封装略繁琐SVIip routing直观成本需要一台路由器需要三层交换机适用场景小型分支、实验室园区核心/汇聚大规模多VLAN如果公司只有一个网段偶尔跨VLAN访问单臂路由成本低够用但凡有三四个VLAN以上或者视频会议、服务器互访需求大老老实实上三层交换机。华为交换机里方向类似只是命令不同VLANIF对应思科的SVIdisplay vlan对应show vlan思路完全相通。6. 配置完成之后最容易踩的坑一段真实排查链路6.1 现象同VLAN全通跨VLAN死活不通这个现象我见过太多次几乎每次都是低级参数问题。按下面这个顺序查10分钟内能定位在PC上ping网关如果不通看PC的IP地址是否和网关同网段、网关是否填错。ping通了网关但ping不通对端PC检查对端PC的IP和网关。在路由器或三层交换机上直接ping对端PC的IP。通了说明中间的二层VLAN划分没问题不通问题在跨VLAN路由或防火墙策略。如果有配置过ACL的话还要查ACL是不是把跨VLAN访问给deny了。很多人在PT里配了ACL又忘了它存在排错排半天。6.2 现象Trunk配了VLAN却还是不通Trunk问题里最常见的有三个原因。第一端口模式不对。配置交换机G0/1为trunk但另一台交换机G0/1还是默认的dynamic auto或access两端协商不出Trunk。用show interfaces trunk看如果只有一端显示“Trunk”另一端不显示基本就是协商问题直接把两端的模式都显式写成trunk。第二allowed vlan列表没放行对应VLAN。如果你在交换机上执行过switchport trunk allowed vlan 10那么VLAN 20默认会被从allowed列表里移除VLAN 20的帧在Trunk上直接不通。用show interfaces trunk看清楚实际放行了哪些VLAN。第三端口被划成了Access VLAN但接了另一台交换机。有些同事习惯给互连端口手动配access vlan 10结果两端一个VLAN 10一个VLAN 20二层就通不了。其实交换机互连只用配mode trunk根本不需要指定access vlan。排查期间核心命令是这组show interfaces trunk show interfaces gigabitEthernet 0/1 switchport show vlan brief6.3 Native VLAN不匹配最隐蔽的“幽灵通信”Native VLAN不一致时PT里往往不会立刻断网但会出现不少怪事同VLAN的PC丢了连通性、某些广播帧跑到别的VLAN里、CDP和VTP邻居全部消失。原理在于Trunk链路对无标签帧的归属处理。如果SW1的Native VLAN是10SW2的Native VLAN是20那么SW1发出的无标签帧SW2会当成VLAN 20的帧处理VLAN 10的无标签帧就被“翻译”成了VLAN 20的流量。在真实设备上系统日志会不断刷“Native VLAN mismatch”的告警Cisco还直接建议把两端Native VLAN统一到同一个值比如都改到VLAN 999避免VLAN 1的安全风险。PT对Native VLAN不匹配的模拟不如真机敏感但这恰恰容易造成教学盲区——你在PT里可能完全没症状到真机上却间歇性丢包。所以我建议在实验里主动把一端Native VLAN改成999另一端保持默认观察show interfaces trunk的输出和连通性变化亲眼看一次这个故障行为以后排错才有体感。6.4 从模拟器到真机还要记住的三点差异PT把很多“硬件细节”抽象掉了这是它教学友好的原因也是它和真机存在差异的原因。PT简化了STP收敛过程。真机上交换机加进网络时端口要经历Listening、Learning再进入Forwarding需要几十秒PT里基本瞬间就通。所以真机出现“刚插线ping不通等一会儿又通了”不用慌大概率是STP在收敛。PT不模拟DTP协商的所有细节。Packet Tracer里两条交换机一连配置trunk就通了真机上还要看VTP模式、DTP协商结果偶尔出现两边都是desirable结果却成了动态trunk。需要自己查看和判断。PT的IOS命令集是裁剪过的。基础VLAN、Trunk、SVI、单臂路由命令完整但什么VLAN Access-Map、Private VLAN这些高级二层功能PT基本不支持。进阶实验还是得靠GNS3、EVE-NG或者真机。说实话我在PT里把VLAN实验翻了不下五遍后来第一次去机房给真实交换机配VLAN手指敲CLI的速度比带我的师傅还快。VLAN这套东西逻辑不难难的是把一个帧从PC到交换机、从Access到Trunk、从交换机到路由器再回到交换机的路径完全看透。建议你在拿真机之前先在Packet Tracer里把实验一、实验二、实验三完整跑通再用模拟模式把每个关键帧翻一遍VLAN这块就真的吃透了。