4. VLAN与Trunk技术
VLAN是交换网络中最基础也最容易被面试官追问的技术之一。很多候选人能背出“VLAN是虚拟局域网,用于隔离广播域”,但一旦被问到“Trunk口上PVID和允许列表的关系”“为什么VLAN 1不能删除”“GVRP为什么在生产网里几乎不用”,回答就开始含糊。这一节我们按面试实战的深度,把VLAN原理、802.1Q封装、端口类型、GVRP以及VLAN间通信和排错思路串成一条完整的知识链。
一、VLAN到底解决了什么问题
二层交换机的所有端口默认属于同一个广播域。当接入设备增多,广播帧、未知单播帧、组播帧会在整个广播域内泛洪,消耗带宽和终端CPU;同时,不同部门之间在二层直接可达,安全性也无法保证。VLAN的本质,是把一台物理交换机在逻辑上切分成多个独立的二层广播域,每个VLAN是一个独立的广播域,VLAN之间默认二层隔离。
需要强调一个面试高频点:VLAN是本地意义(local significance)的。VLAN ID只在单台交换机内部标识一个广播域,跨设备传递时,必须依靠Trunk链路携带标签,让对端知道这个帧属于哪个VLAN。也就是说,VLAN本身不是一种“端到端协议”,而是交换机内部的逻辑划分,802.1Q才是让VLAN跨设备延伸的封装标准。
二、802.1Q封装:标签插在哪里
802.1Q在以太网帧的源MAC地址之后、类型/长度字段之前,插入4字节的Tag。这4字节包含:2字节TPID(固定0x8100,标识这是一个802.1Q标签帧)、3位PCP(优先级,用于QoS)、1位DEI(丢弃 eligible 指示)、12位VID(VLAN ID)。12位VID决定了可用VLAN范围是0~4095,其中0和4095保留,实际可用为1~4094。
这里有一个面试常考的细节:VLAN 1是默认VLAN,不能被删除,也不能被重命名。所有端口默认属于VLAN 1,未打标签的帧默认归入VLAN 1。很多厂商设备上VLAN 1的流量在Trunk上默认不打标签(untagged),这也是为什么安全加固时通常建议不要把业务放在VLAN 1。
三、Access与Trunk端口
Access端口用于连接终端设备,它只属于一个VLAN,收发的帧都是untagged。当Access端口收到一个untagged帧,会打上该端口PVID对应的VLAN标签;发送时则剥离标签,以untagged形式发出。Trunk端口用于交换机之间或交换机与路由器/防火墙之间,可以承载多个VLAN,默认情况下除PVID对应VLAN外,其他VLAN的帧都带标签发送。
这里必须区分两个概念:PVID(Port VLAN ID)和Trunk允许列表(allowed VLAN list)。PVID决定untagged帧进入时归入哪个VLAN,以及发送时哪个VLAN的帧不打标签;允许列表决定该Trunk口允许哪些VLAN的帧通过。一个常见误区是“把VLAN加入允许列表,它就会带标签通过”——实际上,如果该VLAN恰好等于PVID,它仍然untagged通过。所以配置Trunk时,通常要保证两端PVID一致,否则会出现VLAN“串味”或流量不通。
下面是一段华为/华三风格的基础配置示例,用于说明Access与Trunk的典型写法:
# 创建VLAN
vlan 10
vlan 20
# 连接终端的Access口
interface GigabitEthernet0/0/1
port link-type access
port default vlan 10
# 交换机之间的Trunk口
interface GigabitEthernet0/0/24
port link-type trunk
port trunk allow-pass vlan 10 20
port trunk pvid vlan 1
在思科设备上,对应命令是 switchport mode access、switchport access vlan 10、switchport mode trunk、switchport trunk allowed vlan 10,20、switchport trunk native vlan 1。面试时如果被问到“native VLAN和PVID是不是一回事”,可以回答:在思科语境下native VLAN对应华为/H3C的PVID,作用一致,都是处理untagged帧的归属。
四、GVRP:为什么它很少出现在生产网
GVRP(GARP VLAN Registration Protocol)是一种让交换机自动传播和注册VLAN信息的协议,理论上可以免去逐台手工创建VLAN的麻烦。但在实际工程中,GVRP使用极少,原因有三:一是它依赖GARP,收敛和稳定性不如手工配置可控;二是VLAN信息自动扩散容易导致VLAN“泄漏”到不该有的链路上,带来安全风险;三是不同厂商对GVRP的支持和默认行为存在差异,排错成本高。面试中如果被问到GVRP,正确的态度是:知道它是什么、能说清原理和局限,并明确表达“生产环境更推荐手工规划VLAN或使用VLAN管理平台”。
五、VLAN间通信的三种方案
VLAN之间二层隔离,要实现互通必须经过三层。常见方案有三种:
方案一:单臂路由(Router-on-a-Stick)。在路由器的一个物理接口上划分子接口,每个子接口对应一个VLAN并封装802.1Q,作为该VLAN的网关。交换机与路由器之间用Trunk连接。优点是节省物理接口,缺点是所有VLAN间流量都经过同一条物理链路,容易成为瓶颈。适合小型网络或实验环境。
方案二:三层交换机SVI。在三层交换机上为每个VLAN创建SVI(Switch Virtual Interface),配置IP地址作为网关,并开启路由功能。这是目前企业网最主流的方案,转发性能高,VLAN间路由在硬件中完成。配置示例如下:
interface Vlanif10
ip address 192.168.10.1 255.255.255.0
interface Vlanif20
ip address 192.168.20.1 255.255.255.0
# 终端网关分别指向192.168.10.1和192.168.20.1
方案三:多层交换机+外部路由器。三层交换机负责VLAN内和部分VLAN间转发,外部路由器负责跨设备或跨区域的VLAN间路由。适合大型园区网分层架构。
六、排错思路:从现象反推配置
VLAN与Trunk故障的典型现象是“同VLAN不通”或“跨VLAN不通”。排错时建议按以下顺序推进:
第一步,确认物理层和端口状态。查看端口是否up、是否被shutdown、光模块/网线是否正常。第二步,确认VLAN是否创建。如果VLAN 10没有创建,Access口配置port default vlan 10会失败或流量被丢弃。第三步,检查Trunk允许列表。如果Trunk口没有放通VLAN 10,该VLAN的帧会被丢弃。第四步,检查PVID/native VLAN是否一致。两端不一致会导致untagged帧归入不同VLAN。第五步,检查终端网关和IP地址。跨VLAN不通时,确认终端网关是否指向正确的SVI地址,SVI是否up(SVI up的前提是该VLAN至少有一个up的端口)。
下面给出一份可直接用于现场排错的检查清单,按“现象—检查点—判断依据”组织:
| 现象 | 检查点 | 判断依据 |
|---|---|---|
| 同VLAN终端不通 | Access口VLAN、端口状态、MAC地址表 | 端口up且VLAN正确,MAC表中能看到对端MAC |
| 跨交换机同VLAN不通 | Trunk允许列表、PVID一致性 | 两端allow-pass包含该VLAN,PVID相同 |
| 跨VLAN不通 | SVI状态、终端网关、路由表 | SVI up,网关正确,路由表有直连网段 |
| 部分VLAN通、部分不通 | Trunk允许列表、VLAN是否创建 | 缺失的VLAN未放通或未创建 |
| 时通时不通 | PVID不一致、环路、MAC漂移 | 两端PVID一致,无环路告警,MAC表稳定 |
最后提醒一个面试加分点:VLAN规划不是配完就结束,还要考虑VLAN ID的分配规范(如按部门/楼层/功能分段)、Trunk链路的冗余(Eth-Trunk/LACP)、以及VLAN 1的安全加固。能把这些工程习惯讲出来,比单纯背命令更能体现你的实战经验。