eNSP实战:VLAN间通信实验排错,单臂路由与三层交换详解
2026/9/8 10:35:20 网站建设 项目流程

上周有位刚开始学网络的同学跟我聊,说他在 eNSP 里做“VLAN间通信配置实验1”,两台电脑分别划到 VLAN 10 和 VLAN 20,交换机上的 VLAN 也建了,端口也分了,但 PC 之间就是 ping 不通。他以为是自己少敲了一条命令。

聊到一半我大概猜到了问题:他把“VLAN 划分配完”当成了“VLAN 间通信做完”。在 VLAN 的世界里,划分 VLAN 只是完成了二层隔离;想让不同 VLAN 里的主机通信,还必须有一个能同时理解多个 VLAN 的三层设备,负责路由和网关。这个误解,几乎每个学网络的人都会遇到。

所以这篇内容不打算只列一遍配置命令,而是把 VLAN 间通信实验拆成三层来看:先想清楚问题出在哪一层,再动手配置,最后能有一套自己的排查思路。你做完这个实验后收获的不应该只是“通了”,而是知道为什么能通。

1. 别急着敲命令,先看清 VLAN 间通信真正卡在哪

1.1 为什么 VLAN 划分正确,不代表 VLAN 间通信成立

很多人一开始会把“VLAN 配置”和“VLAN 间通信”混在一起。

VLAN 的核心作用是缩小广播域。交换机把端口划分到不同 VLAN 后,广播帧只会在同一 VLAN 内转发。不同 VLAN 之间,默认是隔离的。这种隔离既是好处,也是你需要额外处理的原因:它把网络分成了多个逻辑区域,区域之间不再天然互通。

在华为 eNSP 里做实验,创建 VLAN、配置 Access 口、配置 Trunk 口,这些都属于二层配置。二层配置能保证同 VLAN 的 PC 互相 ping 通,也会让不同 VLAN 的 PC 彻底看不到对方。如果你不做任何三层配置,VLAN 10 里的 PC1 去 ping VLAN 20 里的 PC2,结果是目标不可达或请求超时。

所以,判断一个 VLAN 间通信实验做没做对,不能只看 VLAN 有没有建好。要看另一个问题:你给每个 VLAN 配网关了吗?网关在哪台设备上?那台设备能不能同时认识 VLAN 10 和 VLAN 20?这三点才是 VLAN 间通信的关键。

1.2 在 eNSP 里做实验,先要有一张能说服自己的拓扑表

这个实验我建议用“单臂路由”作为入口方案。原因是它最能直观展示“二层隔离 + 三层转发”的完整逻辑。

实验拓扑可以这样设计:

  • 一台华为 AR 路由器作为三层网关;
  • 一台 S5700 交换机负责二层 VLAN 划分;
  • 两台 PC,PC1 属于 VLAN 10,PC2 属于 VLAN 20。

规划如下:

设备接口接口类型VLANIP 地址
PC1eth0/0/1AccessVLAN 10192.168.10.10/24,网关 192.168.10.1
PC2eth0/0/2AccessVLAN 20192.168.20.10/24,网关 192.168.20.1
SW1GE0/0/1AccessVLAN 10
SW1GE0/0/2AccessVLAN 20
SW1GE0/0/0TrunkVLAN 10、20
路由器 AR1GE0/0/0.10子接口终结 VLAN 10192.168.10.1/24
路由器 AR1GE0/0/0.20子接口终结 VLAN 20192.168.20.1/24

这张表看似简单,但它决定了后面所有配置。你手里没有这张表,就会出现一个很常见的问题:命令都敲了,却不知道哪条命令应该对应哪个接口。

1.3 子接口、VLANIF、单臂路由:先选一条最省误解的路径

VLAN 间通信的常见方案,主要是两种:一是单臂路由,也就是路由器子接口方案;二是三层交换,也就是交换机 VLANIF 方案。

单臂路由的特点是,路由器物理接口被拆成多个子接口,每个子接口对应一个 VLAN。流量从交换机通过 Trunk 上送路由器,路由器根据 VLAN 标签决定走哪个子接口,再完成三层转发。它的优点是非常直观,方便理解 VLAN 标签的作用;缺点是所有跨 VLAN 流量都挤在一条物理链路上,性能和扩展性都受限。

三层交换机的 VLANIF 方案更接近真实园区网。交换机的 VLAN 接口直接配置 IP 地址,VLAN 间的转发由交换机硬件完成,性能高,配置也简单。但它把“二层隔离”和“三层转发”都做在了一台设备内部,初学者容易看不清边界。

我建议实验 1 先选单臂路由,把链路和转发逻辑跑通;之后再切换到三层交换机,补一遍 VLANIF。两条路都走过,你对 VLAN 间通信的理解才对得起来。

2. 单臂路由:用一对 Trunk 和多个子接口把 VLAN 带回三层

2.1 从 VLAN 到三层:为什么路由器必须用“子接口”

一台路由器物理接口通常只属于一个三层网段。但如果 VLAN 10 和 VLAN 20 都要通过这台路由器上网关,你不可能在每个物理接口上只配一个地址。

子接口就是解决这个问题的:在同一个物理接口上创建多个逻辑子接口,每个子接口绑定一个 VLAN ID。比如 GE0/0/0.10 负责 VLAN 10,GE0/0/0.20 负责 VLAN 20。物理接口只是一个入口,真正干活的是子接口。

这里要注意一个细节:路由器和交换机之间的链路必须配置成 Trunk。因为交换机上送路由器的报文,不是普通的以太网帧,而是带有 802.1Q VLAN 标签的帧。如果这条链路是 Access,交换机只会放行一个 VLAN,另一个 VLAN 的流量根本到不了路由器。

2.2 核心配置:不要复制命令,要理解每一条在做什么

先看交换机侧配置。在 eNSP 中用华为命令行,常见写法如下:

sysname SW1 vlan batch 10 20 # interface GigabitEthernet0/0/1 port link-type access port default vlan 10 # interface GigabitEthernet0/0/2 port link-type access port default vlan 20 # interface GigabitEthernet0/0/0 port link-type trunk port trunk allow-pass vlan 10 20 #

逐个解释一下。

vlan batch 10 20是批量创建 VLAN 10 和 VLAN 20。在真实交换机上,VLAN 需要先存在,接口才能划分进去。

GE0/0/1 和 GE0/0/2 连接两台 PC,配置为 Access 口,端口默认 VLAN 分别是对应的 VLAN。Access 口只会接收和发送一个未打标签的 VLAN 帧,这是最基础也最常见的终端接入方式。

GE0/0/0 连接路由器,配置为 Trunk 口,并显式放行 VLAN 10 和 VLAN 20。Trunk 口的作用是在一条物理链路上传递多个 VLAN 的帧,而这些帧会带着 802.1Q 标签。

然后看路由器侧配置:

interface GigabitEthernet0/0/0.10 dot1q termination vid 10 ip address 192.168.10.1 255.255.255.0 arp broadcast enable # interface GigabitEthernet0/0/0.20 dot1q termination vid 20 ip address 192.168.20.1 255.255.255.0 arp broadcast enable

重点解释三个命令。

dot1q termination vid 10让子接口识别 VLAN 10 的标签。收到带 VLAN 10 标签的帧,这个子接口会剥掉标签继续处理;发送报文时,会重新打上 VLAN 10 标签交给交换机。

ip address配置的是该 VLAN 的网关地址。PC1 的网关是 192.168.10.1,PC2 的网关是 192.168.20.1,两个网段不能乱写。

arp broadcast enable是在子接口上使能 ARP 广播。这是最容易漏的一步。如果不加,PC 可能无法通过子接口解析到网关 MAC,ping 网关会一直失败。

物理接口 GE0/0/0 本身不需要配置 IP 地址。子接口配置完成后,物理接口保持 Up 即可。

注意:先别急着把 PC 网关改成通配地址。IP 规划、VLAN 编号、子接口编号三者要一一对应,否则后续排错会非常痛苦。

2.3 为什么“port trunk pvid vlan 10”这种配置不是必须的

很多初学者会搜到port trunk pvid vlan 10这类配置,然后很困惑:我不配 PVID,是不是 VLAN 间通信就不通?

PVID 的含义是端口的默认 VLAN。当一个接口收到不带 VLAN 标签的帧时,交换机会给这个帧打上 PVID 对应的 VLAN 标签。

在单臂路由实验里,交换机连接 PC 的 Access 口已经通过port default vlan 10port default vlan 20决定了终端流量的 VLAN 归属。交换机连接路由器的 Trunk 口收到的,是从 PC 方向过来的带标签帧,这些帧已经明确属于 VLAN 10 或 VLAN 20,Trunk 口不需要修改它们。

所以,默认 PVID 是 VLAN 1 也可以正常工作。只有当链路的一端发送不带标签的帧、而你又希望它属于非 VLAN 1 时,才需要考虑调整 PVID。比如某些不支持 802.1Q 的设备接在 Trunk 口上,你希望它对端发的未打标帧进入 VLAN 10,这时才会用到port trunk pvid vlan 10

在基础 VLAN 间通信实验里,你更应该检查的是 Trunk 口是否放行了对应 VLAN,而不是纠结 PVID。

2.4 PC 配置和验证前的准备

PC1 和 PC2 在 eNSP 中可以直接在图形界面配置 IP:

  • PC1:192.168.10.10,掩码 255.255.255.0,网关 192.168.10.1;
  • PC2:192.168.20.10,掩码 255.255.255.0,网关 192.168.20.1。

配完先做两次小验证:

PC1> ping 192.168.10.1 PC1> ping 192.168.20.10

第一次是验证 PC 到网关通不通,第二次是验证是否真的实现了 VLAN 间通信。如果第一步不通,后续跨 VLAN 通不通都没有意义。这个顺序能帮你快速缩小问题范围。

3. 判断配置对不对,不能只看 ping,要看完整的转发链路

3.1 从 PC1 ping PC2,报文到底走了一条什么路

很多教程只告诉你“配置完成后 ping 一下,通了就行”。但如果你没搞懂报文路径,遇到不通时就会手足无措。

我带你过一遍 PC1 ping PC2 的完整过程。

第一步,PC1 判断目的地址 192.168.20.10 不在自己的网段内,它会把 ICMP 报文交给网关 192.168.10.1。这时 PC1 需要先做 ARP,解析网关 MAC。

第二步,ARP 请求是一个广播帧。它从 PC1 进入交换机的 GE0/0/1,由于这个接口属于 Access VLAN 10,广播只在 VLAN 10 内转发。路由器子接口 GE0/0/0.10 也属于 VLAN 10,因此能收到这个 ARP 请求并回应。

第三步,PC1 向网关发出 ICMP 请求报文。交换机为这个帧打上 VLAN 10 标签,从 Trunk 口 GE0/0/0 发送给路由器。因为 Trunk 口放行了 VLAN 10,所以路由器能收到。

第四步,路由器的物理接口收到带 VLAN 10 标签的帧,交给子接口 GE0/0/0.10,剥掉标签。IP 层查路由表,发现 192.168.20.0/24 直连在子接口 GE0/0/0.20 上。

第五步,路由器从子接口 GE0/0/0.20 发送响应前,需要解析 PC2 的 MAC。它会发出一个 VLAN 20 的 ARP 广播,交换机 Trunk 口收到后,根据标签只向 VLAN 20 内转发,PC2 收到并回应。

第六步,路由器把 ICMP 报文封装成目的 MAC 为 PC2、携带 VLAN 20 标签的帧,发给交换机。交换机根据 VLAN 20 标签,从 Access 口 GE0/0/2 转发给 PC2。PC2 收到请求后,按相反路径回包。

这条链路里,任何一个环节断了,ping 都不会通。所以排查时不要只看“我配了 VLAN”,要看“标签是否打对”“Trunk 是否放行”“路由是否可达”“ARP 是否解析成功”。

3.2 用 display 命令验证“两层配置都对了”

在华为设备上,有几句命令很实用,但很多人不会按层级去用。

命令作用可以看到什么
display vlan查看 VLAN 及其端口成员VLAN 10、20 是否存在,Access 口是否划入
display port vlan查看端口类型、PVID、Trunk 放行 VLAN端口是不是 access/trunk,放行列表是否正确
display ip interface brief查看三层接口 IP 和状态子接口、VLANIF 接口是否 Up,IP 是否配置
display ip routing-table查看路由表两个网段是否可路由

我看到有些初学者会用display int vlan brief这种说法。不同软件版本和平台下命令写法有差异,重点不是记住拼写,而是知道你现在要看哪一层:二层看 VLAN 和端口,三层看 IP 和路由。

如果配置完发现路由器子接口状态是 Down,大概率不是命令代码错了,而是物理接口没 Up,或者 Trunk 口没有把对应 VLAN 放行上来。

3.3 一条适合直接套用的排查链路

我建议你以后遇到 VLAN 间通信问题,都按这个顺序排查:

  1. 看现象:ping 不通是“请求超时”还是“目标不可达”?只有单向通还是双向都不通?
  2. 看二层:PC 所在 Access 口是否划分到预期 VLAN?Trunk 口是否放行了所有跨设备 VLAN?
  3. 看三层:网关 IP 是否和 PC 网段匹配?路由器子接口 / VLANIF 接口是否 Up?
  4. 看 ARP:PC 的 ARP 表里有没有网关 MAC?路由器能否解析到对端终端 MAC?
  5. 看 PVID 和物理链路:有没有端口误改成 access?有没有 Trunk 的 PVID 与预期不一致?

这条链路可以解决绝大多数 VLAN 间通信问题。因为大多数故障不会同时坏在两层,你逐层排查,大概率能定位到某一层。

4. 从实验到工程:单臂路由的边界和三层交换的替代方案

4.1 为什么真实园区网里更常见的是 VLANIF,而不是路由器子接口

单臂路由适合做实验和教学,因为它把“转发”这件事摊开给你看。但真实网络里,很少会靠一台路由器去承担所有 VLAN 间流量。

原因很简单:单臂路由的所有跨 VLAN 流量都汇聚在一条物理链路上,再交由路由器 CPU 或软件转发路径处理。VLAN 数量少、流量小时,问题不大;VLAN 数量上来、业务流量增长后,链路带宽和路由器处理能力就成了瓶颈。

三层交换机则不同。VLANIF 接口把网关配置在交换机上,VLAN 间的报文在交换机内部直接完成路由和转发,通常走硬件芯片,性能和扩展性更好。所以到了中大型园区网,你看到的方案多是三层交换机做网关,而不是外挂一台路由器。

做实验时,我建议你两条路都走一遍:先用单臂路由把原理学透,再用三层交换机把生产思维建起来。

4.2 在三层交换机上做同一个实验,配置差在哪里

同样的拓扑,只要把路由器换成三层交换机,配置会简洁很多。

交换机侧只需要加上 VLANIF 接口:

sysname SW1 vlan batch 10 20 # interface Vlanif10 ip address 192.168.10.1 255.255.255.0 # interface Vlanif20 ip address 192.168.20.1 255.255.255.0 # interface GigabitEthernet0/0/1 port link-type access port default vlan 10 # interface GigabitEthernet0/0/2 port link-type access port default vlan 20

在这个方案里,交换机同时承担二层交换和三层路由。PC 的网关直接指向交换机上的 VLANIF 地址。

如果你在真实交换机上执行display ip interface brief,能看到 Vlanif10 和 Vlanif20 都有 IP,并且状态为 Up。只有当 VLAN 内没有活跃的物理端口时,VLANIF 才会表现为 Down。很多人在模拟器里改配置,发现 VLANIF 一直 Down,原因通常是对应 VLAN 的 Access 口没有接设备,或者接口被 shutdown。

4.3 “华为交换机划 VLAN 都是一样的吗”:同一套思路,不同产品下的细节差异

经常有初学者问:华为交换机划 VLAN 是不是全都一样?

大思路是一样的:创建 VLAN、配置接口类型、放行 Trunk、配置网关。但具体到不同产品线和软件版本,会有差异。比如框式交换机和盒式交换机的端口编号规则不同,有的 Trunk 口默认放行 VLAN 1,有的版本允许所有 VLAN,有的平台还需要额外执行port trunk allow-pass vlan all才能让所有 VLAN 通过。

所以,最好别把一套命令当成万能公式。你在一台设备上验证成功后,换一个型号或版本时,至少要看一眼 display 的输出,确认端口类型、PVID、Trunk 放行列表是否符合预期。这也是网络工程师的基本功。

5. 把这个实验沉淀成自己的排查框架

5.1 一套更适合新手的配置顺序

很多人的配置顺序是:先配路由器,再配交换机,最后配 PC。这个顺序不是不对,但对新手不够友好。因为一旦出了问题,你很难判断是路由器配错了,还是交换机没放行。

我更建议按下面这个顺序做:

  1. 先画拓扑和 IP 规划表;
  2. 配置二层:创建 VLAN,配置 Access 口和 Trunk 口;
  3. 配置三层:路由器子接口或交换机 VLANIF 接口;
  4. 配置终端 IP 和网关;
  5. 先用 PC ping 网关,再 ping 跨 VLAN 地址;
  6. 保存配置。

这套顺序的核心是:先让二层链路可见,需要同 VLAN 通的时候能通,然后才引入三层。不要一上来就把所有命令敲完再统一验证,那会大大增加排错难度。

5.2 一张常见问题对照表

现象可能原因检查方向
PC ping 不通网关Access 口 VLAN 划错;PC 网关 IP 写错;子接口 ARP 广播未使能display vlan,检查 PC IP
网关 ping 得通,跨 VLAN 不通缺少三层路由;Trunk 未放行目标 VLAN;路由器子接口缺少对应 VLANdisplay ip routing-tabledisplay port vlan
路由器子接口 Down物理接口未 Up;Trunk 口放行 VLAN 不对;子接口编号和 VLAN ID 不一致display interface brief,检查 Trunk
三层交换机 VLANIF DownVLAN 内没有活跃二层接口;接口被 shutdowndisplay ip interface brief,检查物理接口状态
只有单方向通网关配置不对称;ARP 缓存异常;Trunk 双向放行不一致查看两台 PC ARP 表,检查两方向链路

这张表不是标准答案,而是一个排查起点。你在实际实验里遇到问题时,可以先对照现象,再回到配置里逐条确认。

5.3 长期价值不是记住命令,而是建立“分段-转发-网关”的思维

VLAN 间通信实验表面上是配置命令,背后是一个非常重要的网络分层思维:二层负责分段,三层负责转发,网关负责让不同网段有交会点。

这种思维不会只停留在交换机配置上。你以后看到基于 IP 子网的 VLAN 划分、基于 VLAN 的 IPSG 组网、甚至 Kubernetes 环境里用 Multus 给 Pod 配置多网卡和 VLAN,核心逻辑仍然是一样:数据包必须带着正确的 VLAN 标签,经过正确的三层网关,才能到达该去的地方。

把实验 1 做透,不是让你背下几条命令。它真正给你的,是一套能在“隔离”和“放行”之间做判断的方法。

那位同学后来把配置从头又做了一遍,先画拓扑,再配二层,再用 ping 网关定位问题,最后跨 VLAN 通了。他说了一句话,我印象很深:原来难的不是命令,而是不知道问题出在哪一层。

如果你也卡在同一个实验里,先别急着重敲命令。回到拓扑,回到分层,问题通常就会自己浮出来。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询