实验VLAN配置这个题目看着简单实际上把很多刚入门网络的朋友拦在门口。我接触网络工程这些年带过不少新人做类似实验发现真正卡住的往往不是命令行敲不敲得出来而是想不明白端口为什么有那么多模式VLAN和IP之间又是什么关系。这篇就用一个非常朴素的实验场景从设计、配置到排错把VLAN配置这件事完整走一遍。适合正在学网络基础、准备考认证、或者刚转行做运维的朋友跟着敲一遍再看明白每步在干什么基本就能应付日常工作了。整个实验我是在模拟环境里完成的不需要真机也能做。你只要有一台能跑网络模拟软件电脑就够了配置命令也都来自主流企业级交换机的命令行风格真机上思路完全一致。下面从为什么要做VLAN开始讲。1. 实验前必懂的三个为什么1.1 为什么要做VLANVLAN到底解决了什么先说一个很常见的场景一台交换机下接了四十台电脑所有人都在同一个二层网络里。表面上看大家互访很方便实际上隐患不少。只要有一台电脑中了病毒、开了广播风暴或者某个网卡异常二层广播帧就会被交换机从所有端口转发出去全网机器都能收到。设备多的时候CPU光是处理无用的广播包就够忙了真正有用的业务流量反而变慢。更让人头疼的是排错你想查是哪台设备在广播就要在交换机上一层层看MAC地址表非常费劲。VLAN解决的问题简单说就是把一台物理交换机在逻辑上切成多个独立的虚拟局域网。VLAN 10里的广播帧只会在VLAN 10的成员端口之间转发不会跑到VLAN 20里去。这样广播域从一个大圈子变成几个小圈子。比如财务电脑在VLAN 20行政电脑在VLAN 10行政那边再有广播风暴也影响不到财务。跨VLAN通信必须经过路由器或三层交换机所以将来想加访问控制、限制谁访问谁也都方便了。我在实际项目里感受最深的还有安全隔离。如果一个办公室里有访客WiFi和员工WiFi两个网段不放同一个VLAN访客就算接了网线也没办法直接扫描员工电脑的共享资源。VLAN做的是二层隔离真正的安全策略在三层设备上来落地但没有VLAN这层隔离后续策略根本没处下手。1.2 本实验的拓扑设计与网段规划很多人做VLAN实验只盯着命令上来就create结果做到一半发现拓扑对不上、IP乱成一团。我习惯先画一张简图把设备、接口、VLAN、网段全部列清楚再动手。这次实验我用两台交换机和四台PC交换机LSW1连接PC1、PC2交换机LSW2连接PC3、PC4LSW1与LSW2之间用一条链路互联VLAN规划如下VLAN 10办公网段192.168.10.0/24网关192.168.10.254VLAN 20研发网段192.168.20.0/24网关192.168.20.254PC地址分配表终端IP地址子网掩码所属VLAN网关PC1192.168.10.1255.255.255.0VLAN 10192.168.10.254PC2192.168.20.1255.255.255.0VLAN 20192.168.20.254PC3192.168.10.2255.255.255.0VLAN 10192.168.10.254PC4192.168.20.2255.255.255.0VLAN 20192.168.20.254看到这里你可能会问为什么不把PC1和PC3都划在VLAN10里却要放到两台交换机上这正是为了演示跨交换机的VLAN互通。只有一台交换机时VLAN隔离很容易理解但真实园区网不可能只靠一台设备很多VLAN要跨交换机打通这就涉及trunk链路后面第4节专门讲。网段规划上我喜欢让VLAN ID和IP第三段对应上VLAN 10配192.168.10.xVLAN 20配192.168.20.x。这样以后看到一个IP我大概就能猜出它在哪个VLAN排查故障能少走很多弯路。1.3 实验环境与设备准备模拟环境最大的好处是可以随意折腾不怕把设备配置弄坏。我用的是常见网络模拟软件创建拓扑后选择实体设备直接开机操作。如果你用真实交换机要自己准备console线连接方式其实一样。操作前先确认几件事终端设备要先配置好IP和网关不然VLAN划分得再好后面的ping测试也没有意义交换机之间互联的物理链路要先连通接口状态要up提前记下设备型号和系统版本因为不同版本默认端口模式、命令表达可能有差别我见过有人在模拟器里连了线但线缆类型选错接口一直不亮白折腾半天。真机也要检查网线是否插对别只看端口灯亮了就以为万事大吉。2. 动手配置前先理解接口的两种身份2.1 Access端口和Trunk端口谁连接终端谁连接交换机端口模式这个概念很多初学者第一次接触会绕晕。其实你只要记住一个判断标准这个端口连接的是终端设备还是另一台交换机。连接PC、打印机这类终端通常用access端口。access端口属于某一个固定VLAN它收到PC发来的普通帧会自动打上这个VLAN的标签转发给PC时又会把标签剥掉让PC只看到没有VLAN信息的普通帧。PC完全不感知VLAN的存在也不需要额外设置。连接交换机与交换机之间或者交换机与路由器单臂路由场景通常用trunk端口。trunk端口可以同时承载多个VLAN的数据通过帧里的VLAN标签区分各VLAN流量。如果不打标签接收端根本不知道这个帧属于哪个VLAN。我打过一个比方access端口像单人间宿舍的门禁只有本宿舍的人能进trunk端口像办公楼的公共通道每个人胸前挂一张工牌VLAN标签保安看一眼工牌就放行到对应楼层。理解了这个模型后面配置就不会乱。实际工程里接入层交换机下联PC的口一定是access上联汇聚交换机的口一定是trunk。你只要按这个原则去规划网就不会搭出太大问题。2.2 802.1Q标签Trunk链路里多出来的4个字节Trunk能承载多个VLAN的帧依赖的是IEEE 802.1Q协议。它是在标准以太网帧的源MAC地址和类型字段之间插入了一个4字节的标签。标签里有12位的VLAN ID也就是我们常说的VID取值范围是0到4095实际可用VLAN ID通常在1到4094之间。接收设备靠这个VID判断该帧属于哪个VLAN。很多人在步骤里问我背这个协议结构有什么用说实话工程上不需要你手写帧结构但你至少要记住两个结论第一同一根trunk链路上不同VLAN的帧靠VID区分。所以两台交换机trunk上允许放行哪些VLAN两端必须保持一致。第二不带标签的帧在trunk端口上会被划分到某个VLAN这个VLAN叫Native VLAN默认通常是VLAN 1。两端的Native VLAN不一致就会出现数据画错VLAN的情况。这块细节等到排错部分再展开先有个印象就行。2.3 配置命令组合背后到底做了什么为了让后面实验顺理成章我先解释一下配置命令的生效逻辑。以创建VLAN并划端口为例system-view vlan 10 name office quit interface gigabitethernet0/0/1 port link-type access port default vlan 10这个过程中第一段只是完成了全局VLAN表的创建给VLAN 10起了个名字但还没有任何一个端口属于VLAN 10。端口真正进入VLAN是在进入接口视图之后才发生的。第二段发生了两件事把接口模式改成access然后把端口默认VLAN改成10。这里要特别提醒不要漏掉port link-type access这一行。有些设备端口默认可能是hybrid模式直接设默认VLAN未必能按access特性工作会造成VLAN隔离不彻底。用大白话说先告诉端口“你是单人宿舍门禁”再告诉它“你的宿舍是10号”。理解了这两层后面不管换什么厂商设备你都能快速找到对应的两条命令而不是死记硬背。3. 单交换机VLAN配置全过程3.1 创建VLAN与检查VLAN表先在交换机LSW1上创建VLAN 10和VLAN 20system-view vlan batch 10 20vlan batch好处是一次创建多个不用挨个进VLAN视图。如果需要给VLAN起名字再单独进vlan 10 name office quit vlan 20 name research quit名字建议用业务含义比如office、research、guest。不要用vlan10、vlan20这种没意义的名字。等你维护的设备多了看到display vlan满屏数字会疯掉业务名一眼就能看出来对应哪个部门。创建之后用display vlan看表display vlan注意观察VLAN 10和20的状态通常会是down因为还没有接口加入。这个down不是故障只是没有活跃端口。等你把端口划进去VLAN状态会变成up。3.2 把端口划入VLAN在LSW1上PC1接在0/0/1口PC2接在0/0/2口。我们这样配置interface gigabitethernet0/0/1 port link-type access port default vlan 10 quit interface gigabitethernet0/0/2 port link-type access port default vlan 20 quit配完之后马上验证display port vlan这个命令能看出每个端口的类型和PVID。比如0/0/1显示type是accessPVID是10说明这个端口归到了VLAN 10。如果显示PVID为空或者端口类型还是hybrid要回头检查命令是否生效、端口是否up。这里的PVID很关键它就是access端口默认VLAN的概念。数据帧进入端口时不带标签端口就会给它打上PVID对应的标签。PVID设成10这个口就在VLAN 10里没跑了。3.3 验证连通性ping不通也是有效结果在单交换机阶段我们来看看PC1和PC2之间的情况。PC1在VLAN 10PC2在VLAN 20虽然它们插在同一台交换机上但二层被隔开了。而且PC1和PC2的IP也不在同一个网段没有网关根本没有三层转发通道。所以实验里PC1 ping PC2结果会是不通。这个“不通”恰恰验证了VLAN的隔离效果。如果这时候你看到通了反而要吓一跳说明哪里配置有问题。想看得更细一点可以在交换机上执行display mac-address你会发现PC1的MAC地址只被学习在VLAN 10对应的端口上PC2的MAC只出现在VLAN 20的端口上。这意味着两台PC在二层眼里完全处于不同世界交换机的转发数据库已经把两边隔离开了。这里我多说一句ping不通也要会看提示。如果提示是Destination host unreachable说明源设备根本找不到出去的路径多半是本机网关没配如果提示Request timed out说明报文发出去了但对端没有响应要往交换机、对端设备方向排查。后面排查环节还会细讲。4. 跨交换机扩展Trunk链路配置4.1 两台交换机之间为什么必须走Trunk如果只有单台交换机access端口就能解决所有问题。但真实网络中一台交换机不可能把所有人接完必然有汇聚层、接入层多级交换。这次实验里PC1在LSW1上PC3在LSW2上两个设备都属于VLAN 10我希望它们能互通怎么办有人会想两台交换机之间用网线直连不就行了吗问题是连接两台交换机的那个端口如果设成access VLAN 10那么VLAN 20的流量走不过去如果设成access VLAN 20VLAN 10又过不去。接两根线各跑一个VLAN表面可以但接口数量消耗大也不利于以后扩容。Trunk的出现就是为了解决这个痛点。一个trunk端口上可以同时承载VLAN 10、VLAN 20以及以后更多的VLAN靠802.1Q标签来区分不同VLAN的流量。就像一条高速公路上面跑不同目的地的车车牌就是VLAN标签。4.2 Trunk配置与PVID概念在LSW1和LSW2的互联端口上我分别使用0/0/24口配置如下LSW1interface gigabitethernet0/0/24 port link-type trunk port trunk allow-pass vlan 10 20 quitLSW2interface gigabitethernet0/0/24 port link-type trunk port trunk allow-pass vlan 10 20 quit这段配置里port link-type trunk把端口切换成trunk模式allow-pass指定允许哪些VLAN走这条链路。注意不同厂商默认行为可能不一样。有些设备trunk默认放行所有VLAN有些则只放行VLAN 1。为了保险我每次都会显式写上允许列表不让它靠默认值过日子。有设备还可能有VLAN封装类型的概念比如早期设备默认trunk封装可能是其他格式不是802.1Q。现代设备基本不需要手动指定但老设备或者某些模拟器版本里还是要确认一下。如果两端封装不一致trunk端口的协议状态就不会up。排查的时候用类似display interface的命令看端口信息里面会出现trunk封装状态。再来说PVID。trunk端口默认PVID是VLAN 1它决定的是收到“无标签帧”时归到哪个VLAN。比如一个trunk端口上收到了一个没有打标签的帧交换机会把它当作PVID对应的VLAN来处理。如果两端PVID不一致无标签帧的归属就会出现错乱导致数据跑错VLAN。实验里我把两端PVID都保持默认网络上不要乱改。4.3 常见中继不畅原因封装、允许列表、Native VLAN跨交换机VLAN通信不通十有八九出在这几个地方问题类型现象排查思路trunk封装不一致端口协议状态down或显示封装错误两端都改成802.1Q允许列表不一致部分VLAN能通部分超时对比两端的allow-pass列表Native VLAN不匹配无标签帧出现在错误的VLAN里统一两端PVID物理链路异常端口一直是down检查连线、端口shutdown状态我在一个模拟项目里踩过很典型的坑LSW1与LSW2之间的物理线接好了用display port vlan看两边端口也都显示trunk但PC1 ping PC3就是不通。最后才发现LSW2上有个接口是LSW1连过来的但我在LSW2上配置时输错了接口号把trunk配在了隔壁闲置端口上。看起来都配了实际链路根本没走trunk。还有一个经验是trunk端口不要手动把PVID改成其他VLAN除非你很清楚自己在做什么。一旦两端PVID不相同本来应该走VLAN 10的无标签帧被归到VLAN 20业务静默中断这种问题最难查。5. 让VLAN间互通VLAN间路由实操5.1 二层VLAN规划完了业务还是不通完成上面步骤后同一个VLAN跨交换机可以通了。PC1能ping通PC3PC2能ping通PC4。但是PC1VLAN 10想访问PC4VLAN 20的共享打印机照样不通。原因很简单VLAN隔离的是二层广播域不同VLAN是不同网段二层交换机不负责也不允许跨VLAN转发。想要跨VLAN通信必须有三层路由能力。这就像同一个小区里不同楼道之间是分开的要去别的楼道得从小区大门网关出去绕一圈路由而不是直接在楼道内穿墙。所以在网络设计里每个VLAN都要有一个网关地址。PC的IP配置里已经写了网关192.168.10.254、192.168.20.254但光写了IP还不行交换机或路由器上必须真实存在这个三层接口。5.2 单臂路由一根线跑多个网段最经典的VLAN间路由方案是单臂路由。思路是把路由器的一个物理接口通过子接口的方式拆成多个逻辑接口每个子接口对应一个VLAN并且都打上对应的802.1Q标签。拓扑调整一下路由器用0/0/0口连接交换机的一个trunk口。在路由器上配置interface gigabitethernet0/0/0.10 encapsulation dot1q vlan 10 ip address 192.168.10.254 255.255.255.0 quit interface gigabitethernet0/0/0.20 encapsulation dot1q vlan 20 ip address 192.168.20.254 255.255.255.0 quitencapsulation dot1q vlan 10这行非常关键。它告诉路由器这个子接口处理的是VLAN 10的带标签帧。收到VLAN 10的帧路由器剥掉标签后按IP路由处理要发往VLAN 10的帧路由器会打上VLAN 10的标签从物理口送出去。同时交换机连接路由器的端口必须改成trunk允许VLAN 10和20通过。不这么做带标签的帧到达交换机端口就被丢弃了。单臂路由适合实验和流量小的场景。所有VLAN间流量都汇聚在一个物理口上带宽受限流量一高就容易卡。真实生产环境里三层交换机才是主流。5.3 三层交换机的SVI接口更常用的方案三层交换机的做法相当于把路由功能集成到了交换机内部。它不需要外部路由器也不需要子接口直接在交换机上给VLAN创建三层接口。这个虚拟三层接口叫VLANIF或者SVI。在模拟实验的交换机LSW1上配置interface vlanif 10 ip address 192.168.10.254 255.255.255.0 quit interface vlanif 20 ip address 192.168.20.254 255.255.255.0 quit创建了VLANIF 10和20之后这台交换机就同时拥有192.168.10.254和192.168.20.254两个三层地址。PC1的网关是192.168.10.254PC4的网关是192.168.20.254当PC1想访问PC4时PC1发现目标192.168.20.2不在自己网段把数据帧发给网关192.168.10.254交换机收到帧目标MAC是网关于是交给三层转发流程查路由表192.168.20.0/24是直连网段走VLANIF 20交换机把帧从VLAN 10转到VLAN 20发给PC4整个过程在交换机内部硬件转发速度比外部路由器快得多。做这个实验时ISW1和ISW2都需要支持三层功能实际网络工程中一般用三层交换机做核心层设备VLANIF基本是标配。5.4 路由表确认别让回程路由掉链子配完VLANIF之后一定不要急着去ping先用命令看路由表display ip routing-table正常会看到类似这样的直连路由192.168.10.0/24通过VLANIF 10192.168.20.0/24通过VLANIF 20在静态环境里这两条是核心。只要存在网关就能正确转发两个VLAN之间的流量。如果这里只看到其中一条说明另一个VLANIF没有配置或没有启用PC自然不通。还要理解回包路径。PC1访问PC4PC4收到请求后发现PC1不在本网段也会把回包发给自己的网关192.168.20.254。因为PC4的网关也是同一台三层交换机回包会正确回到PC1。如果用了多台路由器做跨网段转发每一跳都要检查路由表和回程路由漏掉一环表现就是“能出去但回不来”。网上很多人ping不通半天查不出原因就是在回程路由上栽了跟头。6. 常见问题与排查技巧实录6.1 ping不通的排查顺序不要乱猜VLAN配置的故障90%集中在几个固定位置。我自己排查的时候基本按固定顺序走不凭感觉跳来跳去看物理层接口是否up网线是否插好设备电源是否正常看二层配置端口类型、PVID、trunk允许列表、Native VLAN是否一致看终端IPIP、子网掩码、网关是否在同一网段网关有没有写错看三层接口VLANIF或子接口是否存在且启用了ip address看路由表有没有到目标网段的直连或静态路由看策略有没有ACL、防火墙规则拦截有一次我在调试某跨交换机实验PC1 ping PC3超时。第一反应是trunk配置有问题查来查去没问题最后才发现PC1的IP填成了192.168.10.200子网掩码却写成了255.255.255.0但网关配的是192.168.10.1根本不在自己网段内系统就把所有流量按本网段处理直接走二层出接口压根没找网关。终端配置错误比交换机配置错误更容易被忽略所以一定要按顺序查。6.2 VLAN表不匹配和端口没有UP的典型案例我再讲一个真实的排查案例。实验环境里PC1在LSW1的VLAN 10PC3在LSW2的VLAN 10两者不通。我用display vlan看了一下两台交换机都有VLAN 10。用display port vlan看互联口也确实是trunk并且允许了VLAN 10。那问题在哪我最后检查物理连接才发现LSW1的0/0/24插在了LSW2的0/0/23上而我在LSW2上配置trunk的是0/0/24。物理线路和逻辑配置错位。把0/0/23也切成trunk后PC1立刻能ping通PC3。另外模拟环境还有一个常见坑就是两台交换机之间用了错误线缆类型。有些模拟器里分直通线和交叉线选错的话端口不会up真机环境则要检查光模块、电口速率协商或者端口是不是被手动shutdown了。遇到VLAN跨交换机不通先做三步display interface brief display port vlan display vlan依次确认物理、端口类型、全局VLAN表。这三步走完大多数问题都能定位到大概方向。6.3 快速验证命令清单和实测心得整理一下我平时用得最多的验证命令命令作用display vlan查看全局VLAN列表和端口成员display port vlan查看接口模式、PVID、允许列表display interface brief查看端口状态是否updisplay mac-address查看MAC地址学习到哪个VLAN和端口display ip routing-table查看三层路由表ping / ping -a测试连通性可指定源地址要特别推荐一个习惯在PC上ping的时候用源地址ping。有的系统默认使用本机主IP如果你一台PC有多个IP可能走的路径和你预期的完全不一样。用源地址ping网关和ping目标IP能快速判断出回包路径是否正确。我自己的习惯是每完成一步就验证一步。先创建VLAN看display vlan再划access端口看display port vlan再配trunk立刻用PC1 ping PC3。不要等所有配置都敲完再一起测。问题范围越小定位越快。很多初学者喜欢一口气把全部命令敲完等报错时根本不知道从哪查起。还有一个非常实用的防呆手段做实验前把IP规划表画好每个PC的IP、掩码、网关、VLAN、接入端口都列成表贴在屏幕旁边。这个习惯看着简单但能省掉一半以上低级错误。我见过有人在模拟器里配了一个多小时最后发现是规划表上IP子网掩码就写错了怎么调都不通。6.4 别忘了保存配置和备份实验完成VLAN通了路由通了看起来完美收工。但最后一步很多人忘记做保存配置。save不保存设备重启后配置全部失踪几个小时的努力清零。真实设备也一样甚至更麻烦很多线上设备故障就是因为调试完没保存重启后回到旧配置业务直接掉线。保存时如果系统提示确认文件名直接确认就行。保存之后最好再把配置文件导出一份到本地电脑或用display current-configuration把当前配置复制到文档里留底。给VLAN命名这件事我再啰嗦一次。初期实验只有两三个VLAN随便叫无所谓。等你在生产环境维护几十个VLAN看到满屏vlan100、vlan200想定位业务都费劲。用业务名命名不仅方便自己后期交接给同事也能少被问无数遍。最后再多说一句我在实际做这个实验时最大的体会是VLAN配置并不难难的是每一步都清楚自己在做什么。学会看表、按顺序查、每次只改一个变量远比背诵一堆命令更管用。以后不管遇到单臂路由、三层交换、还是更复杂的VLAN间策略底层思路都是同一个先把二层隔离做干净再把三层路由打通最后用验证命令确认每个环节对得上。