我接手过不少入门网络的同事和学员,大家几乎都会卡在同一个地方:基础概念好像都懂,但一进真机就懵。尤其是到了路由交换这部分,VLAN怎么划分、Trunk怎么放行、同一台设备上不同VLAN为什么不能互相访问,这些细节不掰扯清楚,后面学ACL、学路由协议、学堆叠,全都会觉得地基是歪的。这篇咱们就顺着HCIA基础网络知识系列的节奏,把二层交换里最核心的这块内容一次讲透,全程用实际组网的思路走一遍,不带半点虚的。
这篇内容面向刚接触华为设备、正在备考HCIA、或者工作中需要自己动手调试交换机的人。我尽量用大白话把“广播域为什么要切分”“Access口和Trunk口到底有什么区别”“配置命令背后的逻辑是什么”讲明白。你会发现,只要把这几件事理解了,再去看官方文档里的配置手册,基本就是顺水推舟。
1. 二层网络里最大的坑:广播域
1.1 为什么一台交换机就能把网络搞瘫
很多初学者觉得,交换机嘛,比集线器聪明,知道MAC地址,会按地址转发,那二层网络是不是就没什么可担心的了?真不是。交换机转发单播帧确实精准,但有一种流量它没办法精准转发,那就是广播帧。只要目的MAC是全F,交换机除了接收端口以外,所有端口都得复制一份发出去。你办公室有100台电脑,随便一台发一个ARP广播,其他99台都得收一遍。
单台交换机广播也就罢了,问题是交换机之间还会相互转发。你一台交换机接着一台,广播帧就顺着Trunk口在整个园区网里到处跑。设备多了以后,广播包占比会越来越高,极端情况下网络里全是广播,正常的数据帧反而发不出去,这就是广播风暴。
我当年在某个集成项目里就真遇到过一回。某公司办公区三百多台终端,网络偶尔会突然卡死,Ping网关延迟从1ms跳到上千ms。查了半天,最后发现是有人私接了一台小交换机,没有做任何VLAN划分,整个办公室被广播报文塞满了。那就不得不重新规划VLAN,把大广播域切成小块。
1.2 冲突域和广播域,别再傻傻分不清
很多教材喜欢把冲突域和广播域放在一起讲,本身是为了对比记忆,但初学者经常搞混。这里说个最朴素的区分方法。
冲突域形容的是“同时只能有一个设备发数据”的范围。老式的同轴电缆总线型网络,或者用集线器组建的网络,所有端口都在同一个冲突域里,两台机器同时发数据就会撞车。交换机每个端口独立带宽,冲突域被打破了,每个口基本可以认为是独立通道。
广播域形容的是“广播报文能传到多远”的范围。只要二层设备没有做隔离,广播帧走到哪,广播域就到哪。交换机会转发广播,默认情况下所有端口都在同一个广播域里。要缩小广播域,就得靠VLAN把端口逻辑分组。
打比方说,冲突域像一条单车道土路,所有车挤在一起走,对面来车就得互相让。广播域像一个大喇叭广播站,只要在覆盖范围内,所有人都能听到广播。交换机解决了土路堵车的问题,但没解决大喇叭扰民的问题,广播域还得靠VLAN来管。
注意:路由器和三层交换机可以隔离广播域,但纯二层交换机不行。所以,就算你用一百台二层交换机串联,广播域依然是一整个。
1.3 VLAN出现的时机,恰恰是网络变慢的时候
VLAN全称是Virtual Local Area Network,虚拟局域网。它做的事情说起来很简单,就是在一台物理交换机上,把端口划分成好几个逻辑组。不同组的设备虽然插在同一台交换机上,但它们之间二层是隔离的,广播帧不会跨组转发。
早期的办公网络没那么大,几十台机器放在一个网段里,也不怎么卡。后来设备多了,ARP、NetBIOS、各种服务发现协议天天发广播,网络质量直线下降。有工程师就想,能不能像用路由器隔离广播域那样,把一个大网络切成几块?但路由器太贵,而且转发的瓶颈太明显。VLAN应运而生,成本低,灵活,在交换机内部就能完成隔离。
这个思路放到今天依旧高效。现在很多公司一个楼层一个VLAN,财务部、研发部、人事部各管各的,不光广播减少了,安全上也舒服了很多——毕竟二层隔离能挡住不少直接扫描内网的行为。
2. 先把VLAN的关键机制说透
2.1 VLAN ID,以及Access口和Trunk口的区别
VLAN ID是VLAN的身份证,范围是1到4094,其中0和4095保留。这个范围来自802.1Q标准,就是它在以太网帧头里插入了4个字节的Tag,其中有12个bit用来存放VLAN ID,2的12次方正好是4096。这个Tag是VLAN能跨交换机传输的基础,交换机通过识别Tag,才知道这个帧属于哪个VLAN。
端口类型是理解配置的关键。日常用得最多的就是Access口和Trunk口。
Access口主要接终端设备,比如电脑、打印机、IP电话。它只属于一个VLAN,发出去的数据帧不带Tag,收到的帧如果没有Tag,就按这个端口所属的VLAN来处理。用行话讲,就是Access口会打上PVID对应的VLAN,然后剥离Tag转发。
Trunk口主要接交换机、路由器子接口,它可以同时承载多个VLAN的流量。Trunk口默认会放行VLAN 1,其他VLAN需要额外允许。帧在Trunk口上传输时,是带着Tag走的,这样对端交换机才知道该把它归给哪个VLAN。
新手最容易错的地方,是把Access口当成“也能传多个VLAN”的口,或者把Trunk口当成“不用配VLAN放行”的口。这两种想法都会出问题。
2.2 PVID到底是什么,别把它和VLAN ID搞混
PVID,Port Default VLAN ID,端口默认VLAN。它表示的是:如果数据帧进入这个端口时没有携带Tag,交换机就默认这个帧属于哪个VLAN。
对Access口来说,端口所属的VLAN和PVID是同一个,手动配置的时候通常一起生效。对Trunk口来说,PVID默认是VLAN 1,而且Trunk口的PVID是可以修改的,Trunk口会把PVID对应的那个VLAN在发送时去掉Tag。
说个常见应用场景。交换机和路由器之间用Trunk连接,物理链路只有一条,但要走多个VLAN的流量。路由器的物理口不够用,就可以在路由器上配子接口,比如GigabitEthernet0/0/1.10封装dot1q vid 10,GigabitEthernet0/0/1.20封装dot1q vid 20。这种“单臂路由”的组网里,Trunk口上VLAN 10和VLAN 20的帧都需要打Tag进入路由器,但在交换机侧如果PVID配错了,很可能导致某些帧被错误地贴上了别的VLAN标签,通不通就看命了。
我这里给个容易记的经验:Trunk口的PVID只对“不带Tag的帧”有意义。如果上行流量本身就带着Tag,PVID并不会覆盖原有标签。
2.3 交换机转发数据帧时,脑子里到底在想什么
把转发逻辑拆成三步就清楚了。
第一步,接收帧,看端口类型。如果是Access口,帧进入时如果没有Tag,就贴上这个端口所属VLAN的Tag。如果有Tag,就看这个Tag和端口所属VLAN匹配不匹配,不匹配就丢弃。如果是Trunk口,帧进入时如果没有Tag,就按PVID贴标签。如果有Tag,就看这个VLAN是否在Trunk口的允许列表里,不在就丢弃。
第二步,查MAC地址表。MAC地址表记录的是“某个MAC地址从哪个端口学到的”。交换机根据目的MAC查表,查到就按表转发,查不到就广播泛洪。
第三步,决定出口怎么处理。如果出口是Access口,帧发出时去掉Tag,变成普通以太网帧。如果出口是Trunk口,看这个帧的VLAN是否在允许列表里,不在就丢弃,在就保留Tag发送。
这个流程看着简单,但实际排障时非常有用。不同VLAN不通、跨交换机同VLAN不通、配置了VLAN但是终端上不了网,十有八九都能在这三步里找到原因。
3. 实操配置:从零划分一个多VLAN办公网
3.1 组网需求与规划思路
为了演示,咱们模拟项目X。某公司有三层楼,每层一个部门,要求逻辑隔离,各部门独立网段。设备有一台核心交换机(三层),两台接入交换机(二层),每层楼的终端就近接入对应交换机。
规划信息可以这样定:
| 楼层 | 部门 | VLAN ID | 网段 | 网关 |
|---|---|---|---|---|
| 1层 | 前台与访客 | 10 | 192.168.10.0/24 | 192.168.10.1 |
| 2层 | 行政财务 | 20 | 192.168.20.0/24 | 192.168.20.1 |
| 3层 | 研发运维 | 30 | 192.168.30.0/24 | 192.168.30.1 |
接入交换机分别接一楼的终端、二楼的终端、三楼的终端,再用Trunk口上联核心交换机,核心交换机启用VLANIF接口充当各VLAN的网关。这个组网思路很常见,练会了基本能应对中小型办公网的搭建。
提示:VLAN ID不一定要跟网段第三位对应,但强烈建议规划时至少保证“VLAN ID —— 网段 —— 用途”三者好记,不然后期运维排查能在地址对应上浪费大量时间。
3.2 接入交换机配置:Access口和Trunk口的命令行写法
接入交换机上,先把VLAN建好。华为设备的命令很直接。
system-view sysname Switch-Access-1 vlan batch 10 20 30vlan batch 是为了批量创建,不用一条条敲 vlan 10、vlan 20、vlan 30,效率高很多。
接下来把连接终端的端口配成Access口,并划入对应VLAN。假设终端接的是GigabitEthernet0/0/1到GigabitEthernet0/0/10,命令如下。
interface GigabitEthernet0/0/1 port link-type access port default vlan 10如果终端口比较多,可以用端口组批量处理,省得一个一个敲:
port-group group-member GigabitEthernet0/0/1 to GigabitEthernet0/0/10 port link-type access port default vlan 10接着把上联核心交换机的口配置为Trunk,并且放行相应VLAN。假设上联口是GigabitEthernet0/0/24。
interface GigabitEthernet0/0/24 port link-type trunk port trunk allow-pass vlan 10 20 30注意,华为设备上如果没有特别指定,Trunk口默认放行VLAN 1。上面这条命令并不会自动覆盖默认放行列表,而是把10、20、30追加进去。如果你只想让特定的几个VLAN通过,可以先执行 port trunk allow-pass vlan none,再执行 allow-pass vlan 10 20 30,更干净。
3.3 核心交换机配置:VLANIF网关和Trunk承载
核心交换机需要创建同样的VLAN,配置VLANIF作为网关,同时用Trunk口下联接入交换机。
先创建VLAN,再把下联口设为Trunk:
system-view sysname Switch-Core vlan batch 10 20 30 interface GigabitEthernet0/0/1 port link-type trunk port trunk allow-pass vlan 10 20 30然后进入对应VLAN,配置IP地址:
interface Vlanif 10 ip address 192.168.10.1 255.255.255.0 interface Vlanif 20 ip address 192.168.20.1 255.255.255.0 interface Vlanif 30 ip address 192.168.30.1 255.255.255.0到这一步,各VLAN内的终端把网关指向对应的VLANIF地址,同一个VLAN内互通,不同VLAN之间需要三层转发,但三层路由表是直连路由,只要终端网关配置正确,核心交换机本身就能转。
如果想限制部门互访,后面再配ACL做策略,那是下一个阶段的内容。现在先把二层的底子打通。
3.4 验证配置效果,不能只看乍一看能通
配完以后必须验证。华为设备上最常用的三条命令是display vlan、display port vlan、display mac-address。
display vlan 可以看到交换机上已有的VLAN、对应端口、接口类型。display port vlan 可以看到每个端口当前的链路类型、PVID、允许通过的VLAN。display mac-address 看MAC地址表,如果终端上线了,对应VLAN应该能看到学习到的MAC条目。
我自己的习惯是,先看端口VLAN状态,确认Access口归属正确;再Ping网关,确认三层通;接着跨VLAN Ping,确认核心交换机VLANIF配置无误;最后再测一下广播是否被隔离——怎么测呢,VLAN 10里的电脑发广播,VLAN 20的电脑不该收到,在Wireshark里看有没有对应广播帧就行。
用一台电脑配置IP为192.168.10.2,网关192.168.10.1,另一台电脑配置IP为192.168.20.2,网关192.168.20.1。两台都Ping自己的网关通了,说明二三层基本OK。接着从VLAN 10的电脑Ping VLAN 20的网关,正常应该通,因为核心交换机会做三层转发。如果通了但不该通的场景,比如访客VLAN能访问财务VLAN,那后面就要靠ACL接口策略来限制。
注意:终端改了IP和网关以后,如果之前系统里有旧的ARP缓存,可能第一下Ping不通。正常现象,清一下ARP缓存或者等它老化就行,别急着改配置。
4. 实战中经常翻车的几个场景
4.1 配置了VLAN之后,终端反而上不了网
这个情况太常见了。第一天直连交换机好好的,划分VLAN之后电脑就获取不到IP,或者获取到了也Ping不通网关。
排查思路分两步。第一步看电脑接的端口类型和PVID,确认是不是Access口且划入了正确VLAN。华为设备上可以用display port vlan查到端口的PVID。第二步看VLANIF是否创建,IP地址是否正确。很多人在核心交换机上只创建了VLAN,但没有进interface Vlanif 10配IP,那这个VLAN就没有网关,终端当然上不了网。
还有一种情况,电脑没设IP,走DHCP获取。DHCP的请求是广播帧,Access口把广播打上PVID标签后,交换机就会在对应VLAN内转发。如果VLANIF没配IP,说明VLAN的三层接口根本不存在,DHCP服务器就算在同一台交换机上,也可能收不到请求。所以排查DHCP问题之前,先把每个VLANIF的IP都确认一遍。
4.2 跨交换机相同VLAN不通
两台接入交换机都配置了VLAN 10,各自下面都有终端,但A交换机下的终端Ping不通B交换机下的终端。
大多数情况是Trunk口配置问题。Trunk口没有放行VLAN 10、对端Trunk口配置不一致、或者两台交换机上VLAN ID本身就不一样(比如一台用的是10,另一台不小心建成了20),都会导致二层不通。
排查时先看两端Trunk口的allow-pass列表,可以用display port vlan看Trunk口允许的VLAN列表。重点确认两端列表一致,VLAN ID一致。再一个容易被忽略的点:Trunk链路两端的PVID如果被改成不一致的值,不带Tag的帧可能被错误归类,导致通信异常。标准做法是Trunk口两端PVID保持一致,没事别乱改。
4.3 把Trunk口当成Access口用,导致VLAN信息丢失
有人为了方便,把交换机级联的口直接配成Access口,然后归属某个VLAN。这样下一级交换机发出的帧只有一种VLAN标签,链路再往上走时,其他VLAN的流量就全丢了。
这种情况常见于临时接线或图省事。一台交换机如果同时下面还有好几个VLAN的终端,它和上级之间的链路必须是Trunk,这是硬性要求。强行用Access口级联,信号能通,但VLAN隔离会退化成单VLAN模式。
真遇到这种组网,正确解法是先把级联口改成Trunk,放行所有需要的VLAN,然后再逐一确认下级交换机的Access口归属。
4.4 排查工具和手法:先看端口状态,再抓包,别盲目重启
设备不通,别一上来就重启交换机,重启往往掩盖了真实原因。推荐按顺序排查。
先看物理状态,display interface brief,有没有端口Down,协商速率正不正常,有没有大量错包。再看端口VLAN状态,display port vlan,确认链路类型、PVID、允许VLAN。再看MAC地址表,display mac-address vlan 10,确认终端MAC是否被正确学习。如果MAC表里没有对应条目,大概率是端口类型或PVID问题。最后如果还查不出来,在关键链路上抓包,看帧有没有携带正确的VLAN Tag,有Tag没Tag一眼就能看出来。
有一次我在某现场排查一个“时通时不通”的故障,查了半小时没结果。后来抓包发现,交换机发出的一帧带有VLAN 10 Tag,但中间经过了一台傻瓜交换机,它不知道这个Tag是什么,直接按二层转发把Tag剥了或者处理错了,导致对端交换机以为这是VLAN 1,然后就出现了间歇性不通。这就是Trunk链路中间串入了不支持VLAN的设备,属于硬伤,排查思路很重要,别一根筋只查配置。
5. 学完VLAN之后,下一步怎么走
5.1 紧接着要啃的是STP
有了VLAN,二层网络能隔离广播域了,但链路冗余问题也跟着来了。公司网络里为了保证可靠性,交换机之间往往不止一条物理链路,这就会出现物理环路。没有环路协议,广播帧会在环路里无限转发,直接打满带宽。
STP(Spanning Tree Protocol)就是用来解决这个问题的。它会让交换机之间通过BPDU协商,选出一个根桥,然后阻塞某些冗余端口,逻辑上把环路打断。华为设备上默认开启了STP或RSTP,但很多初学者根本没意识到它的存在,直到手动配置链路聚合时才发现STP在背后捣乱。
建议学完VLAN以后,马上去看STP/RSTP的工作原理、端口角色、端口状态迁移。这些东西理解了,后面排环路故障会非常从容。
5.2 跨VLAN通信要进一步提升,得接触路由
VLANIF是三层交换机的内置网关,适合小规模组网。但网络规模一大,不同业务之间可能不在同一台三层设备上,甚至跨越多个网段,这时候就得靠动态路由协议,比如OSPF。
HCIA的基础网络知识里,路由协议是后半程的重点。很多人在VLAN阶段以为“能Ping通就完事”,但真实网络要解决的问题更多:路径选择、路由优先级、负载分担、故障收敛。学路由一定要跟实验结合,用华为模拟器或者真机搭一个三台路由器互联的环境,多看看路由表怎么变的。
5.3 安全控制别忘了ACL
VLAN天然隔离了二层广播,但同一VLAN内部的访问控制它管不了。比如财务部和行政部虽然分属不同VLAN,三层互通之后,如果不想让行政部访问财务部服务器,光靠VLAN是挡不住的。
这时候需要ACL,访问控制列表。它可以在接口上配置入方向策略,通过匹配源IP、目的IP、协议端口号做允许或拒绝。HCIA阶段要求你会写基本的ACL规则,知道inbound和outbound的区别,会把它应用在接口上,并且能理解匹配顺序是自上而下、一旦命中就停止匹配。
ACL本身不难,但很多人上手就忘掉了一个细节:ACL规则里隐含的deny any。如果你写了允许某台主机访问,但后面忘了放行其他流量,应用策略后可能导致该接口上的所有其他流量全被丢弃。所以练习ACL时,多在真机上验证,多看看提示信息。
最后还是分享点个人体会
VLAN这部分,从我带新人的经验看,最大的难点不在命令,而在于脑子里有没有一张“帧从进到出经历了什么”的流程图。你什么时候能把Access口、Trunk口、PVID、VLAN Tag这些概念像放电影一样在脑子里串起来,什么时候配置就再也不会犹豫了。
我建议你拿到设备后,别急着敲命令,先画一张简单的拓扑图,标明哪台是核心、哪台是接入、哪些口接终端、哪些口是级联,然后亲手从头配置一遍。遇到不通的时候,别怕,那正是长经验的好时机。先看端口状态,再看MAC地址表,顺着帧的路径一段一段查,绝大多数问题都能在十分钟内定位。这是我个人最推崇的排障方式。