做路由交换实验,VLAN(虚拟局域网)几乎是所有人绕不过去的第一道坎。这个实验看着简单,就是把一台交换机的端口划分到不同的逻辑网络里,但真正操作下来你会发现,广播域分割、Access链路、Trunk链路、802.1Q标签、VLAN间路由这些概念全挤在一起,任何一个细节没搞懂,就会出现“配置看起来都对但就是ping不通”的尴尬局面。这篇内容想聊聊VLAN实验怎么做才算做透,适合理清二层交换原理的网络学习者、准备网络认证的考生,也适合已经入行但想回头补一补底层功底的运维朋友。
1. 实验设计思路与核心原理拆解
1.1 为什么要用VLAN做路由交换实验
VLAN的全称是Virtual Local Area Network,虚拟局域网。它最核心的存在意义是分割广播域。一台没有做任何划分的交换机,默认所有端口都在同一个二层广播域里,任何一个端口发出的广播帧都会被泛洪到其他所有端口。设备数量少的时候还能忍,一旦网络里接了几十上百台设备,ARP广播、NetBIOS广播、各类发现协议产生的广播流量就会把链路带宽和终端CPU消耗掉一大部分,网络反应会明显变慢。
更麻烦的是安全隔离。同一个广播域里,任何两台设备从二层看都是“可见”的,虽然不能直接偷看到数据内容,但抓包、ARP欺骗、二层攻击的暴露面会大很多。把不同用途的设备混在一起,等于一栋楼里所有房间都敞着门,出问题是迟早的事。
VLAN做的事情,相当于在一台物理交换机上虚拟出多台“逻辑交换机”。端口划分到VLAN 10,对外就像在一台独立的交换机上;端口划分到VLAN 20,又像在另一台单独的交换机上。广播只在自己的VLAN里传播,跨VLAN的流量必须经过三层设备转发。这样一来,广播域被缩小,管理上也灵活——员工换座位不需要重新布线,只要把端口改到对应VLAN就行。
在路由交换的完整知识体系里,VLAN还是后面很多高级特性的地基。链路聚合、生成树、VRRP、ACL、QoS策略,很多都建立在这套VLAN机制之上。如果这个实验只是照着文档敲完命令就关掉,后面学再多技术都会觉得浮在空中。
1.2 802.1Q:VLAN跨设备通信的基础
单台交换机内部划分VLAN很容易,交换芯片根据端口和VLAN表就能区分数据该往哪转发。但真实的网络不可能只有一台交换机,两台交换机互联时,接收方怎么知道收到的某个帧属于哪个VLAN?光看传统以太网帧头是看不出来的,必须额外加一个标识。
这个标识就是802.1Q标准做的事情。它会在以太网帧的源MAC地址和类型字段之间,插入一个4字节的Tag。Tag里最重要的部分是12位的VID(VLAN ID),取值范围是0到4095,其中0和4095保留使用,实际可用的VLAN ID范围是1到4094。插入了Tag之后,帧长从传统的1518字节变成1522字节,这在绝大多数现代网络设备上不是问题,但如果你在做一些老旧设备对接或者链路MTU严格限制的极端场景,就需要留意这个字节数变化。
打个比方,普通以太网帧就像没贴房间号的快递包裹,在局域网里只能靠配送员的记忆来送。802.1Q的Tag相当于在包裹上贴了一张带房间号的标签,任何交换机拿到这个包裹,看一眼标签就能决定送到哪个VLAN区域。
理解802.1Q之后,再做抓包实验会有一种“原来如此”的感觉。你会看到在帧到达Trunk链路时,中间确实多出了4个字节,里面清清楚楚写着VID。很多人在实验里死活想不通“为什么Trunk口上抓包能看到VLAN信息,接电脑的口上就看不到”,原因就在这里:Access口发出的是去掉标签的帧,Trunk口发出的是带标签的帧。
1.3 Access与Trunk:两种链路模式到底差在哪
端口模式是VLAN实验里最容易混淆的部分。Access口和Trunk口的核心区别,在于能不能同时承载多个VLAN的数据。
Access口通常用来连接终端设备,比如PC、打印机、服务器网卡。这些设备大部分不识别VLAN标签,所以Access口发出的帧必须去掉标签,也就是untagged。一个Access口只能属于一个VLAN,要么VLAN 10,要么VLAN 20,不能同时属于多个。配置逻辑很简单:改端口模式为Access,再指定所属VLAN。
Trunk口通常用来连接交换机之间,或者交换机到路由器、防火墙等需要承载多个VLAN的链路。Trunk口可以同时放行多个VLAN的帧,并且这些帧在链路上是带标签传输的。配置逻辑一般分两步:把端口模式改为Trunk,再设置允许通过的VLAN列表。
还有一个容易忽略的概念是PVID,也就是端口的默认VLAN ID。Access口的PVID通常就是它所属的VLAN,无法分开。Trunk口则复杂一些,它有一个本征VLAN(Native VLAN)的概念,本征VLAN的帧在Trunk上传输时不带标签,用来兼容一些不支持802.1Q的老设备或者特殊场景。实验中经常出现的坑是,两台交换机Trunk口的PVID配置不一致,结果明明划分了VLAN,却出现VLAN间帧串扰、管理地址失联之类的怪现象。越是基础的配置,越要细心。
2. 实验环境搭建与拓扑设计
2.1 设备与软件选型:模拟器还是真机
做VLAN实验不一定需要整套机柜。我见过很多人在学习阶段被“凑齐真实设备”这件事劝退,其实完全可以用网络模拟器来完成绝大部分验证。模拟器的好处是随便折腾,配置错了删掉重来,成本几乎为零,抓包也特别方便,能直观看到帧结构里的Tag变化。缺点也很明显,模拟器里的链路稳定得不像话,真实环境里的线缆松动、端口协商失败、光纤收发器故障这类问题,在模拟器里完全体会不到。
如果条件允许,建议两手都抓:先用模拟器把配置逻辑和验证方法跑通,再找两台二手交换机搭一个真实环境,哪怕是最入门的二层交换机,只要能支持VLAN和Trunk就行。真实环境里加电、连线、看端口指示灯、通过Console口登录这些操作,本身就是一种经验积累,后面排查问题时会有用。
设备数量上,做单交换机VLAN实验需要一台三层交换机加上两台PC(用真实电脑或者模拟器里的虚拟终端都可以)。做跨交换机实验,需要两台交换机,再加一台路由器和一台三层交换机用来做VLAN间路由对比。如果手头设备有限,先把单交换机的实验做扎实,再逐步加设备,不要一上来就搭一个复杂的多台设备拓扑,出了问题反而难定位。
2.2 拓扑规划与IP地址规划:先把实验地图画清楚
一个标准的VLAN实验拓扑可以这样设计:两台交换机,分别叫SW1和SW2,SW1上接PC-A和PC-B,SW2上接PC-C和PC-D,SW1和SW2之间用一条Trunk链路互联。PC-A和PC-C划分到VLAN 10,PC-B和PC-D划分到VLAN 20。这样既能验证同一台交换机上不同VLAN的隔离效果,也能验证同一VLAN跨交换机通信,还能在后面接路由器或三层交换机做VLAN间路由。
IP地址规划建议直接用表列清楚,不同VLAN使用不同网段。比如VLAN 10的设备都使用192.168.10.0/24网段,VLAN 20的设备都使用192.168.20.0/24网段。网关IP后面要做VLAN间路由实验时再规划,一般VLAN 10网关是192.168.10.254,VLAN 20网关是192.168.20.254。
| 设备 | 所在VLAN | IP地址 | 默认网关(后续实验配置) |
|---|---|---|---|
| PC-A | VLAN 10 | 192.168.10.1/24 | 192.168.10.254 |
| PC-B | VLAN 20 | 192.168.20.1/24 | 192.168.20.254 |
| PC-C | VLAN 10 | 192.168.10.2/24 | 192.168.10.254 |
| PC-D | VLAN 20 | 192.168.20.2/24 | 192.168.20.254 |
这样的划分尽量把“VLAN ID”和“IP网段”对应起来,方便记忆,也符合实际工程的习惯。不要用同一个网段去对应两个不同VLAN,那样实验逻辑会乱,而且在后面的路由实验里很容易迷惑。
2.3 配置前的连通性基线验证:不做这一步后面容易踩坑
很多人在交换机上直接开配VLAN,配完发现ping不通,第一反应是查VLAN配置,查了半天没发现错,最后才意识到是物理链路或者IP配置的问题。这中间浪费的时间,就是省略了基线验证的代价。
基线验证很简单:在还没有创建任何VLAN的时候,也就是所有端口都处于默认VLAN(通常是VLAN 1)状态下,先把所有PC的IP地址配好,然后逐个ping一遍。PC-A应该能ping通PC-B、PC-C、PC-D,因为它们都在同一个二层广播域里。如果这时候就有不通的,优先检查网线、接口状态、IP配置,千万别急着往下走。
这一步相当于工程里的“先点亮链路再做配置”。确认物理层和数据链路层没问题之后,再开始修改VLAN配置,后面排查起来思路就清爽很多。忘掉这个步骤的人,经常会在实验里被“配置错了还是通了”“没配置反而不通了”之类的问题绕进死胡同。
3. 核心实验过程与配置细节
3.1 单交换机VLAN隔离实验:先把基础逻辑跑通
先从最简单的单台交换机开始。操作分成三步:创建VLAN、把端口划入VLAN、验证连通性。
第一步,在交换机上创建VLAN 10和VLAN 20。这个动作相当于在交换机内部生成了两个虚拟网络。第二步,把接PC-A的端口划到VLAN 10,接PC-B的端口划到VLAN 20。第三步,回到PC上用ping做验证。命令的语法在不同厂商设备上略有差异,但逻辑是一致的:
# 这是通用配置逻辑,不同厂商的命令行格式略有差别 vlan 10 vlan 20 interface gigabitethernet 0/0/1 port link-type access port default vlan 10 interface gigabitethernet 0/0/2 port link-type access port default vlan 20验证结果应该是:PC-A和PC-C(如果第四口也划到VLAN 10的话)可以互通,PC-A去ping PC-B不通。不通的原因不是IP层面拒绝,而是PC-A发出的ARP广播请求根本不会被转发到VLAN 20的端口上。交换机在二层只会把广播帧在同一个VLAN内泛洪,不同VLAN之间天然隔离。
这个实验做完,建议顺手用查看命令确认一下端口归属,比如查看VLAN和端口对应关系的命令。很多配置错误都是“以为自己划了,其实端口还在默认VLAN里”。养成配置完必检查的习惯,能在后面的实验里省下大量排查时间。
3.2 跨交换机同VLAN通信实验:Trunk链路是主角
单台交换机上的VLAN隔离验证通过之后,把两台交换机加进来,考验就来了。如果你在SW2上接PC-C和PC-D,但不对SW1和SW2之间的互联链路做任何配置,那么PC-A大概率ping不通PC-C,因为SW1的VLAN 10信息根本没法通过普通Access口传到SW2。
这时候需要Trunk链路登场。互联端口在两台交换机上都要修改为Trunk模式,并且明确允许VLAN 10和VLAN 20通过。注意这里的细节:有些设备的Trunk默认允许所有VLAN通过,图省事的话确实能通,但建议显式地写出允许列表,一方面能帮你理清链路承载范围,另一方面也符合实际项目里的最小权限原则。
# SW1和SW2互联端口均按此思路配置,实际命令以设备型号为准 interface gigabitethernet 0/0/24 port link-type trunk port trunk allow-pass vlan 10 20验证方法很简单:PC-A去ping PC-C应该通,PC-B去ping PC-D应该通;PC-A去ping PC-B还是不通。这就说明同VLAN的数据可以跨交换机正确流转,而不同VLAN的二层隔离在跨交换机场景下依然生效。
如果你用的是模拟器,可以在SW1和SW2之间的Trunk链路上抓包,你会发现VLAN 10的帧和VLAN 20的帧都带着各自的802.1Q标签。而在Access口的抓包里,看不到任何标签。这个对比印象一旦建立起来,再看后面各种网络现象就有依据了。
3.3 广播隔离效果验证:别只信ping通,还要看广播泛洪范围
前面的ping验证能证明联通性,但VLAN对广播域的隔离效果,最好单独做一次验证。最直观的方法是看ARP广播的传播范围。
在PC-A上ping一个不存在的地址,或者直接发起一次ARP请求,然后在PC-B、PC-C、PC-D上观察是否收到这个广播帧。正常情况下,PC-B不应该收到(因为它在VLAN 20),PC-C应该收到(因为和PC-A同在VLAN 10)。如果PC-B也能收到,说明你的VLAN划分或者Trunk配置有问题,广播域的隔离没有生效。
没有抓包条件的时候,也可以看交换机上的MAC地址表变化。终端在发出数据后,交换机会记录源MAC和端口、VLAN的关系。通过观察MAC表条目,你能确定某个VLAN的设备到底从哪个端口进来。这个过程会让你对“二层转发依赖MAC地址表”这件事有更实在的感知。
广播域被VLAN缩小之后,冲突域自然也随之缩小。二层网络里最怕的就是广播风暴,VLAN就是隔离风暴范围的第一道闸门。这个验证步骤虽然简单,却值得认真做一遍,它能回答一个很多人嘴上会背但心里没底的问题:VLAN到底是怎么让网络“变干净”的。
4. VLAN间路由实验
4.1 单臂路由方案:一台路由器打通VLAN间通信
VLAN隔离做好之后,下一个需求很自然就来了:不同VLAN的PC如果就是要互相通信,怎么办?二层解决不了,必须引入三层——路由器。
单臂(Router on a Stick)是一种经典做法。交换机的Trunk口接到路由器的某个物理口上,然后在这个物理口上划分多个子接口,每个子接口绑定一个VLAN,配置对应的网关IP。这样从VLAN 10发过来的带标签数据帧,路由器会根据标签内容交给对应的子接口处理,路由之后再从另一个子接口发回交换机,交换机再把帧转发给VLAN 20里的设备。
配置逻辑大致是:
- 进入路由器物理接口视图,把物理口启用并保持开启状态
- 创建子接口,例如0/0/1.10,在子接口上启用802.1Q封装,关联VLAN 10,配置IP 192.168.10.254/24
- 创建子接口0/0/1.20,关联VLAN 20,配置IP 192.168.20.254/24
一个经常遇到的坑是,子接口默认的ARP广播处理在某些设备上是关闭或受限的。PC希望通过网关MAC地址来转发跨VLAN的数据,但如果路由器子接口不回应ARP请求,第一次ping就会失败。遇到了也不用慌,在子接口上打开ARP广播功能再试即可。
子接口配完后,PC的默认网关要指向对应VLAN的子接口IP。PC-A的网关是192.168.10.254,PC-B的网关是192.168.20.254,然后从PC-A去ping PC-B,应该能通。整个过程的路径是:PC-A把帧发给网关,路由器剥离VLAN 10标签,查路由表,再打上VLAN 20标签发给交换机,交换机再交给PC-B。
4.2 VLANIF方案:三层交换机的高效玩法
单臂路由能解决问题,但性能瓶颈很明显,所有跨VLAN流量都挤在一条物理链路和路由器上。实际工程里更常用的是三层交换机自带的VLANIF接口。
VLANIF看起来像一个虚拟出的三层接口,但它绑定的是整个VLAN。你只需要在三层交换机上创建VLAN 10和VLAN 20,然后分别为它们配置IP地址。这个IP就是对应VLAN内所有PC的默认网关。设备内部查路由表直接完成转发,不再需要把流量送出去绕一圈。
配置逻辑大致是:
- 创建VLAN 10,建立VLANIF 10,配置IP 192.168.10.254/24
- 创建VLAN 20,建立VLANIF 20,配置IP 192.168.20.254/20
验证时同样把PC网关指向对应的VLANIF IP,PC-A ping PC-B应该通。抓包你会发现,同VLAN内部的通信仍然是二层交换,走的还是MAC地址表;跨VLAN通信才被交给三层转发。这就是常说的“一次路由,多次交换”——同一个数据流只需要路由一次,后续报文直接在二层转发表里命中,速度很快。
4.3 两种方案怎么选:性能与场景对比
单臂路由和VLANIF方案不是二选一的竞争关系,它们对应不同场景。我整理过一个简单的对照思路:
| 对比维度 | 单臂路由 | VLANIF三层交换 |
|---|---|---|
| 所需设备 | 路由器+二层交换机 | 三层交换机 |
| 转发性能 | 取决于路由器CPU,瓶颈明显 | 多为硬件转发,性能更高 |
| 配置复杂度 | 子接口封装步骤多,易出错 | 创建VLANIF并配IP,更简洁 |
| 适用场景 | 实验学习、小型网络、复用已有路由器 | 园区网、企业核心、大中型网络 |
对学习者来说,两个方案都亲手搭一遍,收益很大。单臂路由能帮你理解VLAN标签和子接口的关系,VLANIF能帮你建立“三层网关在交换机内部”的工程直觉。知道两者之间的差额在哪里,后面判断网络设计就更有底气。
5. 常见故障与排查技巧实录
5.1 “配置了VLAN还是全通”是怎么回事
按道理VLAN划分后,不同VLAN应该不通,但现实中经常有人跑来问:“我明明配置了VLAN,为什么PC还是能互相ping通?”
排查这个问题的关键,是检查端口到底有没有真的划到对应VLAN。最常见的低级失误是,VLAN创建了,但端口没有成功加入,所有端口还在默认的VLAN 1里。这种情况下,VLAN 10和VLAN 20都只是“存在”而已,实际流量依然全在同一个广播域里,自然全通。
还有一种情况是交换机上联口接了一个路由口,或者有人在中途接入了家用路由器、无线AP的LAN口,这些设备可能把不同网段桥在一起,导致二层隔离被绕开。网络拓扑一旦出现不该出现的桥接路径,“VLAN不通”反而会成为另一种要排查的故障。
这个现象背后的认知是:VLAN割裂的是二层广播域,如果两台PC的IP还在同一个网段,并且二层确实被隔离,ping应该是失败的。如果成功了,说明要么端口归属没生效,要么拓扑里有额外的二层路径。从配置和拓扑两个方向排查,很快能定位。
5.2 跨交换机ping不通时,按这个顺序排查
跨交换机VLAN实验里最头疼的问题是PC-A能ping通PC-C,但PC-B就死活ping不通PC-D,或者反过来全都不通。我习惯按固定顺序排查,效率比乱试高得多。
第一步看物理层。交换机端口状态是不是up,线缆是不是松动,接口协商速率和双工是不是正常。别看这个问题太初级,实际排障里相当比例的“疑难杂症”最后都栽在物理层。
第二步看端口VLAN归属。用查看命令确认每个终端口到底在哪个VLAN。你打算把PC-B划到VLAN 20,实际可能因为复制配置时忘了改VLAN号,它还在VLAN 10里。
第三步看Trunk状态。互联端口模式是不是Trunk,允许列表里有没有包含要跨交换机通信的VLAN,两端配置是否一致。一个很常见的现象是SW1的Trunk允许列表只放行了VLAN 10,忘了放行VLAN 20,结果就是VLAN 20跨交换机不通,而VLAN 10正常。
第四步看生成树。在某些场景下,Trunk链路所在的端口可能因为生成树计算被阻塞。如果配置正确但链路不通,生成树状态是值得检查的一项。
第五步看网关和ARP。跨VLAN通信场景里,PC如果没有正确配置默认网关,或者网关IP配置到了错误的VLANIF上,都会导致ping失败。在PC上查ARP表,看网关MAC是否解析出来,能快速判断问题出在二层还是三层。
第六步才是抓包。前几步都没发现异常,就该抓包看帧走向了。哪个方向有ARP请求,有没有回应,帧上带的是什么VLAN ID,这些信息能把问题从“猜”变成“看”。
5.3 常用故障速查表与排障心得
把实践中遇到的高频问题整理成一张速查表,排查时能少走很多弯路:
| 故障现象 | 可能原因 | 优先排查方向 |
|---|---|---|
| 同一VLAN跨交换机不通 | Trunk未放行该VLAN | Trunk允许列表、两端配置一致性 |
| 不同VLAN互相能通 | 端口仍在默认VLAN / 有二层桥接路径 | 端口VLAN归属、拓扑检查 |
| 跨VLAN第一次ping不通后续通 | 子接口ARP广播受限 | 子接口ARP广播功能 |
| 配置Trunk后管理地址失联 | 本征VLAN/管理VLAN被改动 | PVID配置、管理接口位置 |
| 时通时不通 | 物理链路不稳定 / 网线接触不良 | 端口up/down记录、CRC错误计数 |
再分享几个排障心得。第一个是固定模板。每一次实验都提前把拓扑、IP、VLAN分配画出来贴在旁边,配置时对照着来,不要凭记忆。第二个是一次只改一个变量。很多学习者排障失败是因为一次改了三条配置,结果问题解决了却不知道是哪条配置解决的,问题没解决也不知道该回退哪个。第三个是画出数据转发路径。心里把PC-A到PC-B的每一跳画出来,每一跳的VLAN标签是什么、MAC地址是多少、在哪里做路由决策,整条链路梳理一遍,问题基本就现形了。
我个人在实际操作里的另一个体会是,做实验不能停留在“能ping通就行”的层面。建议每次实验后,把拓扑图、配置片段、验证结果、踩过的坑整理成自己的排障手册。这个习惯在真实网络维护里特别有用,很多看似新的问题,翻一翻记录就能找到相似的解法。VLAN实验做完之后,再上手ACL、VXLAN、网络虚拟化这些进阶内容时,你会明显感觉底层逻辑是通的。