做网络这一行,几乎每个人都收到过这样的交接物:前一个同事甩过来的半段配置,设备导出时顺手截下的几条命令,名字就叫“华为交换机配置片段”。没有拓扑说明,没有规划表,也没有验收标准。你把它贴进设备,网络勉强能通,但只要一有波动,各种怪问题就冒出来了。这篇文章就围绕这类断章取义的配置片段,梳理华为交换机上最常用、也最容易栽跟头的几个配置场景。适合刚接手组网项目的新人,也适合经常要消化“半成品配置”的驻场工程师。
我一直觉得,配置片段本身没有对错,危险的是它容易让人产生“已经配好了”的错觉。所以我下面不只是给你命令,还会把每条命令背后的判断逻辑、常见翻车点、验证方法一起说清楚。看完你会明白,一段配置要真正落地,光是“能通”还远远不够。
1. 上电与首次登入:这些配置片段之外的隐性前提
1.1 串口无输出的真实原因和处理
拿到一台华为交换机,第一件事肯定是console线连上去。很多人配置片段都准备好了,结果终端软件屏幕上干干净净,一查设备其实已经开机了。这种“无输出”十有八九不是设备坏了,而是串口参数不对或者选错了COM口。
华为交换机console口的默认参数是:波特率9600,数据位8,停止位1,无校验,无流控。用Xshell、SecureCRT或者Windows自带的超级终端创建串口会话时,把这几个参数填对基本就不会有问题。用USB转串口线的时候还要注意驱动,插上后在设备管理器里确认一下虚拟COM口号,别看着COM3被占用了就选COM4,实际线可能叫COM7。
一个容易忽略的细节是:连接前先把交换机电源断开,接好console线后再上电。如果设备已经启动完了再插线,有时候终端里确实能出来内容,但往往会漏掉前面的启动日志,不是大问题,可你需要通过重启来完整观察启动过程,那就得先断电解。还有个老经验,粘贴配置片段时如果终端一直不回显,检查一下是不是开着“终端换行自动回车”之类的不兼容选项,部分老版本终端软件贴长文本时会吞掉部分命令。
1.2 第一次登录后建议立刻执行的整理动作
配置片段能不能安全地贴进现有设备,前提是你得知道这台设备当前的底细。登进去第一件事不是急着敲命令,而是先做一次“三查”:查版本、查设备状态、查现有配置。
查版本用display version,看VRP版本和产品型号,因为不同版本支持的命令细节有差异。查设备用display device,看电源、风扇、堆叠成员状态是否正常。查配置用display current-configuration,把当前生效完整配置拉出来对比。很多人拿到的是从旧设备导出的片段,旧设备是S5720,新设备是S5735,命令一样,但端口命名、缺省行为可能不同,直接贴进去很容易出现“命令执行成功但效果不对”的情况。
另外我强烈建议在做任何改动前,先把系统时间校准了,不然日志时间乱套,后面排障全是麻烦。华为交换机默认时区是UTC,国内现场至少要执行clock timezone Beijing add 08:00:00来设置时区,再通过NTP同步或者手动clock datetime设置当前时间。做完这些基础整理,再进入配置阶段,你手里的配置片段才有讨论意义。
2. 接口与VLAN配置片段:从单条命令到批量交付
2.1 批量创建VLAN与接口划分的两种写法
VLAN配置是交换机配置片段里出现频率最高的部分,但给过来的常常是零散几条,比如vlan 10、vlan 20,然后后面跟着一堆port default vlan 10的接口命令。这种片段不是不能理解,只是在设备多、接口多的时候,效率和可读性都差。
一个更推荐的做法是先用vlan batch一次性创建多个VLAN:
vlan batch 10 20 30 40 50这条命令可以同时创建不连续的多个VLAN,比一条一条vlan 10再quit再vlan 20舒服得多。VLAN创建之后,最好顺手给每个VLAN加一个description,比如接待客人的办公室、打印网段。配置片段里写清楚description,下次维护就不用再猜VLAN用途了。
接口划分也有两种姿势。一是逐个进入接口配置,适合只有一个两个口需要调整的场景;二是用端口组批量配置,适合一整排接口划到同一个VLAN的情况:
port-group 1 group-member GigabitEthernet0/0/1 to GigabitEthernet0/0/24 port link-type access port default vlan 10这段命令要把port-group 1理解为“临时分组”,不是Eth-Trunk链路聚合,两类东西完全不是一回事。批量操作前务必确认这24个口当前都是空闲的,特别是正在跑业务的接口,否则一条批量命令下去,生产网络可能直接断掉。我曾在某个现场就因为没检查端口占用情况,把两台服务器连的接口一次性划进了新VLAN,业务中断了十分钟,那次教训让我学会了批量操作前先display interface brief看端口状态。
2.2 Trunk放行与PVID不一致的经典翻车
VLAN配置里最经典的问题,是Trunk接口的“放行列表”和“PVID”认知错位。很多配置片段里给的是:
interface GigabitEthernet0/0/20 port link-type trunk port trunk allow-pass vlan 10 20看起来没问题,但另一头连接的对端交换机如果PVID没对上,或者漏放行了一个VLAN,就会出现“VLAN 10通、VLAN 20不通”这种奇怪现象。PVID不是放行列表,它表示这个Trunk口中不带VLAN标签的报文该归到哪个VLAN。当两台交换机用Trunk互联时,两边端口的PVID要一致,否则收到对端发来的无标签报文时会放进错误的VLAN。
排查这种事,不要猜,直接看端口状态。用display port vlan查看端口当前PVID和允许通过的VLAN列表,对照两端的配置即可。如果只是临时测试,可以用port trunk allow-pass vlan all,让所有VLAN都能通过,但这个命令在正式环境里尽量别用,业务隔离和广播域隔离都会失效,一旦有人接错网线,风暴范围会无限扩大。正确姿势是明确列出需要放行的VLAN。
还有一个经常被忽略的点:如果对端设备不是华为而是其他厂商,标签处理行为可能有差异。部分厂商的设备默认PVID是1,华为也默认是1,只要两边都默认还好,可一旦某一端为了某个业务把PVID改成了10,另一端没改,就会有VLAN 10的包带着标签过来后被打上错误标记。所以配置Trunk时,PVID和allow-pass必须成对检查。
2.3 Access与Hybrid的选择逻辑
配置片段里出现port link-type hybrid时,不要急着改成access。很多工程师习惯性认为接口只有access和trunk两种,忘了华为还支持hybrid。Hybrid的语法比access复杂,同时存在port hybrid untagged vlan和port hybrid tagged vlan两个方向,适合一些特殊场景,比如AP管理VLAN和业务VLAN共用一个物理口,或者某些摄像头同时需要管理地址。
判断片段里hybrid接口的真实意图,主要是看它怎么处理标签:untagged vlan列表里的VLAN,报文出去时会把标签剥掉,类似access或者trunk默认VLAN的效果;tagged vlan列表里的VLAN,报文出去时保留标签,类似trunk放行列表的效果。如果一个hybrid口上只配了port hybrid untagged vlan 10,那它本质上就是个access口,行为几乎一样。如果你直接把hybrid改成access,看起来配置变简单了,但原来可能要带标签出去的VLAN 20就全部不通了。
我的建议是,对于接PC、打印机、普通终端的接口,用access最直观;对于交换机之间级联,用trunk最通用;只有在需要同时传输带标签和不带标签流量、且不方便再加物理口时,才考虑hybrid。看到配置片段里的hybrid,先还原应用场景再决定动不动,这是我从一个摄像头接入故障里总结出来的,那个现场因为我把hybrid改成了access,导致摄像头的管理VLAN标签被剥掉,平台直接看不到设备。
3. 上联链路冗余:Eth-Trunk配置片段及负载不均排查
3.1 手工模式聚合的标准配置片段
上联交换机的链路聚合,是保证出口带宽和冗余的关键配置。配置片段里最常见的是只给了成员口,比如:
interface Eth-Trunk1 mode manual load-balance src-dst-ip port link-type trunk port trunk allow-pass vlan 10 20然后是成员口的加入命令:
interface GigabitEthernet0/0/23 eth-trunk 1 interface GigabitEthernet0/0/24 eth-trunk 1手工模式(manual)不需要对端参与协商,两端都配置成manual,成员口加入同一个Eth-Trunk号就行。虽然部分版本新建Eth-Trunk时默认就是手工模式,我还是建议显式写上mode manual,因为你交给别人的是一段配置片段,阅读者不该靠猜来确定你的意图。
聚合配置完成后,用display eth-trunk 1查看成员口是否都处于Selected状态。如果某个物理口Link是Up但状态是Unselected,通常说明对端没有加入对应的聚合组,或者两端成员的接口速率、双工模式不一致。这个检查一定要做,不是命令敲完聚合就生效了,真正生效要看状态。
3.2 流量全部走一条物理口的排查过程
手工聚合完成后最糟心的情况是:链路聚合明明成了,带宽还是上不去,display interface一看,流量全压在一个物理口上,另一个口几乎空转。
这种负载不均,多半是哈希因子不合适。Eth-Trunk的负载均衡默认按报文特征做哈希,不同版本和不同型号的默认因子不一样,有的基于源目MAC,有的基于源目IP。如果上游设备把大量流量都收敛到一个相同的源MAC或目的MAC,基于MAC的哈希就会把流量都算到同一个成员口上。解决方法是把哈希因子切到基于源目IP,在Eth-Trunk接口视图下执行load-balance src-dst-ip。不同版本支持的负载均衡模式关键字不完全一致,进接口后敲load-balance ?就能看到可选值,按需切换即可。
还有一层容易被忽略:成员口速率不一致也会导致负载失衡。两条物理口,一条千兆、一条百兆,聚合组虽然能建起来,但哈希结果大概率偏到千兆口上,因为两条链路带宽差异大,协议栈会认为千兆口更适合承载。我遇到的另一个案例是网线质量问题,某个成员口协商到了百兆带宽,整个聚合组的出口吞吐直接塌了一半,光看display eth-trunk状态是正常的,拿测速工具一压,问题就现形了。聚合组里的成员口,最好统一型号、统一速率、统一线缆长度,这不是强迫症,是真实经验。
3.3 堆叠与聚合的选型思路
配置片段里出现stack-port或者堆叠相关配置时,要意识到这是另一个层面的冗余方案。Eth-Trunk解决的是两根线之间的冗余和负载分担,堆叠解决的是两台甚至多台设备之间的冗余。对于接入层两台交换机要上联到同一台核心的场景,堆叠加跨设备链路聚合是最常见的做法,但堆叠配置对设备型号、版本一致性要求很高,不是随便贴几行配置就能用的。
如果只是单纯增加上联带宽,手工聚合或者LACP聚合足够。手工聚合简单粗暴,LACP聚合还能自动检测对端链路状态并协商参数,配合华为的lacp timeout fast还能加快收敛速度。我的建议是,新部署尽量用LACP模式(华为上叫mode lacp-static或mode lacp),它比手工模式多一个协议协商的过程,出现误接线或对端配置错误时更容易暴露问题。配置片段如果只给了一个手工聚合,至少要看一眼对端设备是否同样支持、同样配置,否则上联冗余形同虚设。
4. 远程管理与安全加固:SSH、ACL和NTP的配置片段
4.1 SSH替换Telnet的完整配置片段
很多旧设备的配置片段里还留着Telnet,生产环境我建议尽早切到SSH。Telnet口令和内容全是明文,尤其在跨交换机远程管理时,抓包就能看到管理员密码,这在任何安全管理规范里都是过不了的。
华为交换机开启SSH的完整片段大概是:
rsa local-key-pair create stelnet server enable ssh user admin ssh user admin authentication-type password ssh user admin service-type stelnet user-interface vty 0 4 authentication-mode aaa protocol inbound ssh aaa local-user admin password cipher 需要替换的密码 local-user admin privilege level 15 local-user admin service-type ssh注意几个细节:rsa local-key-pair create会生成RSA密钥对,执行后需要等待一段时间,终端在某些模拟器里看起来像卡住了,其实是在生成随机数,耐心等就行。protocol inbound ssh只允许SSH协议接入,如果现场还需要临时用Telnet排障,可以暂时保留protocol inbound all,但验证完务必改回来。SSH用户的认证方式和AAA本地用户要配套,密码加密方式在新版本VRP里推荐用irreversible-cipher,老版本用cipher,贴配置前先看看当前设备的VRP版本支持哪种。
调试最常用的检查命令有两个:display ssh server status看SSH服务是否开启,display user-interface vty看VTY口绑定的登录方式是否生效。命令配置完成后,一定要从远端先用SSH登录一次,失败还来得及用console回去改,别等设备封网了才后悔。
4.2 ACL限制管理网段与登录源
SSH开了,如果不对登录源做限制,等于把设备管理口敞在网络上。正规做法是用基础ACL把VTY登录的源地址范围限制到管理网段:
acl number 2001 rule 5 permit source 192.168.100.0 0.0.0.255 rule 10 deny user-interface vty 0 4 acl 2001 inbound这段配置的含义是:只允许来自192.168.100.0/24网段的IP登录VTY口,其他地址一律拒绝。ACL末尾本身隐含了“拒绝所有未匹配流量”,所以只写rule 5 permit也能生效,但我习惯再加一条rule 10 deny,把意图写得更明确,避免后来维护的人误以为还有放行逻辑。
这里有个安全常识要提醒:ACL方向是inbound,作用在VTY接口,它限制的是“谁可以发起VTY连接”,不是“VTY口能访问哪个网段”,方向搞反了配置就不生效。另外,ACL里配置的源地址是管理终端的出口IP,不是交换机自身的管理IP。如果管理终端通过NAT转换了源地址,ACL里的源网段要写成NAT转换后的地址,或者干脆先让网管部门配合放行。限制管理口这道防线很重要,但也别把自己锁在门外——修改VTY的ACL之前,务必保有一个console会话,一旦配置出错,还能从console救回来。
4.3 NTP同步避免日志时间错乱
SSH和ACL都是访问控制层面的,NTP看起来不起眼,却直接影响排障效率。前面提过要校准设备和时区,NTP就是让它持续保持准确的关键。
华为交换机配置NTP客户端很简单:
ntp-service enable ntp-service unicast-server 192.168.100.10上层如果有NTP服务器,指定服务器IP即可。如果没有外网NTP,也可以用核心交换机或者网管服务器作为时间源。配置后用display ntp-service status查看同步状态,看到clock source变成已同步、stratum级别不为16,基本就正常了。
为什么我要把NTP和SSH、ACL放在一起说?因为远程管理做得再好,设备时间不对,日志时间乱糟糟的,安全审计和故障回溯根本没法做。某个网络问题发生后,你想根据日志找回放,结果每台设备的时间差几分钟,定位时间线就要多花好几个小时。NTP不是花活,是排障基础设施。
5. 排障实战:从看似正常的配置片段中找线索
5.1 广播风暴诱因排查示例
设备CPU突然飙升、所有接口指示灯狂闪、全网卡顿,这类现象多半是广播风暴。单纯看配置片段往往看不出问题,因为风暴通常是环网或异常帧引起的,而不是某一台设备的配置直接被写错了。
我排过一个典型案例:某台接入交换机连续两天下午CPU超过80%,业务时断时续。现场抓包结果全是某个MAC的广播帧,数量惊人。排查链路我一般这么走:先display interface看哪个端口收包速率异常高,再display mac-address看有没有同一个MAC从多个端口出现,如果有,百分之九十是二层环路。接着display logbuffer看有没有STP频繁阻塞端口或者MAC地址漂移的日志。
结果发现,问题出在一条配置片段上:某台设备为了省事,把两个接口都划进同一个VLAN,又用一根跳线把这两个接口接在了一起,形成了一个小环路。正常情况下STP能阻断冗余链路,可那台设备的配置里恰好执行过stp disable,是遗留片段里的一条“优化”命令。交换机彻底失去环路保护,广播帧两个方向循环转发,直接风暴。处理方式也直接:先shutdown疑似端口,让网络恢复,再重新开启STP,最后把这个端口从环路中摘除。这里最想提醒的是:任何遗留配置里看到stp disable都要留个心眼,除非你清楚知道这台设备不依赖STP,否则别留这条命令。
5.2 VLAN间路由不通的三个高频原因
VLAN间路由(俗称“VLAN互通”)配不通,是配置片段里最常被吐槽的问题。现象往往是:同VLAN的PC已经能互访,但跨VLAN的PC ping不通网关。原因不外乎下面几类,按检查顺序走一遍,大多数问题十分钟内能定位。
第一类,VLANIF接口没建或地址不对。三层交换机转发VLAN间流量要靠VLANIF接口,interface Vlanif10里配置的IP就是该VLAN的网关地址。如果PC的网关指向192.168.10.254,但VLANIF10配的是192.168.10.1,PC不通网关,自然跨VLAN不通。检查命令是display ip interface brief,重点看接口状态是不是Up,IP地址和掩码有没有配错。
第二类,上联接口没放行对应的VLAN。这个现象比较隐蔽:VLANIF都在,IP也正确,但VLAN 10的主机就是ping不通VLAN 20的网关。原因常常是两台交换机之间的Trunk口只放行了VLAN 10,没放行VLAN 20,或者PVID不一致导致标签被错误剥离。用display port vlan查看互联端口的放行列表,两边一对照就出来了。
第三类,三层路由缺失。VLANIF配好之后,VLAN间路由通常自动就通了,因为交换机能直接路由本机接口所在网段。但如果VLANIF接口分布在两台不同设备上,比如VLAN 10的网关在交换机A,VLAN 20的网关在交换机B,两台交换机之间又是三层口,那就要在A上写一条到VLAN 20网段的路由,下一跳指向B的互联地址。配置片段里如果只给了VLANIF,丢了三层路由,就会导致这种“各VLAN都通网关,但跨设备不通”的情况。所以看到一个跨设备的VLAN互通需求,先画一遍逻辑拓扑,再决定配置里要补什么。
这三类原因有时候会叠加,我习惯用一个简单的排查表格辅助记录,先看VLANIF,再看Trunk放行,最后看路由表,按顺序来不容易乱:
| 现象 | 优先检查项 | 常用命令 |
|---|---|---|
| 同VLAN通,跨VLAN不通 | VLANIF接口IP/状态 | display ip interface brief |
| 某个VLAN始终不通 | Trunk放行列表、PVID | display port vlan |
| 跨设备VLAN不通 | 三层路由、互联地址 | display ip routing-table |
5.3 配置回滚与备份救场
排障过程中最恐怖的一件事不是排不出来,而是改着改着把自己锁在门外了。我有一次远程调整ACL,把管理网段的源地址写错了一位,保存配置后,下一分钟SSH直接断开,devices只有在现场碰console才能恢复。从那次起,我给自己定了一条铁律:任何远程配置变更前,先把当前配置保存一份,再把即将执行的变更写进备忘录,最后留一个console会话在另一边的终端窗口里。
华为交换机有display saved-configuration可以查看下次启动加载的配置,对比当前生效的配置,能在重启前发现问题。变更走完后,记得执行save,否则设备一重启,刚才的配置片段就会全部丢失。但save这个动作也要谨慎,意味着你把新配置写进了启动配置,如果新配置本身有问题,重启后就会带病上线。稳妥做法是变更前先save一次把当前状态固化,变更后再save第二次保存新状态,这样中间出了岔子还有第一次保存的点可以回去。
如果配置改坏了,现场没有console线,还得靠终端软件发愁,那就不得不提备份的重要性。网管运维里最常规的动作就是定期把配置拉到本地,华为设备支持FTP/SFTP拉取配置文件,登录之后执行save确认配置已经写入,再把vrpcfg.zip或者配置文件下载到本地做多版本留存。别嫌这个动作麻烦,配置出问题的下午,你会感谢昨天那个拉了配置的自己。
配置片段这种东西,真到了排障现场,通常不是“看不懂”,而是“太容易以为懂了”。我自己的体会是,断章取义的命令一旦进入生产设备,轻则多一张废ACL,重则广播风暴全网络瘫痪。最后分享一个小技巧:拿到任何配置片段,先做三件事——对版本、对端口、对VLAN,确认这三件事都和你当前设备对得上,再考虑要不要贴。版本决定命令语法是否适用,端口决定配置落在哪个物理口,VLAN决定业务隔离是否正确,三样都对不上,这配置片段八成不是给你这台设备用的,用了迟早出事。