很多刚接触H3C网络设备的兄弟总会问我:“你们这些老工程师敲命令敲得飞起,是不是把这些命令全背下来了?”其实真不是。命令行背后是设备的配置逻辑,你理解了那套逻辑,命令自然就串起来了。H3C的Comware平台命令体系在国内企业网里的占有率相当高,无论你是在机房调试交换机、路由器,还是排查链路故障,命令行始终是绕不开的底层能力。这篇东西我不打算给你列一份字典式的命令大全,而是从实际干活的角度,把我日常用到最多的H3C命令、组合思路和踩过的坑一次讲清楚,争取你看完就能照着敲。
1. 先搞懂H3C命令行的视图体系:别再错误视图里敲命令
1.1 从用户视图到系统视图的跳跃
H3C设备的命令行是分视图的,这是Comware平台的一大特点。很多新手在配置设备时最容易犯的错,就是在用户视图下敲配置命令,结果系统报错“Unrecognized command”,或者压根没反应。H3C的命令视图大致可以理解为“几间不同的房间”,你得先走到对应的房间里,才能使用对应的家具。
正常情况下,我们用Console或者SSH登录设备后,会看到类似<H3C>这样的尖括号提示符,这叫用户视图。在用户视图里只能做查看和基础操作,比如display、ping、tracert、reboot、save等。要想修改配置,必须敲system-view进入系统视图,提示符会变成[H3C]。从系统视图还能继续深入到接口视图、VLAN视图、路由协议视图等,每进一层,提示符里的方括号内容就会变化,比如进入GigabitEthernet1/0/1接口后,提示符是[H3C-GigabitEthernet1/0/1]。
这个“进房间”的过程,有一点像Linux里cd切换目录,但又不完全一样。H3C的视图切换本质上是命令权限和配置对象的上下文切换。你敲system-view之后,所有命令都是针对“整个设备”的全局配置;进入接口视图之后,配置就只有对当前接口生效。所以看到提示符变成什么样,就知道自己操作的是哪个层级,这是H3C命令操作的第一条铁律。
1.2 各视图的命令权限与常用出入口
不同视图能用的命令差别很大,我整理了一个高频视图对照表,方便你快速定位自己到底该进哪个视图。
| 视图名称 | 提示符示例 | 主要作用 | 进入方式 | 退出方式 |
|---|---|---|---|---|
| 用户视图 | <H3C> |
查看状态、测试连通性、保存配置 | 登录后默认 | quit退出连接 |
| 系统视图 | [H3C] |
全局配置、创建VLAN、设置路由等 | system-view |
quit返回用户视图 |
| 接口视图 | [H3C-GigabitEthernet1/0/1] |
配置IP、端口属性、速率双工 | interface GigabitEthernet1/0/1 |
quit返回系统视图 |
| VLAN视图 | [H3C-Vlan10] |
配置VLAN名称、VLAN接口IP | vlan 10 |
quit返回系统视图 |
| 路由协议视图 | [H3C-ospf-1] |
配置OSPF等动态路由 | ospf 1 |
quit返回系统视图 |
这里有个使用习惯:很多人喜欢连续用quit一层层退,其实H3C支持用return命令直接回到用户视图,就像快捷键一样,省去多次quit。在系统视图下敲return,提示符会直接回到<H3C>。如果你正在接口视图里排障,想看下全局状态,敲return比连按quit要快得多。
还有一个容易忽略的点:命令支持简写。比如system-view可以简写成sys,display可以简写成dis,interface可以简写成int。前提是简写不能有歧义,比如display简写成d就会报错,因为以d开头的命令不止一个。熟练之后用简写能大幅提升操作效率,但我建议新手还是先敲全称,等熟悉了再逐步用简写,否则一旦设备上报错,你都不知道自己到底敲的是什么命令。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 开局第一件事:连接设备和初始化基本配置
2.1 通过Console线连接时的Serial参数
拿到一台全新的H3C设备,第一件事肯定是进命令行做初始化。H3C设备通常默认只开启了Console口登录,Web界面和Telnet、SSH默认都是关的。所以开局一定要用Console线连设备的Console口,另一头接电脑的USB转串口或者原生串口。
在电脑上打开SecureCRT、Xshell或者Putty,新建连接时选择Serial协议,然后设置串口参数。H3C设备的默认Console参数是:波特率9600,数据位8,停止位1,无校验,无流控。这几个参数里最容易错的就是波特率,如果你连上去发现满屏乱码,先检查波特率是不是9600。有些设备型号可能默认是115200,但绝大多数H3C设备都是9600。
连接建立之后,回车,会看到提示要求输入用户名密码。如果是全新设备,通常没有用户名密码,直接回车就能进入用户视图。如果你拿到的是二手设备或者别人用过的设备,不知道密码,那就只能走密码恢复流程了。这里不展开,但要提醒一句:H3C的密码恢复一般需要重启设备,在启动过程中按Ctrl+B进入BootROM菜单,然后选择跳过配置文件启动,操作前一定确认业务影响范围,别在核心设备上随便试。
2.2 设置设备名称、管理IP和登录密码
进入了命令行,我习惯先把设备的基础身份信息配好。第一件事是改设备名称,方便以后同时管理多台设备时区分。配置在系统视图下做:
bash复制system-view
sysname Core-SW01
sysname命令就是给设备起名字,设置后提示符会立刻变成[Core-SW01]。接下来配置一个管理IP地址。如果设备是三层交换机,通常我们会给VLAN接口配置IP地址,比如给VLAN 1配一个管理地址:
bash复制interface Vlan-interface 1
ip address 192.168.10.2 24
注意ip address后面的掩码可以写成24,也可以写成255.255.255.0,H3C两种写法都支持。如果设备是路由器,则通常在物理接口或子接口上配IP,比如:
bash复制interface GigabitEthernet0/0
ip address 10.1.1.1 255.255.255.0
配完地址之后,建议马上测试一下连通性。在用户视图下ping自己的网关或者对端地址,确认IP配置没有手误。很多人配完IP不看提示,结果掩码写错,排查了半天才发现是地址段都不在一个网段。
还有一件事我强烈建议开局就做:配置登录密码。因为Console口默认无认证,谁拿到Console线都能控制设备,非常危险。可以在系统视图下设置Console口的认证方式:
bash复制user-interface console 0
authentication-mode password
set authentication password simple Admin@123
这里simple表示明文显示密码,如果怕别人看到配置里的密码,可以用cipher加密保存。除了Console口,VTY(虚拟终端)口的密码也要设置,否则后面开SSH也没法登录。配置VTY登录的基础操作后面讲SSH时会一起覆盖。
3. 日常巡检最常用的display命令族
3.1 查看设备状态、接口和MAC表
H3C命令里出现频率最高的就是display,它的作用相当于查看各类信息。所有display命令都可以在用户视图和系统视图下执行,不影响配置。我巡检时最常用的几条包括:
display version:查看设备的软件版本、硬件型号、启动时间等,定位软件版本问题时必用。display current-configuration:查看当前生效的配置,简称display cur,这是排障第一命令,能快速看到设备全局配置。display interface brief:查看所有接口的简要状态,包括端口UP/DOWN、速率、双工模式,一眼就能看出哪个口没起来。display vlan:查看VLAN的划分和端口成员关系。display mac-address:查看MAC地址表,排查二层转发问题时候很有用。display arp:查看ARP表,三层互通有问题时先看ARP学没学到。
我拿display interface brief举个例子。输入之后,设备会输出一张表,每一行对应一个物理接口,关键字段包括Link(物理链路状态)和Protocol(协议状态)。如果你看到某个接口 Link 是 UP 但 Protocol 是 DOWN,多半是封装或协商问题;如果 Link 就是 DOWN,那就是物理链路问题,检查网线、光模块和对端设备。
3.2 组合过滤让输出不再刷屏
display命令输出内容经常很长,尤其是display current-configuration,动辄几百行。如果只想看某个接口的配置,可以在命令后面跟接口名,比如:
bash复制display current-configuration interface GigabitEthernet1/0/1
如果只想看配置里和某个关键词相关的部分,可以在H3C的display命令后面用include做过滤,这是我很喜欢用的一个功能。比如想看当前配置里所有带192.168.10的配置行:
bash复制display current-configuration | include 192.168.10
竖线后面的include就是包含匹配。类似的关键词还有begin和exclude:begin Vlan表示从第一个出现Vlan的行开始显示;exclude表示排除某些行。我经常用display current-configuration | begin interface 快速跳到接口配置段开始的位置,省去翻屏幕的功夫。
另外,display输出如果太长,系统会自动分页,屏幕底部出现---- More ----,这时候按空格翻页,按回车逐行滚动。如果不想一页页翻,可以直接按Ctrl+C中断输出。有很多教程说要按Ctrl+Z,但H3C里Ctrl+Z的作用其实是返回到用户视图,跟中断输出不是一回事,这个区别容易踩坑。
4. 从零配置SSH远程登录:完整命令序列与踩坑记录
4.1 生成RSA密钥并开启SSH服务
说实话,现在要是哪个设备还开着Telnet,我第一个建议就是赶紧换掉。Telnet是明文传输,用户名密码直接裸奔在网络上,抓包就能看见。H3C设备配置SSH远程登录并不复杂,但有几个顺序容易搞错,我先讲讲正确的操作序列。
第一步,生成RSA密钥对。SSH登录的加密和认证过程依赖设备上的主机密钥,所以必须先有密钥。系统视图下执行:
bash复制public-key local create rsa
执行过程中会提示输入密钥长度,默认是1024,我建议直接输2048,安全性更好。也可能会提示是否覆盖已有密钥,如果之前生成过,会询问是否覆盖,按Y确认即可。
第二步,开启SSH服务:
bash复制ssh server enable
这个命令在系统视图下执行。有些版本可能还会要求指定SSH版本,默认支持SSH2,不需要额外配置。
4.2 SSH与登录认证的联动配置
第三步是配置VTY用户接口的认证方式为SSH,并且设置登录用户。SSH登录最终要落在VTY线路上,所以配置链路是这样的:
bash复制user-interface vty 0 4
authentication-mode scheme
protocol inbound ssh
quit
这里authentication-mode scheme表示使用本地或者远程认证方案,protocol inbound ssh表示只允许SSH协议进这个VTY口。我建议不要额外开Telnet,除非有特殊情况,否则攻击面越小越好。
第四步是创建设备管理账号,因为前面指定了scheme认证,设备会去本地用户表里查找登录用户。命令如下:
bash复制local-user admin class manage
password simple Admin@123
service-type ssh
authorization-attribute user-role network-admin
quit
注意class manage是设备管理类的本地用户,和普通网络接入用户是不同的分类。service-type ssh限定了这个用户只能用于SSH登录。authorization-attribute user-role network-admin给了管理员权限,如果忘了给权限,登录进去以后可能连system-view都进不了,只能看不能改。
4.3 实测中常见的连接失败原因
配置完这些,SSH应该就能登录了。但我实际踩过的坑不少,总有几个典型问题反复出现,我列出来你对照着排查:
第一,protocol inbound ssh配置后,用SSH客户端连不上,提示“Connection refused”。先确认设备上是否执行了ssh server enable,另外确认VTY接口配置的是scheme还是password。如果配了password但没配本地用户,也会连不上。可以用display ssh server查看SSH服务状态。
第二,SSH登录时提示“Authentication failed”。这种一般是本地用户密码错误,或者service-type ssh没配。还有一种情况是账号的authorization-attribute user-role没有指定角色,导致认证通过后无法进入系统视图。建议登录后执行display current-configuration | include local-user检查用户配置。
第三,生成密钥时如果设备时间不对,可能导致SSH握手异常。这个比较冷门,但我在一台时间严重错误的设备上遇到过,最后校正时钟后SSH就正常了。所以配置SSH前顺手看下display clock,时间不对就改一下,能省不少事。
5. 业务上线必备:VLAN、Trunk和静态路由的组合配置
5.1 创建VLAN并划分接口
日常组网里,VLAN划分是基本功。H3C创建VLAN的命令很简单,系统视图下执行:
bash复制vlan 10
name Office
quit
这会在设备上创建一个VLAN 10,名字叫Office。接下来要把接口划进VLAN里。如果是二层接口,直接在接口视图下设置端口的链路类型和VLAN。比如把GigabitEthernet1/0/1划入VLAN 10:
bash复制interface GigabitEthernet1/0/1
port link-type access
port access vlan 10
这里port link-type access先指定端口为Access模式,然后port access vlan 10把它划进VLAN 10。Access口一般接终端设备,不要误配在交换机互联口上。如果是接另一台交换机,通常要用Trunk口。
5.2 Trunk接口放通与PVID设置
Trunk口的作用是在交换机之间透传多个VLAN的流量。H3C的Trunk配置套路大概是:
bash复制interface GigabitEthernet1/0/24
port link-type trunk
port trunk permit vlan 10 20 30
port trunk pvid vlan 1
port trunk permit vlan指定了这台Trunk口允许透传哪些VLAN,可以写多个VLAN,也可以写all。pvid指的是当这个Trunk口收到未打标签的帧时,把它们归类到哪个VLAN,默认是VLAN 1。这里有个细节我提醒一下:很多新手只配置了permit vlan,忘记配置对端交换机,导致两边Trunk放通的VLAN不一致,业务自然不通。所以配置完Trunk,一定要在两台交换机上都执行display port trunk查看放通列表。
还有一个常见坑:H3C的Trunk端口默认放通所有VLAN,但某些老版本上可能只放通VLAN 1。如果你发现跨交换机的VLAN不通,先查两边Trunk的permit vlan是否一致,这是个高频故障点。
5.3 让不同网段互通:静态路由命令
不同VLAN之间如果要三层互通,通常用VLAN接口来终结。比如VLAN 10的网关是192.168.10.254,VLAN 20的网关是192.168.20.254,那就分别创建Vlan-interface并配置IP:
bash复制interface Vlan-interface 10
ip address 192.168.10.254 24
quit
interface Vlan-interface 20
ip address 192.168.20.254 24
如果跨设备访问更远的网段,就要配置静态路由。比如当前交换机要访问192.168.100.0/24,下一跳是路由器接口10.1.1.254:
bash复制ip route-static 192.168.100.0 24 10.1.1.254
配置完成后,用display ip routing-table查看路由表有没有这条路由。有时候你发现静态路由配了但不通,最常见的两个原因:一是下一跳地址写错,二是出接口或对端设备没有返回值。排障时先ping下一跳,通再ping目标地址,这是最基本的思路。
6. 排障命令实战:ping不通、丢包和环路怎么办
6.1 扩展ping和tracert的用法
遇到网络不通,ping是最先想到的命令。但H3C的ping命令支持很多扩展参数,比Windows命令行里的ping要强大得多。直接在用户视图敲ping不带参数时,是标准ping,发5个包,包大小为56字节。如果需要连续测试丢包率,可以进入扩展模式:
bash复制ping -c 100 -s 1500 -t 2000 192.168.1.1
参数说明:-c指定发送包数,-s指定报文长度,-t指定超时时间(毫秒)。比如打视频会议前,用1500字节的大包去ping网关,可以顺带测试MTU问题。如果大包ping不通,小包能通,多半是MTU或者分片问题。
tracert命令用于追踪路径,定位在哪一跳断了。H3C的tracert用法:
bash复制tracert -a 192.168.10.254 8.8.8.8
-a指定源地址,也可用-m指定最大跳数。需要注意,tracert依赖路径上设备对ICMP超时消息的正常回应,有些设备默认关闭了ICMP功能,导致tracert输出全是星号,这并不一定代表链路真的不通,要结合其他现象判断。
6.2 用debugging和日志定位问题
如果ping和tracert都定位不到,比如接口状态正常、VLAN也对、路由也在,但业务就是不通,这时候就需要看报文层面的东西了。H3C的debugging命令可以开调试,但切记不要在生产设备上长时间开,否则CPU会飙升。
比如我想看某个接口收到和发送的ARP报文:
bash复制debugging arp packet
terminal debugging
terminal monitor
注意要先执行terminal debugging和terminal monitor,否则调试信息不会在终端显示。用完之后,记得及时执行undo debugging arp packet关掉调试,再执行undo terminal debugging关闭终端调试。
遇到复杂的丢包或环路问题,建议先看日志。H3C的日志分为信息和告警,用display logbuffer查看缓冲区日志。比如端口频繁UP/DOWN、发现环路、配置冲突等,都会在日志里留下记录。我处理过好几起反复断网的故障,最后都是靠display logbuffer里端口状态切换的日志定位到对端设备连了环路导致的。
还有一个排障利器是display diagnostic-information,一条命令把所有诊断信息打包输出,包括设备状态、内存、CPU、接口统计、配置等。这条命令输出很长,通常配合保存到文件或者用SecureCRT记录日志使用。故障时执行一下,存档发给厂商支持,是非常好的习惯。
6.3 物理层与数据链路层的快速定位顺序
我自己的排障顺序,从底层往上层走:先看display interface brief确认端口UP没有,再看display mac-address确认MAC学习是否正常,然后看display arp确认三层邻居是否学到,最后看路由表和ping。很多人一上来就ping,ping不通就开始怀疑路由,结果折腾半天发现是网线松了或者光模块坏了。
这里分享一个判断环路的经验:如果设备CPU持续很高,同时display mac-address里同一个MAC地址出现在多个端口,或者日志里出现“MAC address flapping”之类的告警,大概率是有环路。可以用display loopback-detection或者display stp brief查看环路检测和STP状态。H3C交换机默认生成树协议可能没有完全开启,新接入的交换机连成环会严重拖垮网络。建议在接入交换机上启用STP/RSTP,尤其是连接终端的端口,配置边缘端口来加速收敛,这是很多工程里容易漏掉的安全措施。
在命令行下混了这么多年,我最大的体会是:H3C的命令看起来繁复,但只要理解视图切换和display一族的核心逻辑,再复杂的功能都是“进入某个视图、执行配置命令、检查生效状态”这三步的循环。最后再分享一个小习惯:每次修改配置后,我都会执行save保存,然后顺手用display current-configuration | include确认关键配置真的生效了,这能帮你避免“重启丢配置”和“配置没生效”的大坑。
