1. 实验背景:为什么两台交换机之间的VLAN配置值得单独做一次实验
很多初学者第一次接触交换机,都是从单台设备划分VLAN开始的。给几个端口划到VLAN 10,几个端口划到VLAN 20,同一VLAN内的主机能互通,不同VLAN之间默认隔离——这个逻辑在单台交换机上非常直观,一两条命令就能验证。但一旦把场景扩展到两台交换机,事情就开始变得微妙了:VLAN信息是每台交换机本地的概念,左边的交换机知道VLAN 10是什么,右边的交换机凭什么也认VLAN 10?两台设备之间的端口该怎么配,才能让同一VLAN的主机跨设备通信?
这正是实验七的核心价值所在。它把"VLAN是二层广播域隔离手段"这个理论概念,落到了一个必须处理实际链路协商的场景里。你可以把每台交换机想象成一个独立的社区,VLAN就是社区里不同楼栋的门禁闸机——单台交换机时,门禁系统是统一管理的;两台交换机互联后,两个社区之间必须有约定,否则A社区的"10号楼住户"走到B社区门口,保安根本不知道这人是该放行还是该拦住。
(image ignored)
从计算机网络课程的知识体系来看,这个实验处在"数据链路层——交换机工作原理——VLAN机制"这条线上,是后续学习三层交换、VLAN间路由、子接口、ACL的基础。很多教材里会用一页篇幅讲IEEE 802.1Q的帧格式,告诉你Tagged帧和Untagged帧的区别,但只有亲手在两台交换机上配完Trunk口,抓包看到带VLAN Tag的以太网帧在链路里跑,你才会真正理解那个4字节Tag存在的意义。
所以这个实验适合谁?正在上计算机网络实验课的学生、准备考取网络工程师认证的考生、刚入行需要快速上手交换机配置的运维新人。它不像企业级组网方案那样复杂,但它是所有复杂二层网络设计的起点。我甚至建议已经工作的人把这篇当作快速回顾——很多线上故障排查到最后,根源就是当年实验课没搞透的那点Trunk与Access的边界问题。
2. 实验环境与拓扑规划:用两台交换机之前,先把这张图画明白
实验指导书里给出的通常是双交换机加四台PC的结构,但很多同学上来就急着敲命令,拓扑都不画,结果配完了发现PC之间Ping不通,也不知道该查哪一边。做网络实验,第一步永远是画图、标IP、标接口,这一步花不了五分钟,却能省下后面半小时的排查时间。
2.1 标准实验拓扑与关键参数
推荐使用如下拓扑,这也是绝大多数指导书默认的结构:
PC1 --- [SW1] --- [SW2] --- PC3 PC2 --- [SW1] [SW2] --- PC4- SW1与SW2之间用一条直连线互联,这条链路就是实验的核心——Trunk链路。
- 四台PC分别连接SW1和SW2的普通端口。
参数规划建议如下:
| 设备 | 接口 | 所属VLAN | IP地址 |
|---|---|---|---|
| PC1 | SW1的G0/0/1 | VLAN 10 | 192.168.10.1/24 |
| PC2 | SW1的G0/0/2 | VLAN 20 | 192.168.20.1/24 |
| PC3 | SW2的G0/0/1 | VLAN 10 | 192.168.10.2/24 |
| PC4 | SW2的G0/0/2 | VLAN 20 | 192.168.20.2/24 |
| SW1与SW2互联 | SW1的G0/0/24、SW2的G0/0/24 | Trunk | 不配置IP |
这个规划里最容易被忽视的是IP网段的划分:VLAN 10和VLAN 20的PC必须使用不同的网段。有些同学会偷懒全配成192.168.1.x,觉得只要VLAN不同就能隔离,等做VLAN间路由实验时才发现地址规划一塌糊涂。记住,VLAN的隔离是二层隔离,IP网段是三层地址规划,两者要对应好,否则后面要推翻重来。
2.2 交换机选型与准备工作的三个细节
如果实验室用的是华为eNSP模拟器,那设备选型上直接用S5700系列即可,模拟器里默认就有这个型号。如果是真机操作,可能是华为S5700系列、华三S5130系列,或者思科2960系列。不同厂商的命令语法有差异,但核心逻辑完全一致,我会以华为命令为主,在关键位置补充思科的对照写法,方便不同环境的学习者参考。
准备工作有三个容易忽略的细节,我逐一说明。
第一个是恢复交换机出厂配置。上一组同学做完实验后,交换机里可能残留了VLAN配置、端口配置甚至管理IP。千万别说"看着能用就直接用",VLAN列表里残留的旧VLAN会让你的验证结果变得莫名其妙。华为设备上重置命令是reset saved-configuration然后重启,或者直接factory-configuration reset,思科设备则是write erase加reload。每次实验前花一分钟做这个动作,能避免99%的"灵异现象"。
第二个是Console线连接与终端参数。真机操作时,Console线连上电脑的COM口后,用SecureCRT或Xshell建立串口会话,波特率9600,8位数据位、1位停止位、无校验、无流控。这些参数缺一不可,很多同学连上后屏幕全是乱码,十有八九是波特率选错了。
第三个是给PC配置静态IP。模拟器里双击PC图标就能配置,真机实验则可能是用笔记本直接连交换机。有一点要特别注意:如果笔记本开了无线网卡,一定要禁用,否则路由表会混乱,Ping测试的结果不可信。
3. 交换机基础配置:创建VLAN、划分端口,这一步决定后面所有验证的成败
很多人觉得这步简单,无非就是几条命令。但恰恰是这步,最能看出一个人对VLAN工作原理的理解深度。我问一个很基础的问题:当你把某个Access端口划分到VLAN 10之后,从这台PC发出来的数据帧,在交换机内部处理时,是带着VLAN标签的吗?
答案是不带。Access端口的行为逻辑是:收到Untagged帧,打上该端口PVID对应的VLAN Tag;发送帧时,剥离Tag,以Untagged形式送给PC。所以PC完全感知不到VLAN的存在,整个VLAN划分过程对终端设备是透明的。理解了这个,你才能理解后面对Trunk配置时,为什么PVID和允许通过的VLAN列表是两个独立的概念。
3.1 创建VLAN的两种方式及推荐写法
华为设备上创建VLAN,有两种方式:
# 方式一:逐个创建 system-view vlan 10 quit vlan 20 quit# 方式二:批量创建(推荐,效率更高) system-view vlan batch 10 20方式二的优势在实验场景里还不明显,但如果你要创建一批连续VLAN,比如VLAN 100到VLAN 120,vlan batch 100 to 120一条命令就搞定了。在真实网络改造中,这种批量创建能节省大量时间。我见过有些网工还在用方式一一条条敲,纯属跟自己过不去。
创建完VLAN后,用display vlan查看一下,确认两个VLAN的状态是Active。这里有个小细节:华为交换机创建VLAN后,如果VLAN里没有加入任何端口,它不会自动消失,但也不参与任何数据转发。所以你看到"VLAN 10 Active"并不代表配置完成,还要继续往里面加入端口。
3.2 把端口加入VLAN:Access模式的完整配置
接下来进入每台交换机,把连接PC的端口模式改成Access,并加入对应VLAN。以SW1为例:
system-view interface GigabitEthernet 0/0/1 port link-type access port default vlan 10 quit interface GigabitEthernet 0/0/2 port link-type access port default vlan 20 quitSW2上做同样操作,只是G0/0/1加VLAN 10、G0/0/2加VLAN 20。
这里我要特别强调一个初学者反复踩的坑:端口必须先改成Access模式,再设默认VLAN。如果顺序反了,比如先把port default vlan 10敲了,再改port link-type access,华为设备会报错或产生不可预期的行为。原因是端口在默认的Hybrid模式下,处理VLAN的逻辑和Access不同。同样的坑在思科上不存在,因为思科的端口默认就是Access模式,但这不代表你可以在华为设备上乱来。
配置完成后,用display port vlan查看端口和VLAN的对应关系。输出会显示每个端口的Port Type、PVID和允许通过的VLAN列表。检查无误后,先做一次单交换机内的连通性测试——PC1 ping PC2,此时应该不通,因为它们在不同VLAN且Cloud层不做任何路由;但你可以临时把PC1和PC2的IP配到同一网段再测,会发现依然不通,这正是VLAN隔离在起作用。这个验证能让你直观感受到:VLAN的隔离与IP网段无关,它是二层广播域的隔离。
4. 跨交换机通信的核心:Trunk链路配置与原理拆解
现在到了整个实验最关键的部分。SW1上面的VLAN 10想跨过交换机间的链路与SW2上的VLAN 10通信,这条链路上跑的数据帧必须是带Tag的——否则SW2收到一个没有VLAN标识的帧,根本不知道该放到哪个VLAN里去处理。而Trunk链路干的事,就是让交换机之间的这条物理链路成为一条"多VLAN承载管道"。
4.1 为什么Access口不能用于交换机互联
我们先从反面理解。如果交换机互联端口也设成Access,会出现什么情况?
假设SW1的G0/0/24设成Access且PVID为10,SW2的G0/0/24设成Access且PVID为10。那么从SW1内部转发的、带着VLAN 10 Tag的帧到了G0/0/24,由于Access口发帧要剥离Tag,这个帧会变成Untagged帧送给SW2;SW2的G0/0/24收到后,以PVID 10打上Tag,进入VLAN 10。听起来好像能通?
但你别忘了,这条链路同时在承载VLAN 20的流量。VLAN 20的帧到了SW1的G0/0/24,同样被剥掉Tag变成Untagged,发给SW2后却被SW2打上了PVID 10的Tag,直接跑到了VLAN 10去。这完全是灾难。所以Access模式只能承载一个VLAN,想要一条链路承载多个VLAN的流量,必须用Trunk(或思科的Dot1q封装中继)。
这也解释了一个常见误区:Trunk不是用来"放行所有VLAN"的,而是用来承载"需要跨设备通信的那些VLAN"的。它需要有明确的允许列表。
4.2 华为Trunk配置命令与PVID的精确定义
华为设备上的Trunk配置如下,SW1和SW2的操作完全对称:
system-view interface GigabitEthernet 0/0/24 port link-type trunk port trunk allow-pass vlan 10 20 quit这三条命令缺一不可。第一条把端口类型设为Trunk,第二条指定链路承载哪些VLAN的流量。注意,华为的Trunk端口默认允许VLAN 1(也就是默认VLAN)通过,默认PVID是1。如果实验中的VLAN就是10和20,那必须显式放行它们;如果不放行,VLAN 10和20的帧到了这个端口会被直接丢弃。
这里引入今天最重要的一个概念——PVID的收发不对称逻辑:
- Trunk口收到一个Untagged帧时,会打上PVID对应的Tag,然后查VLAN转发表进行转发。
- Trunk口发出帧时,如果该帧的VLAN ID等于PVID,则会剥掉Tag,以Untagged形式发出;如果不等,则保留Tag发出。
所以,如果两台交换机互联的Trunk口PVID不一致,比如SW1的PVID是1,SW2的PVID是10,那么从SW1发出的VLAN 1的Untagged帧到了SW2会被当成VLAN 10来处理,直接导致链路错乱。务必保证两端Trunk口的PVID一致,默认都是1就不需要额外改,但如果你有特殊需求改了其中的PVID,另一台必须同步修改。
思科设备的命令做一个对照参考:
interface GigabitEthernet0/1 switchport mode trunk switchport trunk allowed vlan add 10,20华为命令里的allow-pass vlan对应思科的allowed vlan,逻辑一致,但默认放行长路思科是只放行VLAN 1,而华为是放行所有VLAN。两个厂商对Trunk口的出厂默认策略完全不同,这个差异在跨厂商设备对接时最坑人。
4.3 配置Trunk后的两分钟自检
配完Trunk别急着跑去点PC的Ping命令,先在交换机上做两件事:
第一,display port vlan查看端口信息,确认G0/0/24的类型是Trunk,PVID是1,VLAN列表里有10和20。
第二,也是很多人不知道的——display interface GigabitEthernet 0/0/24查看链路状态。重点关注物理状态是不是UP,如果显示DOWN,那就是物理层问题,查线缆、查对端设备是否开机。
(image ignored)
第三,如果模拟器里做完上一步,发现接口还是DOWN,那十有八九是模拟器的端口没启动或连接线没连好。在eNSP里,你可以直接点击线缆查看两端连接的端口号是否匹配,这是模拟器环境里最常见的问题,没有之一。
5. 连通性验证与故障排查:Ping通不够,还要会看现象背后的原因
配置到这里,理论上是全通了。但实验课总有翻车的时候。下面我按"验证步骤"和"故障排查"两条线,把最常遇到的场景都过一遍。
5.1 分层次验证:单交换机与跨交换机的测试用例
推荐按照下面的顺序测试,每走一步都能精确定位问题出在哪一层:
测试用例一:PC1 ping PC3(同VLAN跨交换机)
预期结果:通。
这条测试通过,说明Trunk链路工作正常、VLAN 10的帧能正确跨设备转发。
测试用例二:PC2 ping PC4(同VLAN跨交换机)
预期结果:通。
这条测试通过,说明VLAN 20的帧也没问题,Trunk的允许列表没有漏掉VLAN 20。
测试用例三:PC1 ping PC2(不同VLAN同交换机)
预期结果:不通。
如果这条居然通了,那是严重错误,说明端口配置有误,可能把两个口划到了同一个VLAN。
测试用例四:PC1 ping PC4(不同VLAN跨交换机)
预期结果:不通。
如果这条通了,说明Trunk链路把VLAN 10和VLAN 20的广播域错误地合并了,最常见原因是PVID配置不一致。
5.2 从"Ping不通"到根因定位:一套完整的排查链路
我见过太多同学Ping不通就举手喊老师,老师过来看了一眼端口就找到问题了,但你自己却完全没思路。下面我把排查思路整理成一个可复现的链路,按顺序走一遍,超过80%的问题都能自己定位。
第一步:查物理层。display interface看互联端口是否UP。模拟器里物理层DOWN通常是线缆没连对;真机里则是线缆或对端电源问题。
第二步:查端口模式。在SW1上执行display port vlan,确认G0/0/24是Trunk模式,且PVID正确。再在SW2上执行同样的命令,对照两端是否一致。两端模式不对称(一边Trunk一边Access)是最常见的配置错误。
第三步:查VLAN允许列表。在Trunk口上执行display port vlan,确认VLAN 10和20都在允许列表里。华为默认Trunk口放行所有VLAN,但如果之前有人用了undo port trunk allow-pass vlan之类的命令清理过,列表可能就剩VLAN 1了。
第四步:抓包确认Tag。如果你在模拟器里,可以在SW1的G0/0/24和SW2的G0/0/24之间串联一个集线器或直接在该链路上开启抓包,用WireShark抓到PC1发给PC3的ICMP报文,检查以太网帧头里是否带VLAN Tag,Tag的VLAN ID是不是10。能抓到带正确Tag的帧,说明交换机处理链路没问题,问题大概率在对端接收处理。
第五步:查MAC地址表。在SW2上执行display mac-address vlan 10,看看PC3的MAC地址是否出现在VLAN 10的转发表里。如果PC3一直在发ARP请求但SW2根本没有学习到它的MAC,说明帧根本没到达SW2或到达后被丢弃了。这个命令能把排查范围进一步缩小。
5.3 一个极易混淆的概念:Trunk可以承载但没有路由
有同学在做测试用例三、四时,发现"同VLAN能通、跨VLAN不通"后,会尝试把PC的网关配到交换机上,或者给交换机配一个VLANIF地址,然后问:"为什么配了网关还是不通?"
注意,VLAN间的路由是三层功能,需要三层设备介入。你在实验七里用的是二层交换机,S5700虽然是三层交换机,但默认没有开启VLAN间路由功能,也没有任何路由条目告诉它192.168.10.0/24网段的包要怎么送去192.168.20.0/24。Trunk链路只负责承载被允许通过的VLAN流量,它不负责也负责不了跨VLAN的包转发。如果你现在就想让跨VLAN能通,那需要配VLANIF或单臂路由,这是实验八或实验九的内容,这里先不要越级。
6. 我踩过的坑与真实经验:那些实验指导书不会写但你必须知道的事
这部分是我最想分享的。实验指导书只会写"按步骤配置就能成功",但实际情况往往充满意外。我把自己和带过的学生踩过的坑汇总成清单,每一条都对应过一个真实的翻车现场。
6.1 模拟器里的"反直觉"现象
如果你用的是eNSP,我第一个要提醒的就是关闭所有PC的防火墙。模拟器里Windows镜像自带防火墙,有时会拦截ICMP报文,导致你交换机配置全对但Ping测试依然不通,白白浪费时间排查网络配置。这个坑看上去很蠢,但真实发生频率极高。
第二个模拟器特有的坑是华为官方版本的eNSP对部分电脑的兼容性问题。如果某台交换机启动后接口始终是DOWN,重启设备、重新连线都没用,试着降低模拟器的硬件资源占用,或者换用5.3版本,往往能解决。
第三个是PC的IP配置后没有生效。在eNSP的命令行窗口里给PC配IP,偶尔会遇到配置完但ipconfig看不到的情况,重启PC节点通常能解决。
6.2 真机操作中"电信级"经验的三个细节
真机上做实验,有几个模拟器永远教不会你的细节。
第一个是Console口的线序与接口損坏问题。实验室的Console线长期插拔容易松动,如果连上终端后没有任何显示,动一动线缆或换一个USB转串口头再多试一次。不要一上来就怀疑交换机坏了。
第二个是交换机型号的差异性。同样是华为,S5700系列和S2700系列的命令略有差异,S2700的部分型号不支持Trunk口放行指定VLAN的命令,只能放行所有VLAN。做实验前先用display version确认设备型号,再决定要不要按指导书的命令敲。
第三个是关于配置保存。模拟器里默认关闭设备后配置就丢了,真机也一样。如果你辛辛苦苦配完,想在下一节课继续用,就必须执行:
save华为设备会提示确认,输入y回车即可。保存后可以用display saved-configuration查看已保存的配置内容。千万别高估自己在断电前的记忆力,我见过太多人配完不保存,第二天全部清零重来。
6.3 排查思路比记住命令更重要
最后说一个观念层面的东西。每次实验课我都会跟学生强调:命令敲不出来可以查、可以问,但排查思路必须是你自己的。你不需要背下每一家厂商的每一条命令,但你要知道"物理层如果正常,应该查什么""数据链路层如果正常,应该抓什么包""帧丢了应该看哪个转发表"。这些分析路径不依赖具体设备,是通用的网络排障方法论。
所以当你再遇到"两台交换机VLAN配置后无法通信"时,心里应该有一个清晰的场景图:源PC发出Untagged帧,到达Access口被打上Tag,在交换机内部查表转发,到Trunk口以Tagged形式送出,对端Trunk口接收,继续查表,从Access口剥离Tag送达目的PC。链路里任何一个环节出错,都能对应到相应的命令去排查。这才是实验七真正想训练你的能力。
7. 扩展思考:在实验基础上多走一步,让配置活起来
实验做完了,验证也通过了,但到这里就收手,我觉得有点亏。这个实验背后还能延伸出好几个值得动手验证的点,每一个都能加深对VLAN和Trunk的理解。
7.1 尝试抓包,看看Tagged帧长什么样
如果你在eNSP里,把SW1的G0/0/24接口作为抓包点,然后让PC1去ping PC3,你会看到ICMP报文外层是一个带VLAN Tag的以太网帧。802.1Q的Tag一共4字节,前2字节是TPID(固定为0x8100),后2字节是TCI,其中包含12比特的VLAN ID(0~4095)。看到抓包结果里VLAN字段等于10,你会对"VLAN Tag的封装"产生极强的直观认知,这是只看教材永远达不到的效果。
(image ignored)
7.2 把Trunk的PVID改成非默认值,验证收发不对称
你可以在SW1上把Trunk口的PVID改成10,然后在SW2上保持不变,做一次PC1 ping PC3的测试。大概率会失败。再用display interface查看两端Trunk状态的差异,然后手动把两端的PVID改成一致,测试恢复正常。这个操作的目的是让你真正体会PVID在Untagged帧接收和Tagged帧发送时的双重作用。很多老网工在跨厂商设备对接时出问题,根源就是对PVID机制理解不透。
7.3 从VLAN到VLAN间路由:为下一步实验埋个伏笔
如果你学有余力,可以在当前实验拓扑上增加一台路由器,在路由器上创建两个子接口(或使用交换机的VLANIF接口),分别配置192.168.10.254/24和192.168.20.254/24作为两个VLAN的网关,然后给PC设置对应的网关地址,测试跨VLAN通信。原理上就是"单臂路由"或"三层交换",这是从二层思维跨入三层思维的关键一步,也能反过来让你更深刻地理解为什么实验七里的Trunk只能隔离、不能路由。
我这里不展开具体的单臂路由配置,因为那是下一个实验的主题;但我想提醒的是:学网络要敢于在基础实验上自己给自己加戏。把实验七的Trunk链路理解透了,再做VLAN间路由、再做ACL过滤,每一步都建立在前一步的基础上,整个知识体系才有递进感。
8. 经验收尾:关于实验报告的几点良心建议
实验做完,最后还差一份实验报告。我不替大家代笔,但有些心得可以分享一下,说不定能让你的报告少一点流水账的味道。
写实验报告时,很多人习惯把命令和输出结果原封不动粘上去,再凑几个"实验总结"的字数。但真正有价值的报告,应该包含你踩过的坑和对应的排查过程。比如你第一次配置完后PC1 ping PC3不通,你是怎么看端口状态的?怎么查VLAN列表的?怎么定位到PVID配置不一致的?把这个思路完整写下来,比任何"通过本次实验我深刻认识到了VLAN的重要性"这种空话都更有说服力。
另外,报告里最好画一张最终配置的汇总表,把每台交换机的端口、模式、PVID、允许VLAN、连接对象清晰地列出来。这张表不仅方便老师快速判断你是否真的理解了实验,也是你日后复习时最高效的资料。
如果你是在实验室用真机做的实验,记得做完后把配置保存、把Console线归位、把设备恢复出厂或至少清掉自己配的东西,给下一组同学留一个干净的环境。这个习惯不只在实验室有用,在职场上,小到测试设备、大到生产交换机,"人走场清"都是基本素养。