一次真实的VLAN间通信故障排查实录那天下午市场部的同事急匆匆跑过来说他们无法访问研发部的文件服务器了。我第一反应是网络设备出了问题但奇怪的是两个部门内部的网络通信都完全正常。这明显是个典型的VLAN间通信故障而这类问题80%都出在PVID或VLANIF的配置上。1. 故障现象初步分析我首先进行了基本的连通性测试。从市场部的一台电脑ping研发部的服务器果然不通。但市场部内部电脑互相ping都正常研发部内部也是如此。这说明各部门内部的二层通信正常问题出在跨VLAN的三层通信上接着我检查了核心交换机的ARP表display arp all发现市场部和研发部的IP地址都没有出现在对方的ARP表中。这意味着三层交换机的VLANIF接口可能没有正确转发ARP请求。2. 二层接口排查PVID是关键我开始检查连接两个部门的Trunk口配置display current-configuration interface GigabitEthernet 0/0/24输出显示interface GigabitEthernet0/0/24 port link-type trunk port trunk allow-pass vlan 10 20 port trunk pvid vlan 10这里发现了第一个可疑点Trunk口的PVID被设置为VLAN 10市场部但按照最佳实践Trunk口的PVID应该设置为一个不使用的VLAN ID比如4094。PVID不当配置的后果当接口收到未标记的帧时会将其归类到PVID指定的VLAN如果两端PVID不一致会导致VLAN错乱特别在Trunk口上PVID设置不当会影响VLAN间通信3. 三层接口排查VLANIF状态接下来检查VLANIF接口的状态display ip interface brief发现VLANIF 20研发部的状态是down的。进一步查看详细状态display interface Vlanif 20显示原因是VLAN does not exist。这很奇怪因为VLAN 20明明在VLAN列表中display vlan确实显示了VLAN 20存在。深入检查发现display vlan 20输出显示VLAN ID: 20 VLAN Type: static Route Interface: configured but IP address is unassigned原来问题出在这里 - VLANIF 20虽然创建了但没有分配IP地址导致接口状态异常。4. 故障根源与修复方案综合以上排查问题出在两个地方Trunk口的PVID设置不当VLANIF 20没有正确配置IP地址修复步骤# 修正Trunk口的PVID system-view interface GigabitEthernet 0/0/24 port trunk pvid vlan 4094 quit # 配置VLANIF 20的IP地址 interface Vlanif 20 ip address 192.168.20.1 255.255.255.0 quit修改后立即测试市场部到研发部的ping通信恢复正常。5. 原理深入数据包如何穿越VLAN要真正理解这个故障需要明白VLAN间通信的数据流向源主机发送数据包时检查目标IP是否在同一子网如果不在发送给默认网关VLANIF IP交换机处理接收端口Access口打上VLAN标签根据目标MAC查找转发路径对于跨VLAN通信数据包会被送到VLANIF接口VLANIF处理执行三层路由查找重新封装帧头从目标VLAN的接口发出关键点对比要素正确配置错误配置Trunk PVID不使用的VLAN实际使用的VLANVLANIF状态UP且有IPDOWN或无IPARP学习正常失败路由功能启用禁用6. 最佳实践与常见陷阱根据这次排障经验总结以下VLAN配置要点必须检查的项目Trunk口的PVID是否设置为非业务VLAN每个业务VLAN是否有对应的VLANIFVLANIF是否配置了IP地址且状态为UP路由表是否包含各VLAN的路由常见错误配置忘记为VLAN创建VLANIF接口VLANIF创建了但没有分配IP地址Trunk口的PVID与业务VLAN冲突ACL或防火墙规则阻止了VLAN间通信VLANIF接口被管理员手动shutdown实用检查命令# 检查VLAN和VLANIF对应关系 display vlan # 检查接口VLAN配置 display current-configuration interface [interface-name] # 检查VLANIF状态 display ip interface brief # 检查ARP表 display arp all # 检查路由表 display ip routing-table7. 进阶思考为什么这样设计理解网络设备处理VLAN的逻辑很重要二层与三层的分界二层交换基于MAC和VLAN三层路由基于IPVLANIF是连接两者的桥梁PVID的作用为未标记帧提供VLAN上下文在Trunk口上特别重要因为可能承载多个VLAN的流量VLANIF的工作机制每个VLANIF对应一个VLAN负责该VLAN的三层路由需要UP状态和IP地址才能工作在实际项目中我遇到过一个更隐蔽的问题两台交换机之间的Trunk口PVID不一致导致某些情况下VLAN间通信时断时续。这种间歇性问题最难排查后来我们制定了严格的Trunk口配置模板统一使用VLAN 4094作为PVID问题再没出现过。