ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

思科路由器密码恢复:ROMmon与confreg 0x2142实战

思科路由器密码恢复:ROMmon与confreg 0x2142实战 干网络运维这行久了碰上思科路由器忘记密码这种事基本每年都得来上一两次。绝大多数情况不是自己设的密码忘了而是接手的设备、前任留下的机器或者几年前的配置谁也没记录。思科路由器密码重置这件事说穿了并不复杂但它有一个绕不开的前提你得能物理接触到设备的console口。只要人在现场、手里有一根console线、笔记本上有终端软件把特权密码清掉重新设一个十几分钟完全能做到。下面就把我这些年踩过的坑、不同平台之间的差异还有那些文档里不会写的细节一次性讲清楚。不管你是刚入行的新手还是偶尔被叫去救急的老手照着走都能落地。1. 先定位问题思科路由器的密码分好几层别急着动手很多人一听说“密码忘了”第一反应就是找复位孔按下去或者直接长按面板上的按钮。思科的企业级路由器、交换机上根本没有家用那种一键复位的东西就算有按下去的结果是整个配置被清空网络直接断掉。所以在动手之前先花五分钟搞清楚忘的是哪一层密码能省掉一大堆返工。1.1 四种密码各管什么先对号入座思科IOS设备的密码不是单一一个而是分成几个层级管的事情完全不同Console密码接console线进CLI时要输的那个属于line con 0下的配置。忘掉它意味着你连命令行都进不去这是最麻烦但也最常见的一种。特权密码enable进入特权模式#提示符时要输的。它又细分为enable secret和enable password两种前者是哈希存储、优先级更高后者是明文或type 7弱加密两者同时存在时secret生效。VTY密码远程telnet或SSH登录用的属于line vty 0 4下面的配置跟console密码是两套。AAA账号密码如果设备上配了aaa authentication登录走的是本地用户名或认证服务器里的账号这时候改line密码可能毫无作用得从AAA配置入手。我见过最多的误判就是明明忘的是enable secret结果有人去改console密码改完发现还是进不去特权模式。所以第一步一定是先把“卡在哪一层”确认清楚再决定用哪种恢复方式。注意如果设备配了aaa authentication login default group tacacs local这类命令并且TACACS服务器不可达可能出现即使本地密码正确也无法登录的情况这种属于认证源可用性问题不只是密码问题。1.2 哪些能救、哪些只能走密码恢复流程能“救”的情况其实有限。如果你还能进用户模式但进不了特权模式那算运气好——只要不是AAA强制认证通常还有办法。如果连console登录界面都过不去那就只能走标准的密码恢复流程也就是通过ROMmon模式让设备忽略启动配置来启动。还有一个容易被忽略的点有些设备的管理员密码不是在IOS里而是在底层固件或引导层。比如部分无线控制器、ASA防火墙有独立的密码恢复流程操作手法和IOS路由器完全不同。这一点在动手前一定要查清楚设备型号和软件版本别拿路由器的经验往防火墙上套。我个人的经验是接到任务先做三件事确认型号、确认IOS版本、确认能否物理接触。这三样确认完基本就能判断出用哪套方案后面所有操作都是围绕这个判断展开的。2. 动手前的准备清单缺一样就得白跑现场密码恢复本身流程不长但准备工作如果没做足很容易在现场卡住半小时甚至更久。尤其是那种机房在郊区、设备在机柜最里面、console线还找不着的情况提前把东西备齐比什么都重要。下面这份清单是我自己出勤前必查的。2.1 物理连接与终端软件参数console连接是整件事的生命线硬件和软件都得对上项目常见配置说明线缆类型USB转RJ45 / DB9转RJ45新笔记本基本没有串口USB转接线是主流驱动CH340、FTDI、Prolific插上不识别八成是驱动没装提前装好波特率9600绝大多数IOS设备默认9600数据位/校验/停止位8 / None / 1即常说的8-N-1流控None开了流控经常出现只显示一半字符特殊波特率115200部分ISR 4000、ASR平台引导阶段用这个终端软件用PuTTY、SecureCRT、MobaXterm都行关键是要能找到发送Break信号的功能。PuTTY里是在会话窗口右键选“Special Command → Break”SecureCRT是“Send Break”MobaXterm有专门的Break按钮。这个功能是进入ROMmon的关键提前熟悉一下位置别到了现场现找。2.2 配置备份与风险评估在动手之前只要设备还能通过任何方式导出配置就一定先备份。哪怕进不去特权模式有些情况下通过TFTP或者从flash里把config.text拷出来也能救回配置。原因很简单密码恢复流程中有一段时间设备是以“空配置”状态运行的如果这期间发生意外重启而你又没把原配置存回去网络就真断了。具体做法是如果还能进特权模式比如只是console密码忘了但enable还记得直接copy running-config tftp:或copy running-config flash:backup-config。如果连特权都进不去那就先执行恢复流程进到特权后第一时间把startup-config加载回来再改密码。风险评估主要是确认这台设备承载的业务。如果是核心出口路由器恢复过程会中断转发几分钟到十几分钟必须提前跟相关方打招呼选在业务低峰期操作。我吃过一次亏工作日中午给一台出口设备做恢复虽然只断了几分钟但正好赶上一个对外接口的定时任务被追着问了一下午。这种事提前沟通好比事后解释省事得多。2.3 版本与平台差异先查清楚不同平台的密码恢复细节差别不小动手前至少要确认这几项设备是传统IOS、IOS XE还是NX-OS三者的引导流程不同。是否有独立的ROMMON/ROMmon版本不同版本的命令关键字可能略有差异。设备是否配置了Secure Boot或镜像签名校验某些新平台会限制从ROMmon启动未签名镜像。是否有堆叠、冗余主控多主控设备恢复时要确认操作的是哪一块。这些信息一般通过show version能看到但如果连登录都做不到就得靠型号和外观判断。我的习惯是提前在网上查到对应型号的密码恢复文档打印或存在手机里现场对照着做比凭记忆靠谱。3. 核心实操ROMmon下改寄存器值绕过启动配置这一节是整篇的重头戏。思科IOS路由器最通用的密码恢复方法核心思路就一句话通过修改配置寄存器的值让设备启动时忽略NVRAM里的startup-config从而以空配置进入系统进去之后再把原配置加载回来改掉密码最后把寄存器值改回去。听起来绕但每一步都有明确目的。3.1 进入ROMmon的方法与判断先把console连好终端软件打开确认能看到设备输出。然后给设备断电重启或者在特权模式下执行reload。在设备刚开始启动、还没加载IOS的那几秒内快速发送Break信号。时机很关键太早太晚都不行一般是在看到类似“System Bootstrap, Version ...”这行字出现前后连续按。成功的标志是出现rommon 1 提示符。如果一直进不去反复重启多试几次或者换用CtrlBreak组合键。有些USB转串口线发送Break信号不灵可以考虑换线或者在终端软件里调整Break的发送方式。进去之后先敲一个?看看有哪些命令不同平台的ROMMON命令集不完全一样。常见的几个rommon 1 confreg 0x2142 rommon 2 resetconfreg是修改配置寄存器reset是重启。这两条是整个流程的核心。注意如果设备提示ROMmon受密码保护少数高安全配置的设备会设置ROMMON密码那这个方法就走不通了需要联系厂商支持或者用其他方式恢复。3.2 confreg 0x2142这一步到底做了什么很多人照着敲命令却不知道原理一旦出问题就完全懵。这里把这个值拆开讲清楚。配置寄存器是一个16位的值每一位控制启动时的不同行为。正常运行时是0x2102二进制展开后几个关键位的作用是0x0001Boot方式0为正常1为诊断模式0x0002是否使用默认启动路径0x0040是否忽略NVRAM中的启动配置0x0100是否禁用Break信号0x2000启动镜像来源选择0x2102 0x2000 0x0100 0x0002表示正常启动、Break可用。0x2142 0x2000 0x0100 0x0040 0x0002多出来的0x0040就是关键——告诉设备启动时不要读取NVRAM里的startup-config。这样设备起来之后就是出厂空配置状态没有任何密码可以直接进入特权模式。改回去的时候在配置模式下执行config-register 0x2102或者重启前在ROMmon里执行confreg 0x2102都行。这一步绝对不能忘否则下次重启设备又会丢配置。3.3 加载原配置、改密码、恢复寄存器值重启之后设备会问你是否进入初始配置对话Would you like to enter the initial configuration dialog?选no。这时候你会看到Router提示符直接敲enable就能进特权模式不需要任何密码。进特权后最要紧的是把原来的配置加载回来Router enable Router# copy startup-config running-config执行完这一步原来的接口配置、路由协议、ACL全都回来了但密码还是旧的或者说原来配置里的密码还在只是当前会话已经处于特权模式。接下来改密码Router# configure terminal Router(config)# enable secret 你的新密码 Router(config)# config-register 0x2102 Router(config)# end Router# copy running-config startup-config如果忘的是console密码还要补一句Router(config)# line con 0 Router(config-line)# password 新密码 Router(config-line)# login Router(config-line)# exit改完之后强烈建议把接口状态检查一遍。因为以0x2142启动时加载配置后部分接口可能处于shutdown状态需要用show ip interface brief确认把该开的口都开起来。Router# show ip interface brief Router# configure terminal Router(config)# interface GigabitEthernet0/0 Router(config-if)# no shutdown最后再copy running-config startup-config保存一次然后reload重启验证新密码能正常登录、配置完整、寄存器值已经回到0x2102。3.4 完整流程实测记录下面是我最近一次在ISR 4331上操作的完整过程时间点还原一下供参考步骤操作耗时1连接console确认9600-8-N-1参数2分钟2重启设备发送Break进入ROMmon1分钟3confreg 0x2142reset30秒4等待IOS启动跳过初始配置5分钟5enable进入特权copy start run1分钟6修改enable secret与console密码1分钟7config-register 0x2102检查接口状态2分钟8保存配置reload验证6分钟总计不到20分钟其中大半时间花在等待IOS启动上。真正需要动手的部分其实也就几分钟。这里面最容易出错的环节是第4步——有些IOS XE设备启动时间较长中途如果按了键可能会打断启动过程耐心等就行。4. 不同平台的差异与特殊场景处理通用流程学会了只能解决大部分IOS路由器和交换机。实际工作中还会碰到各种“非标准”设备这时候照搬流程可能会卡住。下面按平台分类说说差异。4.1 ISR 4000、ASR与IOS XE平台的注意事项ISR 4000系列、ASR 1000系列以及较新的Catalyst 9000运行的是IOS XE底层引导和经典IOS有些区别。主要差异在部分型号的console默认波特率是115200而不是9600连不上先换个速率试试。ROMmon界面的命令提示和经典IOS略有不同但confreg和reset基本通用。某些版本启用了Secure Boot从ROMmon引导镜像时会有额外校验如果镜像被篡改可能会拒绝启动。IOS XE引入了boot命令和包管理机制恢复完成后要确认show boot的输出是否正常。我遇到过一台ISR 4331按标准流程走完配置也回来了但重启后接口全部down。排查半天才发现是因为IOS XE的接口状态和经典IOS的保存逻辑不同必须显式no shutdown并保存否则不会写入startup-config。这个坑后来记在了自己的笔记本上。4.2 Catalyst交换机与传统路由器的操作区别如果手头的“路由器”其实是台三层交换机比如Catalyst 3560、3750密码恢复流程会不一样。这类设备通常没有ROMmon那种confreg命令而是switch: flash_init switch: dir flash: switch: rename flash:config.text flash:config.old switch: boot核心思路是把配置文件改名让设备启动时找不到它起来就是空配置之后再手动加载改名后的文件、改密码、再存回去。Switch enable Switch# rename flash:config.old flash:config.text Switch# copy flash:config.text system:running-config Switch# configure terminal Switch(config)# enable secret 新密码 Switch(config)# end Switch# copy running-config startup-config这套流程和路由器的寄存器法目的一样、手法不同。记住一个判断原则能进switch:提示符的用改名法能进rommon 提示符的用confreg法。4.3 ASA防火墙与无线控制器的特殊处理ASA防火墙的密码恢复又不一样。它进的是ROMmon但操作序列是rommon #1 confreg rommon #2 boot启动后会进入一个特殊的ciscoasa状态这时enable不需要密码然后ciscoasa enable ciscoasa# copy startup-config running-config ciscoasa# configure terminal ciscoasa(config)# enable password 新密码注意ASA上enable password和enable secret的行为与IOS略有差异改完要确认登录方式符合预期。另外部分ASA版本恢复后会自动清除某些配置操作前务必备份。无线控制器WLC更特殊大多数型号没有“保留配置改密码”的选项密码恢复等于配置清空恢复后要重新导入配置。如果手头是WLC一定先确认是否有完整备份否则恢复完等于设备重来一遍。这个坑非常深我见过有人没备份就操作结果整个无线网络配置全丢。4.4 用思科模拟器提前演练一遍如果不是紧急故障强烈建议先在思科模拟器或者GNS3里把流程走一遍。模拟器里的路由器可以随便折腾进入ROMmon、改寄存器、加载配置、保存全套走下来半小时就能熟练。等到真机上操作时心里有底手上不慌。模拟器演练时重点体会这几件事Break信号的发送时机、copy startup-config running-config之后配置的变化、接口状态是否被影响、保存前后show running-config的差异。这些在模拟器里都能观察到真机上就不会一头雾水。很多模拟器还支持导入真实IOS镜像行为和真机接近拿来练手性价比很高。5. 常见问题与排查速查表密码恢复流程虽然固定但现场总会出现各种意外。下面这份速查表是我自己整理的遇到问题按表排查能省不少时间。5.1 进不去ROMmon或console没输出现象可能原因处理方式console完全无输出线缆或驱动问题换线、重装驱动、换USB口输出乱码波特率不对试9600和115200只显示一半字符流控开了终端软件里关闭流控按Break没反应发送方式不对换终端软件或用CtrlBreak一直进不了ROMmon时序不对重启后连续快速发送Break提示ROMmon受密码保护设备启用了ROMMON密码需联系厂商支持5.2 改完密码还是不生效这种情况八成是认证路径的问题而不是密码没改成功。排查顺序确认是否有aaa authentication配置如果有本地密码可能不是最终校验对象。确认enable secret和enable password是否同时存在secret优先改错对象等于没改。确认改的是当前生效的配置还是只改了running-config没保存。确认config-register是否已经改回0x2102否则重启后配置又丢。如果是SSH登录确认line vty下的login local和本地用户名密码是否匹配。我碰到过一次密码明明改了重新登录还是提示失败。查了半天发现设备配了TACACS认证且服务器可达登录走的是服务器账号本地密码根本不参与校验。这种时候改本地密码毫无意义得从认证服务器侧解决。5.3 保存与配置回滚的坑copy running-config startup-config执行成功不代表万事大吉。有几个细节要确认保存后执行show startup-config确认内容与show running-config一致。确认show version里最后一行的Configuration register is 0x2102已经生效。如果设备有多个存储介质flash、bootflash、nvram确认配置存到了正确的介质上。重启验证是必须的不要保存完就走人。真有设备重启后又回到旧配置的案例原因是启动路径指向了另一个配置文件。提示个别平台上copy run start会因为NVRAM空间不足而静默失败最好在保存后show startup-config扫一眼确认关键配置确实写进去了。6. 长期方案让密码恢复这件事不再靠运气密码恢复属于救火救火能力再强也不如把火灾概率降下来。设备一多靠人脑记密码迟早出事下面这些做法是我这几年慢慢整理出来的落地成本不高收益却很明显。6.1 密码资产化管理与配置备份第一条原则是所有设备的密码必须有集中记录的地方而且不是某个人的记事本。可以用密码管理工具也可以有统一的加密文档关键是能被团队里多人访问、有权限控制、有修改记录。设备密码跟人员变动强相关人一走密码就失传这种事太常见了。第二条原则是配置定期备份。路由器、交换机的startup-config最好每周自动备份一次到TFTP或SCP服务器备份文件名带上日期和型号。这样一来就算密码真丢了、设备真挂了恢复起来也有据可依。我自己的做法是写个简单的脚本每月跑一次show running-config并归档成本极低出事时救命。6.2 账号分层与AAA集中认证设备多了之后共享一个enable密码的做法风险很高——一旦有人离职所有设备的密码都得改工作量巨大。更好的做法是为每个人建立独立的本地账号或者接入集中的AAA服务器TACACS、RADIUS。权限按角色划分普通运维只给只读核心变更用高权限账号。保留一个应急的本地账号认证服务器不可达时还能登录。定期审计登录日志发现异常及时处理。集中认证最大的好处是密码恢复这件事会变得简单很多——密码不在这台设备上而在认证服务器里改一次全设备生效也不用担心某台设备密码丢失。最后再分享一个我自己的小习惯每次做完密码恢复我都会把这次操作的完整命令序列、设备型号、IOS版本记到一个专门的本子里标注日期和遇到的问题。几年下来这本笔记比任何官方文档都管用遇到类似型号直接翻旧记录省下的时间相当可观。密码恢复这件事流程是死的现场情况是活的把每次实战都沉淀下来下次遇到就不会再手忙脚乱。
返回列表