不用急着打开模拟器敲命令。开始之前先把几个容易绕晕的点说清楚,后面配置起来能省不少时间。
1. 单臂路由到底解决了什么问题
先说一个很多人初学时都会有的疑问:交换机划了VLAN之后,不同VLAN里的设备本来就ping不通,为什么还要专门用一个路由器去"多管闲事"?
VLAN的本质是隔离广播域。二层交换机转发数据靠的是MAC地址表,而MAC地址表只在同一个广播域里生效。PC-A在VLAN 10,PC-B在VLAN 20,它俩的广播帧根本不会跨过VLAN边界,二层转发到这里就断了。此时如果PC-A的网关指向交换机本身,交换机也没有三层路由功能——很多入门级交换机只工作在二层,没有任何路由能力。那不同VLAN之间要通信怎么办?
答案就是:把报文扔给一个"会路由的三层设备",让它完成跨网段转发。单臂路由就是这么一种物理形态的解法。
所谓"单臂",指的是路由器只用一个物理接口接入交换机。这一个物理接口被分成多个逻辑子接口,分别对应不同的VLAN,充当不同网段的网关。数据帧从PC-A出发,带着VLAN 10的标签(或untagged)到达交换机,交换机通过Trunk口转发给路由器;路由器收到后发现目的IP在VLAN 20网段,就通过对应的子接口查表转发,再原路丢回交换机,交换机剥掉标签后送给PC-B。整个过程看起来是"一条路进出",实际上报文在路由器内部完成了跨VLAN路由。
这个方案的一个关键点是:路由器和交换机之间的链路必须允许承载多个VLAN的流量。所以在交换机侧要配置Trunk口,在路由器侧要配置802.1Q封装。明白了这个数据链路模型,后面所有配置步骤都能对上号。
再说清楚一点:单臂路由适合的实验和落地场景,通常是小型企业网络或学习环境。大型企业或数据中心里,交换机大多是三层交换机,可以用SVI接口直接完成VLAN间路由,性能比单臂路由高得多。但单臂路由作为理解"VLAN间路由怎么实现"的入门实验,价值依然非常突出——它把"VLAN标签""Trunk""子接口""802.1Q封装"这些概念全部串在了一起。
2. 实验拓扑与设备选型:不同模拟环境下的配置差异
动手之前先把拓扑定下来。我习惯用下面这个经典拓扑:
code复制[PC-A] ---- (Access VLAN 10) ---- [SW1] ---- (Trunk) ---- [R1]
[PC-B] ---- (Access VLAN 20) ---- [SW1]
R1是路由器,SW1是二层交换机,PC-A、PC-B分别是两个VLAN里的测试主机。路由器只有一个物理口接到交换机,这就是"单臂"的由来。
接下来要考虑设备选型。不同环境差距还挺大的,我简单列一下各个平台的差异:
| 平台 | 推荐的设备/场景 | 配置差异 |
|---|---|---|
| Cisco Packet Tracer | 选Router 1941/2911 + Switch 2960 | 差异最小,命令与Cisco IOS一致 |
| GNS3/EVE-NG | 可以用IOSv或真实iOS镜像 | 需要先建好交换机和路由器模板 |
| 华为eNSP | AR路由器 + S5700交换机 | 命令换成[Huawei]风格,子接口配置稍有区别 |
| 真机/真实网络设备 | 任意支持dot1q的路由器 | 注意物理接口能否封装子接口 |
如果你用的是Cisco Packet Tracer,配置过程完全是CCNA标准命令;GNS3里则要留意设备镜像对VLAN和Trunk的支持能力;华为eNSP在命令语法上差得比较远,但思路一致。为了保证好复现,后面命令我以Cisco IOS为主,华为/其他厂商的命令差异会在下文补充思路,不逐条展开。
另外有一点容易被忽略:单臂路由实验里交换机的Trunk口可能要和路由器直连,也可能通过另一台交换机中转再接到路由器。如果是后者,所有中转交换机的Trunk口都要放行对应的VLAN,否则帧传到一半就被丢弃了。实验阶段推荐只接一台交换机,减少排查变量。
再强调一下IP规划。规划IP时要考虑后续路由器的子接口和每个VLAN网段的对应关系:
- VLAN 10网段:192.168.10.0/24,网关为192.168.10.1
- VLAN 20网段:192.168.20.0/24,网关为192.168.20.1
- 路由器Gi0/0.10:192.168.10.1,Gi0/0.20:192.168.20.1
- PC-A:192.168.10.10/24,网关192.168.10.1
- PC-B:192.168.20.10/24,网关192.168.20.1
注意:PC的网关必须指向路由器对应VLAN子接口的IP,而不是交换机管理IP,否则流量根本不会交给路由器。
3. 交换机配置详解:VLAN划分与Trunk的设计逻辑
交换机侧配置是整个实验的"地基"。我遇到过不少学员在这个环节漏掉关键步骤,导致后面路由器子接口一直起不来。这里一步步拆开讲清楚每句话的作用。
3.1 创建VLAN并划分Access接口
进入交换机全局配置模式,先创建两个VLAN:
code复制SW1# configure terminal
SW1(config)# vlan 10
SW1(config-vlan)# name VLAN10
SW1(config-vlan)# exit
SW1(config)# vlan 20
SW1(config-vlan)# name VLAN20
SW1(config-vlan)# ex
