CISCO IOS 终极恢复
一 灾难恢复
㈠在ROMmon下使用Xmodem下载IOS:
☆在这之前建议更改控制台速率来加速下载速度(因为默认是9600 bit/s,你可以更改到115200 bit/s )★:
   ①.进入ROMmon模式使用confreg.有些平台不支持confreg这个寄存器配置工具,需要手动更改寄存器值(需要使用一些晦涩的命令).这就需要充分了解这些十六进制值的含义.知道这些也算半个专家了→废话↑↓
  rommon 1 > confreg
      Configuration Summary
      ......
      boot: the ROM moniter
      do you wish to change the configuration? y/n [n]: y
      enable "diagnostic mod" ? y/n [n]:
     ......
     change console baud rate ? y/n [n]: y
     enter rate : 0 = 9600, 1 = 4800, 2 = 1200, 3 = 2400
     4 = 19200, 5 = 38400, 6 = 57600, 7 = 115200 [0]: 7
    change the boot characteristics? y/n [n]:
    Configuration Summary
    enable are:
    breakabout has effect
    console baud: 115200
    boot: the ROM Moniter
   do you wish change the configuation? y/n [n]:
② 在ROMmon模式下使用xmodem恢复Cisco IOS
rommon 1 > xmodem -?
    xmodem: illegal option -- ?
    usage: xmodem [-cyrx]
         -c CRC 16
         -y ymodem-batch protocol
         -r copy image to dram for launch
         -x do not launch on download completion
rommon> xmode -c 2600-is-mz.122-10a.bin
Do not start the sending program yet...
Warning: All existing data in bootflash will be lost!
Invoke this application only for disaster recovery.
Do you wish to continue? y/n [n]: y
Ready to receive file c2600-is-mz.122-10a.bin ...
(注意: 在路由器重起的时候要把原来的console baud改为9600 bit/s)
㈡ 通过配置ROMmon下环境变量使用TFTP(tftpdnld)恢复Cisco IOS
①tftpdnld最少所需的环境变量(:需要注意的是Cisco IOS可是case-senstive的!检查环境变量可以使用set命令):
IP_ADDRESS
IP_SUBNET_MASK
DEFAULT_GATEWAY
TFTP_SERVER
TFTP_FEILE
②使用tftpdnld(很简单,但我把输出也抄了上来)
rommon 1 > tftpdnld
    IP_ADDRESS:172.16.0.12;
    IP_SUBNET_MASK=255.255.255.0
    DEFAULT_GATEWAY=172.16.0.1
    TFTP_SERVER=172.31.0.4
    TFTP_FILE=recovery/original_2003_Jan_22/c2600-mz.121-5
    Invoke this command for disaster recovery only.
    wARNING:all existing data in all partitions on flash will be lost !
    Do you wish to continue? y/n [n]: y
    Receiving recovery/original_2003_Jan_22/c2600-mz.121-5 from
    172.31.0.4 !!!!!!!!!!!!.!!!!!!!!!!!!!!!!!!!.!!
    File reception completed.
    Copying file recovery/original_2003_Jan_22/c2600-mz.121-5 to flash.
    Erasing flash at 0x607c0000
    program flash location 0x60440000
㈢定位和加载Cisco IOS
可使用命令来修改(详细寄存器值极其定义在本文的最后列出):
Router# configure terminal
Router(config)# boot system flash IOS_filename
Router(config)# boot system tftp IOS_filename tftp_address
Router(config)#boot system rom
[Ctr-Z]
Router# copy running-config startup-config
二 密码恢复
注意,enable secret命令通过不可逆的加密函数存放enable secret口令,提供了更强的安全性;然而,如果丢失的口令被加密,将不能恢复在口令(用show startup-config只能看到md5的加密信息→一团乱码.但是通过service password-encryption命令加密的口令却可以恢复).根据Cisco文档,下列Cisco产品(估计是早期产品)使用较晦涩的命令:
Cisco 2000
Cisco 2500
Cisco 3000
Cisco 4000
Cisco AccessPro
Cisco 7000 (RP)
Cisco AGS
Cisco IGS(IGS?让我想起《三国战记》和《西游释厄传》了)
Cisco STS-10x
下列Cisco 产品使用confreg工具:
CIsco 1003             Cisco 7200
Cisco 1007              Cisco uBR 7200
Cisco 1005              Cisco 7500
Cisco 1600              Cisco 12000(传说中的一万两千型Internet路由器Grrr...)
Cisco 1700              Cisco LS1010
Cisco 2600              Catalyst 5500 (RSM)
Cisco 3600              Catalyst 8510-CSR
Cisco 4500              Catalyst 8510-MSR
Cisco 4700              Catalyst 8540-CSR
Cisco AS5x00          Catalyst 8540-MSR
按照下面的步骤恢复Cisco路由器上的密码:
①进入ROMmon模式:在机器加电的60秒内按下Break键(其实是发出Break信号,在PC上是个组合键:+.此外某些终端仿真程序还可以定义用什么键发出该信号)
②:输入字母o或者e/s 2000002命令以读取原始值(一般默认值是0x2102.还可以在普通模式下进如Privilege Exec模式使用show version来查看).当显示出配置值后按下Esc返回提示符.
使用o/r命令(不支持confreg的机器上)配置寄存器码的第六位(与原始值一起.注意是从第0位开始的).例如,如果原始码为0x2102,那么配置第六位为0x2142(hexdecimal0x2102=0010,0001,0000,0010,0x2142=0010,0001,0100,0010)
> 0x2142
(P.S/ 0x2142使机器从闪存中启动,0x2141从ROM中启动.如果系统配有闪存,并且没有受到损坏,0x42是最好的设置.只有在闪存被擦除或者没有闪存的情况下,才能使用0x41.如果值为0x41,只能查看或者清除配置文件,但不能更改口令.闪存擦了或坏了怎么半?)
在支持confreg的路由器上,俺们必须使用该工具.在这个工具中,当被问到:"Do you wish to change configuration[y/n]?"时,按y.,对后续问题都答no.直到出现ignore system config info[y/n]?时,回答yes.对后续问题答no.知道出现Change boot characteristics info [y/n]?输入yes,会出现enter to boot.在次提示符下,输入2并回车则从闪存启动.1从ROM中启动.
③:使用i命令初始化和重启机器.在有些机器上,俺们必须使用boot 命令来初始化的重启.
④机器重启后将进去setup模式.对所有问题答no或直接[Ctrl]+[z].然后进入特权模式
⑤要查看口令,如果没有加密,可以使用more nvram:stratup-config或show startup-config.
要改变口令(例如,口令是加密的):
Router#copy startup-config running-config
在Cisco IOS 10.3以前的版本中使用
Router#config memory
(注意:因为路由器在启动中没有加载配置文件,现在的所有接口都是关闭的)
Router#config terminal
Router(config)#enable secret newpassword
Router(config)#enable password newpassword
Router(config)#line con 0
Router(config)#login
Router(config)#password newpassword
Router#copy running-config startup-config
⑥恢复原始的寄存器值并保存配置文件
Router#config terminal
Router(config)#config-register 0xvalue(默认0x2102)
Router#copy running-config statrup-config
⑦重启机器后一切OK!
三 寄存器配置值及定义

Bits       Hex                   Binary                               Description
0-3   0x000-0x00f   0000,0000,0000,0000      Boot 字段
4        0x0010           0000,0000,0000,0000       快速启动,1=不装载bootstrap映像启动指示的IOS
5         0x0020           0000,0000,0000,0000      1=使用扩展波特率,将波特率置为19220 bit/s以上
6         0x0040           0000,0000,0000,0000      1=忽略NVRAM中的配置文件
7         0x0080           0000,0000,0000,0000       OEM位,1=关闭启动时的Cisco标旗显示
8          0x0100            0000,0000,0000,0000        1=在第一个60秒后关闭break键
9          0x0200            0000,0000,0000,0000         控制用于系统调试的从bootstap程序功能
10         0x0400             0000,0000,0000,0000         netboot广播格式,1=使用全0的广播地址
11-12 0x0800-0x1000 0000,0000,0000,0000          控制console port波特速率,00=9600 bit/s
13       0x2000              0000,0000,0000,0000          对netboot失败做出响应,1=5次失败后从ROM启动
14      0x4000               0000,0000,0000,0000           netboot子网广播,1=子网广播地址
15      0x8000               0000,0000,0000,0000           起用诊断消息,1=起用和使用测试系统配置
Boot字段注释(0-3)
Hex  value             Binary  value                         Description
0x00               0000,0000,0000,0000           启动后驻留在bootstrap中
0x01               0000,0000,0000,0001           从ROM启动
0x02 -0xFF    0000,0000,0000,0000           从指定的默认启动文件启动系统
Console port速率控制位(11-12)
Speed    Binary  value
9600      0000,0000,0000,0000        
4800      0000,1000,0000,0000        
1200      0001,0000,0000,0000        
2400      0000,0000,0000,0000        
扩展Console port速率控制位(11-12且第5位为1)
Speed     Binary  value
19200      0000,0000,0010,0000        
38400      0000,1000,0010,0000        
57600      0001,0000,0010,0000        
115200    0001,1000,0010,0000