news 2026/10/20 3:39:25

VLAN基本原理详解:从广播域隔离到跨交换机配置

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
VLAN基本原理详解:从广播域隔离到跨交换机配置

很久没碰交换机的朋友问我一个问题:公司两台交换机,接了几十台电脑,最近网络卡得离谱,一开视频会议,全楼都掉线,问我怎么救。我看了一下拓扑,二十多台设备挤在同一个二层广播域里,ARP、DHCP、NetBIOS的广播包满天飞,一台机器的网卡出点小毛病,能把整个楼层的网络拖垮。这事的解法,说穿了就四个字母:VLAN。

“学习日志13-VLAN基本原理”这条笔记,其实就是把我自己从“会敲命令”到“想明白原理”的那段过程复盘一遍。VLAN(Virtual Local Area Network,虚拟局域网)不是新东西,但它是一切的根基——你后面学三层交换、网关冗余、无线漫游、防火墙虚拟化,都绕不开VLAN这套逻辑。这篇文章不打算抄手册,就按我实际理解这个知识点的顺序来写:先想清楚它解决什么,再看它怎么实现,然后怎么配、怎么排错。新手看完能真正上手,老手也能当个梳理。

1. 为什么非学VLAN:先聊聊没有VLAN的局域网有多混乱

1.1 一个广播域的失控现场

把几十台电脑直接扔在同一个二层网络上,也就是一台交换机或者几台交换机互联,不加任何隔离,会出现什么情况?

先说广播。只要有一台设备发ARP请求(问“谁的IP是192.168.1.10,把MAC告诉我”),这个广播帧会被交换机转发给除接收端口外的所有端口。也就是说,你的一台电脑每次上网前寻址,都得“喊一嗓子”,全网都听。这在一二十台设备时还能忍,到了两百台,广播帧的占比可能达到全网流量的20%~30%,有效带宽被蚕食,终端网卡的中断频率也在飙升。更麻烦的是广播风暴——如果网上出现一个环路,或者某台设备的网卡物理层出故障疯狂发帧,广播帧会在交换机之间反复复制、转发,瞬间占满所有链路带宽,表现就是整个网络“死机”。这种故障你抓包都来不及,交换机CPU先被灌死了。

再说安全和管理。同一个二层网络里,只要插上网线,就能直接嗅探到同网段其他设备的通信流量。抓包工具一开,HTTP明文账号密码、文件共享数据全裸露。部门之间的敏感数据毫无隔离,出了事你连边界都画不出来。而且排障也痛苦:全楼一个广播域,一台设备出现问题,你根本没法缩小范围,只能一台一台拔线试。

1.2 VLAN的解决思路:在物理网络里切出逻辑隔离

VLAN的思路,是在一台(或一组)物理交换机上,通过配置把端口划分成多个逻辑上独立的局域网。每一个VLAN就是一个独立的广播域。VLAN 10里的广播帧,不会传到VLAN 20里去;反过来也一样。

这就等于你在同一台物理设备上,凭空切出了几台“虚拟交换机”,互不相通。这个隔离是数据链路层(二层)层面的,成本低、效果好,不用增加任何硬件。原来需要买多台物理交换机才能隔离的两个部门,现在一台设备上就搞定了。

不过要注意:VLAN隔离的是广播域和二层通信。默认情况下,VLAN 10的主机和VLAN 20的主机是不能直接通信的,因为它们在逻辑上是两栋楼。要跨VLAN通信,必须走三层(路由)。这个后面细说。

2. VLAN的划分方式:除了按端口,还有什么招

2.1 端口划分法:最常用、最靠谱

基于端口划分VLAN,就是给交换机的每个物理端口指定一个VLAN ID。比如把交换机的1~8号端口划给VLAN 10(技术部),9~16号端口划给VLAN 20(财务部)。接在1号口的电脑,不管是谁、不管MAC地址是什么,都默认属于VLAN 10。

这种方式最直观,配置最简单,一个端口只能属于一个VLAN(特殊的多VLAN端口后续讲Trunk)。它的缺点是:如果你把电脑从1号口挪到9号口,它的VLAN就从10变成了20,网络权限跟着变。如果办公区调整,IT得跟着去交换机上改端口配置。端口划分适用于大部分固定工位的企业内网。

2.2 基于MAC、基于IP、基于协议的划分

除了端口,还有几种划分方式,我在实际中见过,但用的场景有限。

基于MAC地址划分VLAN,是预先在交换机上建立MAC地址和VLAN ID的对应表,设备接入时根据MAC自动划入对应VLAN。好处是设备挪地方了,VLAN不变,对移动办公友好。坏处是MAC地址表维护量大,而且MAC地址可以伪造,安全性并不高。一般只在某些特定场景结合安全策略使用,全公司范围用这个的很少。

基于IP子网划分,是根据报文的源IP地址决定它属于哪个VLAN。这个适合要兼顾IP地址规划的场合,但交换机得检查三层信息,性能开销比端口划分大。基于协议划分(如IPv4流量、IPv6流量走不同VLAN)更是少见。

我的建议:刚开始学、实际项目里,八成以上的场景用基于端口划分就够了。其余的可以了解,别钻牛角尖。

3. 802.1Q标签:数据结构层面的那点事儿

3.1 交换机怎么知道一个帧属于哪个VLAN

端口划分好之后,交换机内部处理帧时,是知道每个帧属于哪个VLAN的。但问题来了:帧在交换机内部走的时候可以靠“内部记忆”,但一台交换机要把帧发给另一台交换机时,对方怎么知道这个帧属于哪个VLAN?

解决方法是:在以太网帧头的源MAC地址和类型字段之间,插入一个4字节的VLAN标签(Tag),把VLAN ID写进去。这就是IEEE 802.1Q标准。

3.2 4字节标签的字节级拆解

802.1Q标签是4字节,紧跟源MAC后面,具体拆开看是两部分:

部分长度内容
TPID(Tag Protocol Identifier)2字节固定值0x8100,相当于一个“类型标记”,告诉交换机这个帧带VLAN标签
TCI(Tag Control Information)2字节里面包含PCP、DEI、VID

TCI这2字节里:

  • VID(VLAN ID)占12bit,取值范围0~4095。0和4095保留,实际可用的是1~4094。
  • PCP(Priority Code Point)占3bit,表示802.1p优先级,一共8个等级,用于QoS。
  • DEI(Drop Eligible Indicator)占1bit,用于拥塞时标记可丢弃的帧。

所以VLAN ID不是随便写的,上限就是4094。为什么很多公司在规划IP时不约而同用VLAN 10、20、30?纯粹是为了好记,跟网段后面对应。比如VLAN 10对应192.168.10.0/24,VLAN 20对应192.168.20.0/24,排错时看一眼IP就能猜到在哪个VLAN。

4. 端口角色:Access和Trunk一个都不能错

4.1 Access端口:给电脑用的“单车道”

Access端口一般接终端设备——电脑、打印机、IP电话。它的特点是:这个端口只能属于一个VLAN,也就是我们常说的PVID(Port VLAN ID)。

Access端口收到从设备发来的帧时,有两种情况:

  • 如果收到的是不带标签的帧(普通电脑网卡发出的都是这种),交换机就给这个帧打上这个端口的PVID,按PVID对应的VLAN来处理。
  • 如果收到的是带标签的帧,而且标签里的VID等于PVID,那就正常转发;如果不等,很多交换机会直接丢弃。

Access端口向设备发帧时,会把标签剥掉,还原成普通无标签的以太网帧再发出去。电脑网卡感知不到VLAN的存在,它就是“什么标签都没有”。这也是为什么Access口在交换机上看起来是“进去打标签,出去剥标签”。

4.2 Trunk端口:交换机之间的“主干道”

Trunk端口一般接两台交换机之间,或者交换机接路由器/防火墙。它的作用是让多个VLAN的流量在一条物理链路上同时传输。

Trunk端口默认情况下允许所有VLAN通过(实际操作中厂商默认策略不同,有的默认全放行,有的默认只放行VLAN 1,配的时候务必确认)。帧从Trunk口出去时,不会去掉标签,保留着802.1Q标签发到对端交换机的Trunk口,对方一看帧里的VID,就知道该按哪个VLAN处理。

这里有个重要细节:Native VLAN(原生VLAN)。默认一般是VLAN 1。Trunk口上属于Native VLAN的帧,在链路上传输时是不打标签的。两个交换机就是为了让彼此的Native VLAN保持一致,如果不一致,VLAN 1的流量在链路上就会因为“不带标签”而被对端按对端的PVID误解处理,很可能出现奇怪的互通问题。很多“通了部分VLAN,VLAN 1不通”的怪故障,根源就在这里。

4.3 Hybrid端口:混合模式,我平时很少用

介于Access和Trunk之间还有一种Hybrid口,它允许在出方向指定某些VLAN剥标签、某些VLAN保留标签,比较灵活,但也比较绕。华为等厂商的设备上常见,用于一些特殊组网需求。我对新手说句实在话:先把Access和Trunk理解透,Hybrid等你真正遇到需要它的场景,再回来查文档不迟。绝大多数中小型网络,用不到Hybrid。

5. 配置实操:两分钟搭一个跨交换机的VLAN环境

5.1 实验拓扑与规划

假设场景:两台交换机SW-A和SW-B,需要让技术部(VLAN 10)和财务部(VLAN 20)的电脑能各自互通,且技术部的电脑可能接在SW-A上,也可能接在SW-B上。

交换机端口VLAN说明
SW-AGE0/0/1 ~ GE0/0/8VLAN 10接技术部电脑
SW-AGE0/0/9 ~ GE0/0/16VLAN 20接财务部电脑
SW-AGE0/0/24Trunk连SW-B的GE0/0/24
SW-BGE0/0/1 ~ GE0/0/8VLAN 10接技术部电脑
SW-BGE0/0/9 ~ GE0/0/16VLAN 20接财务部电脑
SW-BGE0/0/24Trunk连SW-A的GE0/0/24

注意:交换机默认所有端口都在VLAN 1里,所以要先把相应端口从VLAN 1挪到目标VLAN。

5.2 基础配置命令(以常见CLI风格为例)

以下是我写的类命令行脚本,请结合你手头设备的具体语法微调、确认:

# SW-A 上创建VLAN vlan 10 description Tech_Dept exit vlan 20 description Finance_Dept exit # 将端口从默认VLAN 1改划到VLAN 10 interface GigabitEthernet 0/0/1 port link-type access port default vlan 10 exit # 批量操作端口也是一样的逻辑,按需重复即可 interface GigabitEthernet 0/0/9 port link-type access port default vlan 20 exit # SW-A 上连SW-B的Trunk口 interface GigabitEthernet 0/0/24 port link-type trunk port trunk allow-pass vlan 10 20 exit

SW-B上的配置思路完全一样,注意两端Trunk口放行的VLAN列表要一致(10和20)。配完后:

  • 技术部的电脑配置192.168.10.x/24网段,网关暂不配或者后面配;
  • 财务部的电脑配置192.168.20.x/24网段。

同一VLAN内、接在不同交换机上的电脑,应当能直接互相ping通。这就是VLAN跨交换机生效的直接证明。

提示:很多排错案例都是“Trunk两端放行VLAN不一致”。你在SW-A上放行了VLAN 10 20,却有人在SW-B的Trunk口上只放了VLAN 10,那VLAN 20跨交换机就肯定不通。检查这种问题时,别只看一台交换机,两端一定要对起来看。

6. 跨VLAN通信:隔离之后怎么连起来

6.1 单臂路由:用一台路由器打通多个VLAN

VLAN把二层隔离了,但业务上经常需要跨VLAN访问,比如财务要访问技术部的ERP服务器。这时就需要三层路由功能。最简单的办法是单臂路由(Router-on-a-Stick)。

把路由器的物理接口(比如GE0/0/0)用一条线接到交换机的Trunk口上。然后在路由器的这个物理口上创建多个子接口,每个子接口对应一个VLAN的网关。

例如:

# 路由器子接口配置 interface GigabitEthernet0/0/0.10 dot1q termination vid 10 ip address 192.168.10.1 255.255.255.0 arp broadcast enable exit interface GigabitEthernet0/0/0.20 dot1q termination vid 20 ip address 192.168.20.1 255.255.255.0 arp broadcast enable exit

VLAN 10的设备把网关指向192.168.10.1,VLAN 20的设备把网关指向192.168.20.1。两个VLAN的设备要互访时,报文先送到各自网关(也就是路由器子接口),路由器查路由表,发现目标网段在另一个子接口上,于是把报文从另一个子接口转发出去。这个过程就是路由。由于中间只有一条物理链路,多个VLAN的流量都在这一条链路上跑,所以叫“单臂路由”。

单臂路由的瓶颈很明显:所有跨VLAN流量都挤在那一条物理链路和路由器上。VLAN多了、流量大了,路由器CPU就扛不住。所以它适合小规模、跨VLAN流量不大的场景。

6.2 三层交换机:我更推荐的生产环境方案

比单臂路由更常见的是三层交换机。三层交换机能同时做二层交换和三层路由。你可以在交换机上直接创建VLAN虚接口(SVI,Switch Virtual Interface),也就是给VLAN配置一个IP地址作为网关,然后在交换机内部启用路由。

配置逻辑:

# 三层交换机上为VLAN 10配置虚接口 interface Vlanif10 ip address 192.168.10.1 255.255.255.0 exit interface Vlanif20 ip address 192.168.20.1 255.255.255.0 exit

然后在系统视图下开启IP路由功能(具体命令取决于品牌,有的默认开启)。之后VLAN 10和VLAN 20的主机把网关指向192.168.10.1和192.168.20.1,就能通过三层交换机完成互访。因为转发在交换机内部的硬件芯片上完成,速度远高于路由器软件转发,所以在企业组网里,三层交换机几乎成了标准配置。

需要留意的是:三层交换机支持的是“VLAN间路由”,也就是不同网段的三层转发。如果你要访问外网,还是需要接一台路由器或防火墙做NAT和出口策略,这不是交换机本身管的事。

7. 我在配置VLAN时踩过的坑与排查技巧

7.1 最常见的“不通”:Trunk没有放行VLAN

现象:电脑在同一个VLAN,却在两个交换机上ping不通;或者某个VLAN的流量只有一部分能通。

排查顺序:

  1. 先确认两台交换机的Trunk状态,用命令查看Trunk口的PVID、允许通过的VLAN列表、Native VLAN。
  2. 确认两端Trunk的放行VLAN列表完全一致。
  3. 确认链路是up的,物理层没问题。
  4. 再分别查看Access口是否划到了正确的VLAN。

这类问题八成是配置不一致,很少是硬件坏了。

7.2 帧标签“打架”:Native VLAN不一致

前面说过,Trunk链路上Native VLAN的帧是不打标签的。如果SW-A的Native VLAN是VLAN 1,SW-B的Native VLAN被改成了VLAN 99,那么SW-A发出VLAN 1的无标签帧,SW-B收到后会按自己的PVID视为VLAN 99的帧来处理,两边各说各话。结果就是VLAN 1的设备跨交换机通信出问题,而其他VLAN看着都正常,因为这个现象太隐蔽,很多人查半天查不到。处理办法:把Trunk两端的Native VLAN改成一致,或者明确规划不使用默认VLAN 1承载业务(我习惯把业务VLAN从10、20开始规划,VLAN 1就保留给管理用途)。

7.3 安全上的几个底线配置

VLAN的安全意义不亚于性能。我见过不少公司,VLAN划了,但Access口接电脑的端口上什么保护都没做。结果有人拿着笔记本插到工位上,直接获得了该VLAN的网络权限。

建议至少做这几件事:

  • Access口开启端口安全(限制最大MAC地址数),防止私接小路由器或无线路由器。
  • 不需要DHCP服务的VLAN,在交换机上配置DHCP Snooping,防止局域网私设DHCP服务器分配错误网络参数。
  • 访客网络单独建一个VLAN,和办公VLAN完全隔离,要访问什么资源单独放策略。
  • Trunk口只放行必要的VLAN,不要把Trunk口接到普通终端上,防止有人抓包看到所有VLAN的标签帧。

7.4 排查VLAN问题的实用命令思路

我排VLAN问题时会顺着“物理层→二层→三层”的次序看:

层次检查内容对应命令/方法
物理层端口up、光模块正常、线缆类型对display interface brief
二层Trunk放行VLAN、PVID、端口VLAN归属display port vlan / display vlan
三层网关是否通、路由表是否完整ping 网关、display ip routing-table

抓包工具也是利器。在电脑上抓包,如果能收到ARP请求但没回应,基本可以判断VLAN隔离生效但三层没通;如果连ARP请求都看不到,问题大概率在二层端口配错或Trunk没有放行。

8. 最后补充几个我自己的习惯

给其他人排完VLAN的坑,我总结出几条“非手册级”的习惯,也算跟前面所有内容做个呼应。

第一个习惯是画拓扑。别觉得画图浪费时间,哪怕用最简单的方式画一张结构图,标清楚交换机端口、VLAN、IP网段归属,排错效率能提高一个档次。大多数VLAN故障都是“人脑里没有图”造成的。

第二个习惯是规划不留漏洞。给VLAN分配IP网段时,我通常把VLAN ID和IP第三段对应起来,比如VLAN 10对应10.10.10.0/24,VLAN 20对应10.10.20.0/24。这样不管多少台设备,一看IP就知道属于哪个VLAN,排查又快又不容易写错。

第三个习惯是改配置之前先看当前配置。很多人上去就敲命令,敲一半发现和原有配置冲突,只能又回滚。其实花一分钟看下端口当前模式、当前放行列表,能省后面至少十分钟的慌乱。

我学习VLAN基本原理的最大体会是:这东西不是一个“背完配置命令就结束”的知识点,而是所有交换网络排障的地基。你只要把广播域隔离、标签转发、端口角色这三件事在脑子里走通了,后面看三层交换、路径开销、多生成树,都会顺很多。希望这篇学习日志,能帮你少走一点我当时走过的弯路。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/20 3:39:20

快速排序面试必考:首元素枢轴的Lomuto与Hoare分区详解

面试手写排序算法时,快速排序几乎是必考项。但很多人写出来的代码,在小数组或已经有序时能跑,一上强度就翻车。今天要聊的这个版本——以第一个元素为枢轴的快速排序——正是最常见也最容易写错的一个变体。之所以拿它开刀,是因为…

作者头像 李华
网站建设 2026/10/20 3:38:36

一文读懂大模型生态:分类/参数/结构/训练/GPU/评测/排行/社区

大模型介绍 简介 大模型指参数规模巨大、基于深度神经网络构建的人工智能模型。主要有语言模型,图像视频模型,语音模型,多模态模型(可以同时处理文本图像语音等)。本文主要描述大语言模型,即LLM(Large Lang…

作者头像 李华
网站建设 2026/10/20 3:38:10

司法AI文书生成的质量控制:从法条校验到架构设计

做了几年司法领域的AI应用,我最大的体会是:这个领域最难的不是让模型“写出”文书,而是让模型“写对”文书。前阵子跟一个做法律科技的朋友聊,他说自己团队辛辛苦苦训练了一个模型,生成的起诉状看起来像模像样&#xf…

作者头像 李华
网站建设 2026/10/20 3:38:08

KV Cache深度解析:长上下文推理为何越聊越慢及优化实践

1. 从一次线上事故说起:为什么聊到第30轮,响应突然卡成幻灯片去年冬天,我帮一个做智能客服的朋友排查线上问题。他们的系统刚上线时响应飞快,首字延迟稳定在300毫秒以内。但运营两周后,客服人员开始抱怨:跟…

作者头像 李华
网站建设 2026/10/20 3:38:05

AI代码审查落地指南:从原理、选型到质量门禁与测试左移实践

每天开完代码评审会,我都要在工位上缓五分钟。评审意见里十条有七条是“这里要判空”“那个变量命名不规范”“事务别忘了回滚”,真正的架构问题、并发隐患反而没时间聊。作为软件测试工程师,我一直觉得自己被钉在“最后一道防线”上——业务…

作者头像 李华
网站建设 2026/10/20 3:36:32

Spring AI Alibaba停更后,Java AI应用开发的替代技术路线与工程实践

1. 一个停更公告引发的技术圈震荡“Spring AI Alibaba已停更了,Java还有希望吗?”——这句话最近在不少技术群里反复出现,语气里带着焦虑,也带着一丝看热闹的意味。我第一眼看到这个标题的时候,正在用Java写一个RAG检索…

作者头像 李华