交换机VLAN配置实战:从广播域隔离到跨厂商命令详解
我前几天去一个客户现场排障客户说办公网一到下午就卡成PPT视频会议基本没法用。我上机一看核心交换机上一个千兆口接了整层楼的所有工位终端广播域大得吓人一个ARP请求能吵醒半层楼的机器。问了一圈这台交换机从上线开始就没划分过VLAN。这种事情在中小企业里一点都不稀奇交换机买回来就当集线器用几百万的设备跑着十几年前的祖传配置。所以这篇内容我打算把交换机VLAN配置这件事从头到尾捋一遍从VLAN到底在解决什么问题到Access口和Trunk口怎么选再到华为、思科、锐捷这几个主流厂商的命令怎么敲最后把VLAN间通信和常见故障排查也一并讲清楚。不管你是刚入行的网络小白还是被VLAN折腾过几次的运维老哥这篇都能给你一个能直接抄作业的参考。1. 先想清楚一件事VLAN到底在解决什么很多教程上来就甩命令但你连为什么要划VLAN都没搞明白配置出来也是稀里糊涂。VLAN的全称是Virtual Local Area Network虚拟局域网核心作用是把一台物理交换机在逻辑上拆成多台独立的交换机。这种逻辑拆分解决的是最让人头疼的广播域膨胀问题。1.1 广播域膨胀带来的连锁故障交换机的数据转发本来是按MAC地址表精准转发的但有一种帧是例外——广播帧。目标MAC是全F的广播帧会被交换机从除了接收端口以外的所有端口转发出去。ARP请求就是最常见的广播帧。假设你的交换机下挂了200台电脑一台机器发起ARP请求交换机会把这份广播复制199份发给其余所有端口其他199台机器的网卡都要拆开这个帧发现不是找自己的再默默丢弃。一台机器发一次199台跟着陪跑。当广播流量占比超过5%整个网络的可用性就会断崖式下跌。更要命的是广播域越大出故障的范围就越大。一台机器中了ARP病毒疯狂发包全网都能感受到网络在抽搐。如果把200台机器平均划分成4个VLAN每个VLAN里只有50台机器ARP广播就被限制在50台机器的圈子内故障爆炸半径直接缩小四分之三。这就是VLAN最简单的价值隔离广播域缩小故障面。1.2 划分VLAN不仅是安全隔离更是管理边界除了控制广播VLAN还天然提供了一层安全边界。财务部的VLAN在没有三层路由放行的情况下物理上就无法访问研发部的VLAN哪怕它们接在同一台交换机上。有些企业为了图省事用IP子网来隔离部门但IP子网隔离只是逻辑上的访问控制还得靠ACL配置起来又臭又长。VLAN隔离是数据链路层的物理隔离默认不通想通再开路由策略这种默认拒绝的模型要安全得多。另一个容易忽略的作用是故障域管理。划了VLAN之后你可以给每个VLAN起个名称标记用途比如VLAN 10叫OFFICEVLAN 20叫CAMERAVLAN 30叫GUEST。以后排查问题看到VLAN号就知道是哪片业务不用再去翻Excel台账。很多网络工程师排障慢不是技术不行是VLAN规划混乱一个VLAN里啥业务都有查又不好查。VLAN规划得好网络运维就等于成功了一半。2. VLAN帧格式与端口角色的底层逻辑配置VLAN之前有几个底层的概念必须吃透否则后面所有命令都可能配错还不自知。这一节不写命令但是理解了这些你去敲配置的时候就会知道每一行命令是在干什么。2.1 802.1Q标签数据帧上贴的楼层号VLAN要实现隔离与穿透必须让交换机识别某个帧属于哪个VLAN。思科早期有私有的ISL协议现在行业统一使用IEEE 802.1Q标准。802.1Q干的事情就是在标准以太网帧的源MAC地址之后、Type字段之前插入4个字节的标签Tag其中最关键的是12比特的VLAN ID取值范围0到4095可用VLAN是1到4094。可以这样理解普通网线里传输的帧就像没有贴楼层号的信件交换机这个分拣员拿到信件不知道该送哪层。打了802.1Q标签之后每一帧都像贴了楼层号分拣员一眼就知道往哪个VLAN的楼洞里送。运营商级网络里还会用到QinQ也就是双层标签相当于楼层号之外再贴一个楼栋号这个后面再谈。VLAN 1是个特殊存在所有端口默认都在VLAN 1里而且VLAN 1默认是native VLAN本征VLAN这个细节是很多配置故障的根源。思科交换机的Trunk口默认会对VLAN 1的帧不打标签华为交换机的Hybrid口默认则放行VLAN 1。所以你会发现两台不同厂商的交换机对接Trunk如果native VLAN不一致可能连不上或者两边透传的VLAN会莫名其妙串味。2.2 Access口、Trunk口、Hybrid口的适配场景交换机端口角色有几种Access、Trunk、Hybrid华为和锐捷有思科没有Hybrid概念。用一句话概括Access口是给终端设备用的Trunk口是给交换机之间或交换机与路由器之间用的Hybrid口通常用于特殊场景的灵活放行。Access口的行为特征是收到带Tag的帧先看Tag是不是等于自己的PVIDPort VLAN ID端口VLAN ID不相等就丢弃发送帧时不管什么VLAN一律剥掉Tag再发出去所以终端设备根本感知不到VLAN标签。Trunk口的行为特征是默认只放行VLAN 1需要手动配置允许哪些VLAN通过发送时除了native VLAN的帧其余VLAN的帧都保留Tag收到不带Tag的帧打上PVID的标签PVID默认也是1。很多人不理解PVID到底是什么。PVID就是端口默认所属的VLAN它决定了不带标签的帧进入交换机后挂到哪个VLAN名下。Access口的PVID固定等于该端口划分的VLANTrunk口的PVID默认是1。这也是为什么配置Trunk时通常要设置PVID比如port trunk pvid vlan 10这个命令把Trunk端口的PVID改为10让不带Tag的帧默认归入VLAN 10。3. 实战配置Access与Trunk的分厂商操作理论铺垫完进入正题。我按华为、思科、锐捷这三个主流厂商分别给出典型配置。你可能会说厂商那么多我哪记得完授人以鱼不如授人以渔我会把命令逻辑讲清楚一通百通。3.1 华为交换机从零开始划分VLAN华为VLAN配置在系统视图下进行核心命令就这么几条system-view # 批量创建VLAN vlan batch 10 20 30 # 给VLAN命名方便管理 vlan 10 description OFFICE quit # 配置Access口连接PC interface GigabitEthernet0/0/1 port link-type access port default vlan 10 quit # 配置Trunk口连接上级交换机 interface GigabitEthernet0/0/24 port link-type trunk port trunk allow-pass vlan 10 20 30 quit这里有几个细节值得展开。华为的vlan batch命令可以一次创建多个不连续VLAN写法是vlan batch 10 20 30或者vlan batch 10 to 20。实际项目中创建VLAN这事基本都是批量做的没人一条条去敲。配置Access口时port link-type access先把端口模式定为Access然后port default vlan 10把这个端口的PVID设置为10。这两行命令的顺序不能反先设端口模式再设默认VLAN。如果你先配了default vlan再改端口模式部分老版本交换机会自动把default vlan改回VLAN 1这种坑我踩过不止一次。配置Trunk口时华为要求显式指明放行哪些VLANport trunk allow-pass vlan 10 20 30。如果交换机和上联设备之间还需要透传管理VLAN记得把管理VLAN也加进allow-pass列表里否则上联设备只能看到Access口送来的一部分流量。华为还有一个容易踩坑的地方就是Hybrid口是默认端口模式华为所有端口默认都是Hybrid类型PVID是1。如果你在某个端口上执行port link-type access成功那没问题但如果你忘记改模式直接用port default vlan 10这是无效的因为Hybrid口没有port default vlan这个配置参数。正确做法是Hybrid口下用port hybrid pvid vlan 10和port hybrid untagged vlan 10来替代。3.2 思科交换机的VLAN配置与native VLAN注意事项思科的配置逻辑和华为神似但命令细节不同。IOS设备里VLAN是在VLAN Database里创建的接口模式下配置端口模式enable configure terminal # 创建VLAN vlan 10 name OFFICE exit vlan 20 name CAMERA exit # 配置Access口 interface GigabitEthernet0/1 switchport mode access switchport access vlan 10 exit # 配置Trunk口 interface GigabitEthernet0/24 switchport mode trunk switchport trunk allowed vlan 10,20,30 switchport trunk native vlan 99 exit思科的默认行为比华为更坑一点默认所有端口都是VLAN 1Trunk口默认放行所有VLAN。注意思科的Trunk口默认允许全部VLAN通过这点和华为默认拒绝的策略完全不同所以配置时你能显式用switchport trunk allowed vlan remove来收敛放行的VLAN否则默认放行所有VLAN会带来不少安全隐患。再说native VLAN。思科的Trunk口上必须考虑native VLAN一致的问题。如果两台思科交换机对接A交换机的native VLAN是1B交换机的native VLAN改成了99两边指定的native VLAN不一致VLAN 1的流量会被送到对方的VLAN 99里BGP邻居建不起来、VLAN间路由不通都是常有的事。稳妥做法是两台设备对接前明确约定native VLAN要么都用1要么都用99并在两端显式配置。3.3 锐捷交换机的兼容性配置经验锐捷的设备命令风格偏思科系但细节上有自己的特色。早期的锐捷交换机甚至支持switchport interface这种老式VLAN划分命令现在主流的RG-S系列已经全面兼容类思科写法enable configure terminal vlan 10 name OFFICE exit interface GigabitEthernet 0/1 switchport mode access switchport access vlan 10 exit interface GigabitEthernet 0/24 switchport mode trunk switchport trunk allowed vlan 10,20,30 exit锐捷设备在配置Trunk口时也支持switchport trunk native vlan但多数项目里你不改它就用默认1问题也不大。锐捷还有一个特性是部分型号支持智能监控端口模式可以一键让端口变成接IPC的监控口自动放行对应VLAN这个在安防项目里挺好用但别在公司办公网里乱开。锐捷经典的一个坑是某些型号的交换机默认开启了生成树协议如果你在交换机之间接Trunk而两端的桥优先级相同生成树协商可能会阻塞某个端口导致业务断流。排查思路是看端口状态是不是处于Blocking或Listening而不是直接怀疑VLAN配置错了。4. 核心难点VLAN间通信的两种落地方式VLAN划分完之后业务部门马上会提出那个经典问题我们财务部要访问OA服务器但OA服务器在另一个VLAN里怎么办这时候就需要VLAN间通信。4.1 单臂路由低成本的VLAN间路由方案单臂路由Router on a Stick的思路非常直接用一根物理线缆把交换机的Trunk口和路由器的物理口连起来然后在该物理口上创建多个子接口Subinterface每个子接口对应一个VLAN配置网关IP并封装802.1Q标签。这样路由器就像一个跨VLAN的中转站负责在不同VLAN之间路由转发。华为配置单臂路由的典型命令# 交换机侧配置Trunk口 interface GigabitEthernet0/0/24 port link-type trunk port trunk allow-pass vlan 10 20 quit # 路由器侧配置子接口以AR路由器为例 interface GigabitEthernet0/0/1.10 dot1q termination vid 10 ip address 192.168.10.1 255.255.255.0 arp broadcast enable quit interface GigabitEthernet0/0/1.20 dot1q termination vid 20 ip address 192.168.20.1 255.255.255.0 arp broadcast enable quit注意华为路由器的子接口必须配置arp broadcast enable才能处理来自对应VLAN的ARP广播这是很多新手配置完单臂路由后Ping不通的常见原因。思科路由器上则是用encapsulation dot1Q 10来封装。单臂路由的瓶颈很明显所有跨VLAN流量都要从交换机Trunk口进路由器再从路由器Trunk口出来链路带宽就是瓶颈只适合少量跨VLAN通信的场景。如果你公司有几十个VLAN或者有大量视频流量要跨VLAN转发单臂路由肯定吃不消。4.2 三层交换机VLANIF企业网络的主流方案企业网络里最多见的方案是三层交换机配置VLANIF接口。所谓VLANIF就是给VLAN配置一个三层逻辑接口配上IP地址这个IP就是该VLAN内终端的网关地址。三层交换机硬件上本身具备路由转发能力VLAN间流量直接走交换机内部的线速转发不需要绕到外部路由器。华为三层交换机的典型配置system-view # 创建VLAN并配置VLANIF接口地址 vlan batch 10 20 interface Vlanif 10 ip address 192.168.10.1 255.255.255.0 quit interface Vlanif 20 ip address 192.168.20.1 255.255.255.0 quit配置完VLANIF后还需要确保交换机的IP路由功能已开启。华为S系列交换机默认全局使能VLAN间路由有的型号尤其S5700早期版本需要确认ip routing是否打开否则VLANIF配置了地址但不同VLAN之间就是不通。思科三层交换机配置VLANIF用interface Vlan10然后ip address还要执行ip routing开启路由功能。这里有个容易忽略的细节VLANIF接口的地址必须和该VLAN内终端配置的网关地址一致否则终端跨VLAN通信时数据包发到交换机后交换机找不到对应路由直接丢弃。三层交换机方案还有个进阶操作是配置DHCP中继。如果DHCP服务器在VLAN 10而VLAN 20的终端需要动态获取IP就需要在VLANIF 20上配置dhcp select relay和dhcp relay server-ip指向DHCP服务器。很多项目里DHCP不通不是VLAN划分错了而是忘记在VLANIF上配置中继。4.3 从二层网络演进到三层网络架构的规划思路从整体架构看单臂路由适用于小型网络或临时方案三层交换机适用于中大型企业是当前绝对的主流更复杂的场景大量VRF、多租户、大规模数据中心则会用到核心交换机汇聚交换机接入交换机的三层网络架构。我见过太多企业从单台交换机硬扛发展到几十台交换机堆叠VLAN规划却没有同步演进导致二层环路、广播风暴、路由黑洞各种问题一起爆发。规划VLAN时不单要看当前有多少终端还要想清楚未来两三年会不会扩容VLAN号段怎么预留网关是放在汇聚层还是核心层这些都属于网络架构层面的思考但做VLAN配置时就得一并想好。5. 常见问题与排查技巧实录配置VLAN容易排障才是真正的硬功夫。我把这几年遇到的高频问题整理成一张速查表每一条都是真实踩坑换来的经验。故障现象可能原因排查/解决思路同一VLAN内终端互Ping不通Access口PVID配错或端口被生成树阻塞检查端口VLAN归属、端口状态display vlan查看端口列表跨交换机同一VLAN业务不通Trunk口未放行对应VLAN或native VLAN不一致两端核对allow-pass vlan列表检查native VLAN是否统一华为交换机Trunk口收到大量错误包Trunk口PVID与对端不一致导致VLAN标签错乱用display interface trunk查看PVID修改两端PVID一致终端能上网但跨VLAN访问服务器超时终端网关不是交换机VLANIF地址或VLANIF未配置检查终端网关地址、VLANIF IP、路由表display ip routing-table配置Trunk后端口变成ERR-DISABLE端口安全或风暴控制策略触发查看日志确认是否STP边缘端口配置错误恢复端口shutdown/undo shutdown摄像头IPC在VLAN 20但监控NVR在VLAN 10跨VLAN访问未放通或摄像头网关没配在NVR侧配置静态路由或把监控业务合并到同一VLAN并设网关这里重点讲两个高频坑。第一个是华为交换机上port trunk pvid vlan 10和port trunk allow-pass vlan 10的区别。PVID是修改Trunk端口的native VLAN也就是默认不打标签的VLANallow-pass是允许哪些VLAN的流量通过Trunk口。这两个命令经常被搞混。如果你只是allow-pass vlan 10没有改PVIDTrunk口上不带标签的流量仍然挂在VLAN 1下面如果你改了PVID为10但没加allow-passVLAN 10的帧在Trunk口上会被过滤掉。所以两者是配合使用的缺一不可。第二个坑是思科Trunk口与华为Trunk口互联。思科Trunk口默认native VLAN是1华为Trunk口默认PVID也是1理论上native VLAN一致但两边对VLAN 1帧的处理行为不同。思科在Trunk发送VLAN 1帧时也是不打标签的华为的Hybrid口对VLAN 1默认放行但不打标签这个行为看似一致一旦两边vlan 10的Access设备接入可能因为Trunk允许列表不一致出现一边通一边不通。对策是华为侧显式配置port trunk allow-pass vlan 10 20 30思科侧显式配置switchport trunk allowed vlan 10,20,30最好双方都手动指定native VLAN为同一个值比如99避免VLAN 1的默认行为带来干扰。另外一个在实际工作中经常会遇见的情况是VLAN配置正确终端却获取不到IP地址。排查这类问题不能只盯着VLAN配置还要检查DHCP服务器上是否创建了对应的作用域Scope如果作用域建错了终端根本拿不到正确的IP。在思科三层交换机上还需要确保DHCP服务全局开启service dhcp华为设备一般默认开启但某些型号在应用了安全策略后会影响DHCP报文转发。建议先把DHCP改成手工指定IP测试确定VLAN本身通不通再回头查DHCP。6. 交换机VLAN配置工具与升级运维的进阶心得VLAN配置不只是命令行操作还牵涉到设备版本、配置备份和批量化管理。我补充几个和VLAN配置直接相关的运维心得这些经验在排查时能省不少时间。6.1 关注交换机版本差异与升级注意事项不同厂商、不同型号的交换机VLAN命令细节可能略有差异。华为从S5700到S12700VLAN相关命令基本一致但低端S1700系列并不支持全部三层功能配置VLANIF前得确认型号规格。思科Catalyst 2960和Catalyst 9000系列的命令也有细微区别比如2960默认不支持switchport trunk encapsulation dot1q它只有dot1q一种封装而Catalyst 3560就需要显式指定。升级交换机IOS镜像时记得提前备份配置和版本文件升级后发现VLAN丢失多半是配置没有被正确保存到startup-config或者新老版本配置语法不兼容需要重新导入配置。6.2 批量配置VLAN的参考思路如果你管理的交换机数量很多一台台敲命令效率太低。可以先把配置脚本整理成文本再借助SecureCRT或Xshell的批量发送功能一次性向多台设备下发相同配置。但要注意批量下发前先把每台设备的接口对应关系核对清楚别把接服务器的端口划到接PC的VLAN里去。更规范的方案是用Python的Netmiko或NAPALM库做配置自动化这个属于进阶玩法适合有一定编程基础的同行。6.3 分布式虚拟交换机的VLAN配置映射在数据中心和虚拟化场景里VxLAN和分布式虚拟交换机的概念越来越多。VMware vSphere分布式交换机VDS上可以配置VLAN trunk范围让虚拟机流量带着VLAN标签上行到物理交换机。配置时需要注意VDS的VLAN类型分为VLAN Trunking、VLAN Routing和VLAN None几种。给虚拟机配置VLAN ID后上行链路到物理交换机对应Trunk口也要放行相同VLAN两边要完全对齐否则虚拟机虽然能通宿主机一跨物理机就断。这个场景虽然和传统交换机配置不太一样但底层的VLAN规划逻辑是相通的。7. 写在最后的个人体会我做过不少网络改造项目最深的感受是VLAN配置入门门槛不高但想配置得干净、可维护、可扩展非常考验工程师对业务的理解。你在给财务部划VLAN 10之前知道财务部未来要上新的ERP系统网关和网段怎么规划安全策略放行到什么粒度这些思考带来的价值远大于敲那几行命令本身。分享一个小习惯我会在每台交换机的配置顶部用注释华为可以用#注释思科可以用!注释写上配置日期、用途和上一个维护人员的联系方式同时把VLAN规划表单独存一份文档包含VLAN号、名称、网关、网段、DHCP服务器IP、所属部门和备注。遇到过交接项目时没有文档、全靠老师傅口传的情况那种崩溃感你们能体会吧。网络设备的配置可以迁移但脑袋里的规划逻辑一旦丢失后面接手的兄弟就得靠猜。另外别把VLAN配置想成一次性的工作。业务调整、人员扩容、新系统上线都在不断影响VLAN规划。每半年抽个时间做一次配置备份和VLAN使用率盘点把僵尸VLAN清理掉把新增业务的VLAN规划好这种习惯比临时抱佛脚要省心得多。毕竟网络这块稳定不出事就是最大的价值。