如果你只是想把VLAN实验在EVE-NG里“敲通”,那链路其实很短:建两台交换机、划两个VLAN、端口一配,ping通就算完事。但我一直觉得,网络实验的价值不在“通”,而在“看清”。同样一条ping命令,你在PC的接入链路上抓包,和在交换机间的Trunk链路上抓包,看到的东西完全是两个世界——一个干干净净没有标签,一个被802.1Q的四字节Tag包裹得明明白白。这篇是EVE-NG流量洞察系列的第二篇,专讲802.1Q VLAN。我会用一套双交换机加单臂路由的拓扑,把同VLAN跨交换机通信和VLAN间路由的标签行为从头到尾抓给你看。不管你是备考网工认证的学生,还是被VLAN标签绕晕的运维新人,这套实测过程都能让你把“Access、Trunk、PVID、Native VLAN”这些概念从纸面落到抓包窗口里。老手也可以直接跳到第5节,那里有几个我实际踩过、也看别人反复踩的坑。
1. 先搭实验床:EVE-NG里的拓扑、镜像与Capture挂载
1.1 为什么挑IOL L2镜像跑VLAN实验
EVE-NG支持好几类节点镜像,做二层交换实验首选IOL L2(IOS on Linux),而不是Dynamips或qemu系列。原因很直接:IOL跑的是思科IOS的Linux移植版,交换特性完整,VLAN、Trunk、STP、RSTP、PortFast这些该有的都有,命令行和真机几乎一致,而且资源占用极低。我试过在一台8GB内存的EVE-NG服务器上同时跑八台IOL L2交换机加几个VPCS,CPU和内存都能压住,启动时间也就十几秒。这对反复调整拓扑、推翻重来的学习场景很重要。
Dynamips跑的是老版本IOS,纯路由器镜像为主,交换功能靠NM-16ESW这种板卡模拟,VLAN能力弱,而且每个节点单独吃CPU,拓扑稍大一点就卡成PPT。qemu类的vIOS和vEOS更贴近真机,但也更重,一台就要1GB以上内存,启动还慢,做纯二层标签观察实验属于杀鸡用牛刀。如果你手头只有qemu镜像,也不是不能用,只是没必要。
一个提醒:IOL镜像需要自己获取并打包,网上有现成的加工教程,核心是给镜像文件加上正确权限(一般是/opt/unetlab/addons/iol/bin目录下,赋755并写wrapper)。如果你在拓扑里把IOL节点拖进来后双击没反应,大概率是权限问题,去EVE-NG的终端里用/opt/unetlab/wrapper -m跑一下镜像,看报错就知道了。这个细节和实验本身无关,但卡住的人非常多,先排查掉。
1.2 双交换机加一台路由器的完整规划
这节实验的拓扑我设计成三个部分:两台二层交换机、一台路由器、四台PC。交换机之间用Trunk连接,路由器单独接在SW1上用Trunk上联,这样一套拓扑能覆盖两个核心场景——同VLAN跨交换机通信,以及VLAN间路由。
具体连线和地址规划如下:
| 设备 | 接口 | 连接对象 | 所属VLAN | IP地址 |
|---|---|---|---|---|
| SW1 | Gi0/0 | PC1 | VLAN 10 | - |
| SW1 | Gi0/1 | PC3 | VLAN 10 | - |
| SW1 | Gi0/2 | PC2 | VLAN 20 | - |
| SW1 | Gi0/3 | PC4 | VLAN 20 | - |
| SW1 | Gi0/4 | R1 Gi0/0 | Trunk | - |
| SW1 | Gi0/5 | SW2 Gi0/4 | Trunk | - |
| SW2 | Gi0/0 | 备用(同VLAN跨交换机扩展) | - | - |
| SW2 | Gi0/1 | 备用 | - | - |
PC的地址我统一放在两张表里,方便后面配置时对照:
| 设备 | 网段 | 网关 | 用途 |
|---|---|---|---|
| PC1 | 192.168.10.10/24 | 192.168.10.1 | VLAN 10内通信测试 |
| PC3 | 192.168.10.20/24 | 192.168.10.1 | 与PC1同VLAN跨交换机 |
| PC2 | 192.168.20.10/24 | 192.168.20.1 | VLAN 20内通信测试 |
| PC4 | 192.168.20.20/24 | 192.168.20.1 | 与PC2同VLAN跨交换机 |
| R1 Gi0/0.10 | 192.168.10.1/24 | - | VLAN 10网关 |
| R1 Gi0/0.20 | 192.168.20.1/24 | - | VLAN 20网关 |
为什么非得加路由器?因为只验证同VLAN跨交换机通信的话,两台交换机加PC就够了,但802.1Q最精华的部分恰恰在“标签的改写”上——帧进了路由器子接口被剥掉标签,路由后再打上另一个VLAN的标签出去。没有三层设备,这部分链路层行为就看不见。所以宁可多启动一个IOL L3镜像,也要把单臂路由这个场景加进来。
1.3 连线时就要把抓包点埋好:EVE-NG Capture的两种入口
EVE-NG里挂抓包有两种方式。第一种是在拓扑编辑界面双击链路,会弹出一个勾选项,给链路的两个端点分别开启Capture;第二种是在拓扑运行界面右键某个节点,选择某个接口再选Capture。我实际用下来,第二种更顺手,因为拓扑跑起来之后临时想抓哪条链路,不用切回编辑模式,直接在节点上操作就行。
这里有个大家容易忽略的细节:一条链路的Capture是分“端”的。比如SW1的Gi0/5连到SW2的Gi0/4,右键SW1的Gi0/5抓包,和右键SW2的Gi0/4抓包,抓到的是同一条物理链路,但因为EVE-NG底层是桥接实现,有时候会出现一端能抓到、另一端是空文件的情况。经验做法是:哪端没流量就换另一端抓,或者直接在链路属性里挂Capture,这个入口生成的抓包通常更稳。
另外提醒一点:抓包文件会存在EVE-NG服务器上,浏览器里打开的其实是通过WebSocket拉取的实时流。如果你想长期保留某个pcap,建议在Wireshark窗口里直接另存一份,或者通过EVE-NG的导出功能把pcap下载到本地。我习惯把每个阶段的抓包都单独存成文件,文件名带上场景和抓包点,比如lab2_sameVLAN_trunk.pcap,后面复盘或者写文章都不用重新跑实验。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 打开VLAN的开关:Access、Trunk、PVID与802.1Q标签规则
2.1 IOL交换机开局:创建VLAN和接口模式
节点启动后,第一件事是给交换机创建VLAN。进入全局配置模式,SW1和SW2都执行下面的配置:
code复制vlan 10
na
