
我接手过不少入门网络的同事和学员大家几乎都会卡在同一个地方基础概念好像都懂但一进真机就懵。尤其是到了路由交换这部分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 ID2的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搞混PVIDPort 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 10GigabitEthernet0/0/1.20封装dot1q vid 20。这种“单臂路由”的组网里Trunk口上VLAN 10和VLAN 20的帧都需要打Tag进入路由器但在交换机侧如果PVID配错了很可能导致某些帧被错误地贴上了别的VLAN标签通不通就看命了。我这里给个容易记的经验Trunk口的PVID只对“不带Tag的帧”有意义。如果上行流量本身就带着TagPVID并不会覆盖原有标签。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层前台与访客10192.168.10.0/24192.168.10.12层行政财务20192.168.20.0/24192.168.20.13层研发运维30192.168.30.0/24192.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再把下联口设为Trunksystem-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二层网络能隔离广播域了但链路冗余问题也跟着来了。公司网络里为了保证可靠性交换机之间往往不止一条物理链路这就会出现物理环路。没有环路协议广播帧会在环路里无限转发直接打满带宽。STPSpanning Tree Protocol就是用来解决这个问题的。它会让交换机之间通过BPDU协商选出一个根桥然后阻塞某些冗余端口逻辑上把环路打断。华为设备上默认开启了STP或RSTP但很多初学者根本没意识到它的存在直到手动配置链路聚合时才发现STP在背后捣乱。建议学完VLAN以后马上去看STP/RSTP的工作原理、端口角色、端口状态迁移。这些东西理解了后面排环路故障会非常从容。5.2 跨VLAN通信要进一步提升得接触路由VLANIF是三层交换机的内置网关适合小规模组网。但网络规模一大不同业务之间可能不在同一台三层设备上甚至跨越多个网段这时候就得靠动态路由协议比如OSPF。HCIA的基础网络知识里路由协议是后半程的重点。很多人在VLAN阶段以为“能Ping通就完事”但真实网络要解决的问题更多路径选择、路由优先级、负载分担、故障收敛。学路由一定要跟实验结合用华为模拟器或者真机搭一个三台路由器互联的环境多看看路由表怎么变的。5.3 安全控制别忘了ACLVLAN天然隔离了二层广播但同一VLAN内部的访问控制它管不了。比如财务部和行政部虽然分属不同VLAN三层互通之后如果不想让行政部访问财务部服务器光靠VLAN是挡不住的。这时候需要ACL访问控制列表。它可以在接口上配置入方向策略通过匹配源IP、目的IP、协议端口号做允许或拒绝。HCIA阶段要求你会写基本的ACL规则知道inbound和outbound的区别会把它应用在接口上并且能理解匹配顺序是自上而下、一旦命中就停止匹配。ACL本身不难但很多人上手就忘掉了一个细节ACL规则里隐含的deny any。如果你写了允许某台主机访问但后面忘了放行其他流量应用策略后可能导致该接口上的所有其他流量全被丢弃。所以练习ACL时多在真机上验证多看看提示信息。最后还是分享点个人体会VLAN这部分从我带新人的经验看最大的难点不在命令而在于脑子里有没有一张“帧从进到出经历了什么”的流程图。你什么时候能把Access口、Trunk口、PVID、VLAN Tag这些概念像放电影一样在脑子里串起来什么时候配置就再也不会犹豫了。我建议你拿到设备后别急着敲命令先画一张简单的拓扑图标明哪台是核心、哪台是接入、哪些口接终端、哪些口是级联然后亲手从头配置一遍。遇到不通的时候别怕那正是长经验的好时机。先看端口状态再看MAC地址表顺着帧的路径一段一段查绝大多数问题都能在十分钟内定位。这是我个人最推崇的排障方式。