1. 项目概述:为什么VLAN不是“配完就完”的配置题,而是网络逻辑的第一次真正建模
你打开思科模拟器,拖出几台交换机、几台PC,连上线,敲下switchport mode access和switchport access vlan 10——看起来一切顺利,PC1能ping通PC2,PC3也能ping通PC4。但当你把PC1和PC3接在同一台交换机的不同端口,却突然发现它们不通了,而PC1和PC4(跨交换机)反而通了……这时候你才意识到:VLAN不是贴在端口上的标签,而是你在虚拟空间里亲手划出的一道道看不见的墙。它不改变物理连接,却彻底重写了数据包的流动规则。我带过不少刚接触网络实验的学员,他们最常卡住的地方,从来不是命令记不住,而是根本没想明白——VLAN的本质是广播域的隔离,而不是端口的分组;Trunk不是“让多个VLAN通过”,而是“让交换机之间能协商彼此理解哪些VLAN”。这个认知偏差,直接导致后续学STP、三层交换、ACL甚至SDN时,所有逻辑都像搭在沙子上的楼。本项目标题看似只讲“配置与分析”,实则覆盖了从二层隔离原理、帧结构变化、VTP域管理、到真实排错中80%以上VLAN类故障的定位路径。它适合三类人:一是正在备考CCNA或软考网络工程师的考生,需要把抽象概念落到可验证的比特流上;二是刚入职的网络运维新人,手头有现网设备但不敢动VLAN配置,怕一改全网断;三是自学网络的开发者,想搞懂容器网络或Kubernetes CNI插件底层为何要模拟VLAN行为。接下来我会用一台3560交换机+两台2960的真实模拟环境,不依赖任何图形化界面,全程用CLI还原一次从零构建、验证、破坏再修复的完整闭环。所有命令、输出、抓包截图逻辑都来自我过去五年在某高校网络实验室带学生做VLAN实验时积累的原始记录——包括那些教材里绝不会写的“为什么vlan.dat文件删了重启还能恢复”“为什么show interface trunk显示native VLAN是1但实际不打标签”这类细节。
2. 核心设计思路:为什么必须用三层交换机做VLAN间路由,而不是路由器+多物理接口
2.1 传统方案的致命缺陷:物理接口瓶颈与扩展性陷阱
很多人初学VLAN间通信时,第一反应是“用路由器接交换机,每个VLAN配一个物理口”。比如VLAN 10走G0/0,VLAN 20走G0/1,VLAN 30走G0/2……这在实验室里似乎可行,但只要算一笔账就立刻放弃:假设你要支持50个VLAN,就得准备50个千兆以太网口——现实中的企业级路由器根本没有这么多物理接口;就算有,光模块成本、机柜空间、线缆管理复杂度也完全不可控。更关键的是性能瓶颈:所有VLAN间流量必须经过路由器CPU逐包处理,当流量超过200Mbps时,CPU占用率就飙升到90%以上,延迟抖动剧烈。我在某公司做网络巡检时见过真实案例:财务部(VLAN 100)和HR系统(VLAN 200)部署在不同接入层交换机,管理员用路由器子接口做单臂路由,结果每月工资发放日系统响应超时,抓包发现ICMP延迟从2ms飙到800ms,根源就是路由器CPU被ARP请求风暴压垮。
2.2 三层交换机的硬件加速机制:ASIC芯片如何绕过CPU转发
现代三层交换机(如3560、3750系列)解决这个问题的核心,在于专用的ASIC(Application-Specific Integrated Circuit)转发芯片。它不是靠CPU跑软件协议栈,而是把路由表、MAC地址表、ACL规则等预编译成硬件查找表,存入TCAM(Ternary Content-Addressable Memory)芯片。当数据包进入交换机时,ASIC并行比对目的IP地址与路由表、源/目的MAC与MAC表、VLAN ID与VLAN数据库,整个过程在纳秒级完成,且不消耗CPU资源。举个具体例子:当PC1(192.168.10.10/24,VLAN 10)ping PC2(192.168.20.20/24,VLAN 20)时,流程是这样的:
- PC1发ARP请求:“谁有192.168.20.1?(即VLAN 20的SVI网关)”
- 交换机ASIC查MAC表发现该ARP请求需泛洪到VLAN 10内所有端口,但不发送到Trunk口(因为Trunk口默认不泛洪未知单播)
- SVI接口(Vlan20)收到ARP后,用自身MAC回复
- PC1拿到网关MAC,封装ICMP包,目的MAC=SVI的MAC,目的IP=192.168.20.20
- 交换机ASIC查路由表:192.168.20.0/24直连→查MAC表得PC2的MAC→直接硬件转发,不进CPU
这个过程里,CPU只在初始化SVI、学习ARP时参与,后续所有转发由ASIC流水线完成。这也是为什么3560交换机标称三层转发性能是32Gbps,而同级别路由器仅2Gbps——硬件架构决定上限。
2.3 为什么必须启用IP Routing:SVI接口的“静默状态”陷阱
新手最容易忽略的命令是ip routing。很多教程写完interface Vlan10、ip address 192.168.10.1 255.255.255.0就结束,结果测试发现VLAN间完全不通。原因在于:SVI(Switch Virtual Interface)默认是“二层逻辑接口”,只有开启全局ip routing后,它才激活三层路由功能。你可以把它理解为“开关”——关着时SVI只参与生成树、VLAN学习,开着时才加载路由协议、处理ARP、执行最长前缀匹配。实测验证方法很简单:在交换机上执行show ip route,如果输出是% IP routing not enabled,那所有SVI配置都是摆设。我曾帮某实验室调试,他们配置了5个SVI但始终不通,最后发现是忘记开ip routing,而设备重启后该命令不会自动保存,必须写入startup-config。这个细节教材很少强调,却是90%初学者首次失败的根源。
2.4 Trunk链路的Native VLAN:为什么它不打标签却最易引发安全风险
Trunk端口的switchport trunk native vlan设置常被误解为“默认VLAN”,其实它的本质是未标记帧(untagged frame)的归属VLAN。当交换机从Trunk口收到一个没有802.1Q标签的帧时,就把它归入Native VLAN。问题在于:如果两端Trunk配置的Native VLAN不一致,比如SW1设为VLAN 1,SW2设为VLAN 99,那么从SW1发往SW2的未标记帧会被SW2当成VLAN 99的流量处理,导致跨交换机通信错乱。更危险的是安全层面:攻击者可以伪造大量未标记帧,利用Native VLAN的隐式归属特性,绕过基于VLAN的访问控制。因此行业最佳实践是:显式指定一个不使用的VLAN(如VLAN 999)作为Native VLAN,并在所有Trunk口统一配置,同时禁用VLAN 1。我在某次渗透测试中就利用过这个漏洞:通过向Trunk口发送伪造的ARP响应(无标签),成功让目标服务器误认为攻击机属于管理VLAN,从而获取了核心交换机的SNMP读取权限。
3. 实操全流程:从物理拓扑搭建到抓包验证的每一步细节
3.1 物理拓扑与设备选型依据:为什么不用2950而坚持用3560
本次实验采用以下拓扑:
- 核心层:Cisco Catalyst 3560-24PS(带三层路由能力)
- 接入层:两台Cisco Catalyst 2960-24TT(纯二层交换机)
- 终端:四台PC(PC1~PC4),分别连接至2960-A的Fa0/1、Fa0/2,2960-B的Fa0/1、Fa0/2
选择3560而非更老的2950,核心原因有三点:
- 硬件支持SVI:2950系列不支持
interface VlanX命令,无法实现三层交换,只能依赖外部路由器; - TCAM容量足够:3560的TCAM可存储8K条三层路由条目,远超实验所需,而2960仅支持基本ACL,无法做精细策略;
- 真实场景复现:当前企业网核心层普遍采用3560/3750系列,其IOS版本(12.2(55)SE)与现网设备高度一致,避免“实验会、现网不会”的割裂感。
提示:思科模拟器(Packet Tracer或EVE-NG)中务必选择3560型号,若误选2960会导致
ip routing命令不可用,报错% Invalid input detected at '^' marker.
3.2 交换机基础配置:时间同步、主机名与密码策略的实战意义
在开始VLAN配置前,必须完成三项基础加固,否则后续排错将陷入混乱:
! 步骤1:设置唯一主机名(避免多设备SSH时混淆) Switch>enable Switch#configure terminal Switch(config)#hostname SW-Core SW-Core(config)#end ! 步骤2:配置本地用户与强密码(防止未授权访问) SW-Core#configure terminal SW-Core(config)#username admin privilege 15 secret My$tr0ngP@ss2024 SW-Core(config)#line vty 0 15 SW-Core(config-line)#login local SW-Core(config-line)#transport input ssh SW-Core(config-line)#exit ! 步骤3:启用NTP时间同步(关键!VLAN日志、证书验证依赖准确时间) SW-Core(config)#ntp server 192.168.1.100 ! 指向内网NTP服务器 SW-Core(config)#clock timezone CST 8 ! 设置时区为什么时间同步如此重要?举个真实案例:某医院HIS系统升级后,护士站PC无法访问药房数据库,抓包发现TCP三次握手正常,但应用层SSL握手失败。最终排查发现是核心交换机时间比证书颁发机构快了3分钟,导致SSL证书被判定为“尚未生效”。而VLAN相关的日志(如%SW_VLAN-4-VLAN_CREATE)若时间错乱,会让故障时间线完全失真。
3.3 VLAN数据库创建与端口分配:vlan.dat文件的双面性
VLAN信息并非只存在运行配置中,而是由两个独立系统维护:
- 运行配置(running-config):存储
vlan 10、name Sales等文本指令; - VLAN数据库(vlan.dat):二进制文件,存储VLAN ID、名称、状态、MTU等元数据,位于flash:/目录。
创建VLAN的标准流程如下:
SW-Core#vlan database SW-Core(vlan)#vlan 10 name Sales SW-Core(vlan)#vlan 20 name HR SW-Core(vlan)#vlan 30 name IT SW-Core(vlan)#exit注意:vlan database模式已逐步被configure terminal下的vlan 10命令替代,但旧设备仍广泛使用。关键点在于——vlan database退出时会自动写入vlan.dat,而configure terminal模式下的vlan 10命令不会。这意味着如果你在configure terminal中创建VLAN后直接copy running-config startup-config,重启后VLAN会消失!正确做法是:要么全程用vlan database,要么在configure terminal中创建后,手动执行write memory(等价于copy running-config startup-config)并确认vlan.dat已更新。
注意:删除vlan.dat文件后重启,交换机会重建该文件,但只保留默认VLAN 1,其他VLAN全部丢失。这是灾难恢复的关键知识点——备份vlan.dat比备份config更重要。
3.4 接入层交换机配置:Access端口的严格模式与安全增强
在2960-A上配置PC1(Fa0/1)、PC2(Fa0/2):
SW-A#configure terminal SW-A(config)#interface range fa0/1 - 2 SW-A(config-if-range)#switchport mode access SW-A(config-if-range)#switchport access vlan 10 SW-A(config-if-range)#spanning-tree portfast ! 启用PortFast,跳过STP监听/学习状态 SW-A(config-if-range)#switchport port-security maximum 1 ! 限制端口只学1个MAC SW-A(config-if-range)#switchport port-security violation restrict ! MAC违规时丢弃数据包 SW-A(config-if-range)#exit这里有几个易被忽略的细节:
spanning-tree portfast:接入端口连接PC时,STP默认需30秒才能转发,开启后立即进入转发状态,否则PC获取IP会超时;switchport port-security:防止用户私接Hub或手机热点,一旦检测到第二个MAC地址,端口自动shutdown(若设为restrict则只丢包不关端口);switchport mode access必须显式声明:虽然Fa0/1默认是access模式,但某些IOS版本在配置错误后可能变为dynamic desirable,导致VLAN泄露。
3.5 Trunk链路配置:DTP协议的风险与手工强制模式的必要性
Trunk配置看似简单,但DTP(Dynamic Trunking Protocol)自动协商机制是最大隐患:
! 错误示范:依赖DTP自动协商(不推荐) SW-A(config)#interface fa0/24 SW-A(config-if)#switchport mode dynamic desirable ! 正确做法:手工强制Trunk并禁用DTP SW-A(config)#interface fa0/24 SW-A(config-if)#switchport mode trunk SW-A(config-if)#switchport nonegotiate ! 关闭DTP,防止被恶意协商 SW-A(config-if)#switchport trunk allowed vlan 10,20,30 ! 显式允许VLAN,禁止VLAN 1 SW-A(config-if)#switchport trunk native vlan 999 ! 设置专用Native VLANDTP的风险在于:攻击者可伪造DTP帧,诱使交换机将普通接入端口转为Trunk,从而接收所有VLAN流量。2017年某金融公司内网渗透中,攻击者正是利用此漏洞,通过向办公区交换机发送伪造DTP帧,成功将打印机端口变为Trunk,进而窃取了财务VLAN的数据库备份流量。因此生产环境必须关闭DTP,手工配置Trunk参数。
3.6 三层交换机SVI配置:子网划分与ARP代理的协同逻辑
在3560核心交换机上配置SVI:
SW-Core#configure terminal SW-Core(config)#ip routing ! 必须开启! SW-Core(config)#interface Vlan10 SW-Core(config-if)#ip address 192.168.10.1 255.255.255.0 SW-Core(config-if)#no shutdown SW-Core(config-if)#exit SW-Core(config)#interface Vlan20 SW-Core(config-if)#ip address 192.168.20.1 255.255.255.0 SW-Core(config-if)#no shutdown SW-Core(config-if)#exit SW-Core(config)#interface Vlan30 SW-Core(config-if)#ip address 192.168.30.1 255.255.255.0 SW-Core(config-if)#no shutdown SW-Core(config-if)#exit关键点解析:
- 子网掩码必须精确匹配终端配置:若PC1配置192.168.10.10/24,SVI就必须配255.255.255.0,配成/16会导致ARP请求发向错误网段;
- SVI接口默认关闭:
no shutdown必不可少,否则show ip interface brief中状态为administratively down; - ARP代理(Proxy ARP)自动启用:当PC1 ping PC2时,SW-Core会用自己的MAC响应PC1的ARP请求,再用自己的MAC向PC2发ARP——这个过程对终端透明,但抓包可见两次ARP交互。
3.7 终端PC配置与连通性验证:为什么ping通不等于业务可用
PC1~PC4的IP配置如下:
| PC | IP地址 | 子网掩码 | 默认网关 |
|---|---|---|---|
| PC1 | 192.168.10.10 | 255.255.255.0 | 192.168.10.1 |
| PC2 | 192.168.10.20 | 255.255.255.0 | 192.168.10.1 |
| PC3 | 192.168.20.10 | 255.255.255.0 | 192.168.20.1 |
| PC4 | 192.168.20.20 | 255.255.255.0 | 192.168.20.1 |
验证步骤必须按优先级执行:
- 同VLAN内连通性:PC1 ping PC2 → 验证接入层VLAN隔离是否生效;
- 跨VLAN连通性:PC1 ping PC3 → 验证SVI路由与Trunk是否正常;
- 跨交换机同VLAN:PC1 ping PC4(需确保PC4在VLAN 10)→ 验证Trunk透传能力;
- DNS与应用层:
nslookup www.baidu.com→ 验证网关是否正确转发UDP 53端口。
注意:若PC1能ping通PC3但无法访问HTTP服务,大概率是防火墙或ACL阻止了TCP 80端口,而非VLAN配置问题。VLAN只管二层可达性,三层以上需单独检查。
3.8 抓包分析:802.1Q标签的字节级解构
在PC1上启动Wireshark,过滤icmp && vlan,捕获PC1 ping PC3的数据包:
- 第1帧(PC1→SW-A):源MAC=PC1,目的MAC=SW-A的MAC,无802.1Q标签,因为是接入端口发出的普通以太网帧;
- 第2帧(SW-A→SW-Core):源MAC=SW-A,目的MAC=SW-Core,带802.1Q标签,TPID=0x8100,TCI=0x000A(VLAN 10),表明该帧属于VLAN 10;
- 第3帧(SW-Core→SW-B):源MAC=SW-Core,目的MAC=SW-B,带802.1Q标签,TCI=0x0014(VLAN 20),因路由后需转发到VLAN 20;
- 第4帧(SW-B→PC3):源MAC=SW-B,目的MAC=PC3,无802.1Q标签,因接入端口自动剥离标签。
这个过程清晰展示了VLAN标签的生命周期:只在Trunk链路上传输,接入端口进出均剥离。若在SW-Core的Gi0/1口抓包看到无标签帧,说明Trunk配置失败;若在PC3收到带标签帧,则证明接入端口未正确配置为access模式。
4. 故障排查实战:从show命令输出到比特流的逐层定位法
4.1 分层诊断模型:为什么必须按OSI 1→2→3→4顺序排查
VLAN故障排查必须遵循严格的分层顺序,跳过任一层都会浪费数小时:
- Layer 1(物理层):检查线缆是否连接、端口指示灯是否亮起、Duplex/Speed是否匹配(
show interfaces status); - Layer 2(数据链路层):验证VLAN成员关系、Trunk状态、MAC地址学习(
show vlan brief、show interfaces trunk); - Layer 3(网络层):确认SVI状态、路由表、ARP表(
show ip interface brief、show ip route、show arp); - Layer 4+(传输层以上):检查ACL、防火墙、应用服务状态(
show access-lists、telnet 192.168.20.10 22)。
我曾处理过一个典型故障:PC1能ping通PC2(同VLAN),但无法ping通PC3(跨VLAN)。按顺序排查:
- L1:
show interfaces status显示所有端口up/down正常; - L2:
show vlan brief确认PC1在VLAN 10,PC3在VLAN 20;show interfaces trunk显示Trunk口允许VLAN 10,20,但Native VLAN显示为1(与对端不一致); - 修正Native VLAN后,问题解决。若跳过L2直接查L3,会陷入
show ip route一切正常的假象中。
4.2 关键show命令输出解读:从字符到逻辑的映射
show vlan brief输出详解
VLAN Name Status Ports ---- -------------------------------- --------- ------------------------------- 1 default active Fa0/23, Fa0/24 10 Sales active Fa0/1, Fa0/2 20 HR active Fa0/3, Fa0/4 1002 fddi-default act/unsup 1003 token-ring-default act/unsup- Status列:
active表示VLAN已创建且有端口成员;act/unsup表示系统保留VLAN,不可删除; - Ports列:仅显示接入端口(access port),Trunk口不会列出,这是新手最大误区;
- VLAN 1问题:默认所有端口属于VLAN 1,若未显式分配,PC将自动加入VLAN 1,导致隔离失效。
show interfaces trunk输出详解
Port Mode Encapsulation Status Native vlan Fa0/24 on 802.1q trunking 999 Port Vlans allowed on trunk Fa0/24 10,20,30 Port Vlans allowed and active in management domain Fa0/24 10,20,30 Port Vlans in spanning tree forwarding state and not pruned Fa0/24 10,20,30- Mode列:
on表示手工Trunk,desirable表示DTP协商中; - Native vlan列:必须两端一致,否则未标记帧归属错乱;
- Vlans allowed列:显示配置允许的VLAN,但若VLAN未在
vlan.dat中创建,实际不生效。
show ip interface brief输出详解
Interface IP-Address OK? Method Status Protocol Vlan1 unassigned YES unset administratively down down Vlan10 192.168.10.1 YES manual up up Vlan20 192.168.20.1 YES manual up up- Status列:
up表示接口协议up(二层UP),Protocol列up表示三层UP; - Vlan1状态:若
Status为administratively down,说明未执行no shutdown; - IP-Address列:若为
unassigned,说明未配置IP地址或配置错误。
4.3 典型故障速查表:10类高频问题与一键修复命令
| 故障现象 | 可能原因 | 定位命令 | 修复命令 | 实操心得 |
|---|---|---|---|---|
| PC1与PC2同VLAN不通 | 端口未加入VLAN;STP阻塞端口 | show vlan brief、show spanning-tree interface fa0/1 | switchport access vlan 10、spanning-tree portfast | PortFast必须在接入端口启用,否则PC获取IP超时 |
| 跨VLAN ping不通 | ip routing未开启;SVI未no shutdown | show ip route、show ip interface brief | ip routing、interface Vlan10; no shutdown | show ip route输出为空即代表路由未启用 |
Trunk口显示not trunking | DTP协商失败;物理链路异常 | show interfaces fa0/24 switchport、show dtp interface fa0/24 | switchport mode trunk; switchport nonegotiate | 手工Trunk必须禁用DTP,否则易受干扰 |
| PC能ping通网关但无法上网 | 默认网关指向错误;ACL阻止流量 | `show running-config | include ip route、show access-lists` | ip route 0.0.0.0 0.0.0.0 192.168.10.254、no access-list 101 |
| VLAN间部分通、部分不通 | Trunk允许VLAN列表不一致;Native VLAN不匹配 | show interfaces trunk、show vlan | switchport trunk allowed vlan 10,20,30、switchport trunk native vlan 999 | 两端Trunk配置必须完全镜像,建议用copy命令批量下发 |
| 重启后VLAN消失 | 未保存vlan.dat;配置未写入startup-config | dir flash:、show startup-config | write memory、copy running-config startup-config | vlan.dat文件必须与config同步备份 |
| PC获取不到IP地址 | DHCP服务器未配置;SVI网关未启用DHCP中继 | show dhcp lease、`show run | section dhcp` | ip dhcp pool VLAN10; network 192.168.10.0 255.255.255.0; default-router 192.168.10.1 |
| Trunk口收到大量CRC错误 | 双工模式不匹配;线缆质量差 | show interfaces fa0/24 | interface fa0/24; duplex full; speed 1000 | 强制设置双工与速率,禁用auto-negotiation |
| VLAN间延迟极高 | TCAM表项耗尽;CPU过载 | show platform tcam utilization、show processes cpu sorted | no ip route-cache(旧版)、升级IOS版本 | TCAM满载时,新流必须走慢路径,延迟飙升 |
| 无法SSH登录交换机 | VTY线路未启用;ACL拒绝访问 | show line、show access-lists | line vty 0 15; login local; transport input ssh、no access-list 101 | SSH需RSA密钥,首次登录前执行crypto key generate rsa |
4.4 深度排错技巧:如何用debug命令捕捉瞬态故障
debug命令是定位偶发故障的利器,但必须谨慎使用:
! 开启ARP调试(仅在怀疑网关响应异常时) SW-Core#debug arp ARP debugging is on ! 开启VLAN事件调试(VLAN创建/删除时触发) SW-Core#debug vlan events VLAN event debugging is on ! 开启Trunk协议调试(DTP协商过程) SW-Core#debug dtp packets DTP packet debugging is on关键原则:
debug会严重消耗CPU,必须在低峰期使用,且开启后立即undebug all;- 优先用
debug arp:当PC能ping通网关但无法访问外网时,看是否收到ARP响应; debug dtp仅用于DTP协商失败场景,正常手工Trunk无需开启;- 所有debug输出需配合
terminal monitor在Console中查看,SSH会话中默认不显示。
我曾用debug arp定位过一个诡异故障:PC1能ping通SVI 192.168.10.1,但无法访问同一VLAN内的Web服务器。抓包发现PC1发ARP请求后,SVI未响应。开启debug arp后发现,SVI接口因ARP表满(1024条)而丢弃新请求。解决方案是clear arp-cache并增大ARP表大小:ip arp cache-size 2048。
5. 进阶应用场景:VLAN如何支撑现代网络架构的三大基石
5.1 与生成树协议(STP)的协同:为什么RSTP比PVST+更适合VLAN环境
传统STP(IEEE 802.1D)为整个交换网络计算一棵生成树,所有VLAN共享同一拓扑,导致部分链路长期阻塞,带宽利用率低下。而PVST+(Per-VLAN Spanning Tree Plus)为每个VLAN单独计算生成树,理论上可提升链路利用率。但问题在于:PVST+需为每个VLAN维护独立的BPDU,当VLAN数量超过50时,CPU负载急剧上升,且收敛时间不稳定。我在某高校数据中心部署时,曾配置120个VLAN的PVST+,结果核心交换机CPU持续95%,STP拓扑每3分钟刷新一次,导致VLAN间路由短暂中断。
RSTP(IEEE 802.1w)通过引入Proposal/Agreement机制,将收敛时间从30秒缩短至1秒内,且不依赖VLAN数量。更关键的是MSTP(Multiple STP),它将多个VLAN映射到一个MST实例(MSTI),例如:
SW-Core(config)#spanning-tree mst configuration SW-Core(config-mst)#instance 1 vlan 10,20,30 SW-Core(config-mst)#instance 2 vlan 40,50,60 SW-Core(config-mst)#name REGION1 SW-Core(config-mst)#revision 1这样只需维护2个生成树实例,而非120个,CPU负载下降70%。现代网络设计中,MSTP已成为VLAN规模超过20时的标配。
5.2 与ACL结合实现微隔离:VLAN内安全边界的精细化控制
VLAN提供广播域隔离,但同一VLAN内主机仍可互访。要实现更细粒度控制,必须结合ACL:
! 创建标准ACL,拒绝VLAN 10内PC1访问PC2 SW-Core(config)#access-list 101 deny ip host 192.168.10.10 host 192.168.10.20 SW-Core(config)#access-list 101 permit ip any any ! 应用到SVI入方向(控制进入VLAN 10的流量) SW-Core(config)#interface Vlan10 SW-Core(config-if)#ip access-group 101 in注意ACL应用方向:
in:过滤进入SVI接口的流量(即从PC1发往其他VLAN的流量);out:过滤离开SVI接口的流量(即从其他VLAN发往PC1的流量)。
在医疗系统中,我们曾用此方案隔离CT室(VLAN 100)与挂号处(VLAN 101):虽属不同VLAN,但挂号处需读取CT报告,故允许特定端口(TCP 8080);而CT室禁止访问互联网,通过ACLdeny ip 192.168.100.0 0.0.0.255 any实现。
5.3 与无线网络的VLAN映射:如何让同一SSID承载多业务
企业无线AP通常支持“基于用户的VLAN分配”,即不同用户认证后接入不同VLAN:
! 在WLC(无线控制器)上配置 (WLC) >config wlan create 10 Guest-WiFi (WLC) >config wlan security wpa akm psk set-key ascii MyGuestKey 10 (WLC) >config wlan interface 10 management ! 将WLAN 10绑定到management接口(对应VLAN 10) (WLC) >config wlan enable 10此时,员工用AD账号认证后接入VLAN 20(内网),访客用预共享密钥接入VLAN 10(隔离互联网)。这种模式下,物理AP端口必须配置为Trunk,允许多VLAN通过,否则所有无线用户将被强制归入Native VLAN。我在某酒店部署时,因AP上联口未配Trunk,导致所有客人WiFi都连入管理VLAN,造成严重安全事件。
5.4 与SDN控制器的对接:VLAN如何成为传统网络向自动化演进的桥梁
在OpenDaylight或ONOS等SDN控制器中,VLAN是南向接口(OpenFlow)与传统网络的翻译层。控制器下发流表时,会将VLAN ID作为匹配字段:
{ "flow-node-inventory:flow": [ { "id": "1", "match":