在路由器的使用和配置过程中,有时因操作失误或系统故障,致使路由器IOS操作系统的丢失,导致路由器无法进入正常工作,下面以Cisco2611为例,简要介绍一种方便可靠的IOS操作系统恢复的方法。
一、路由器的基本组成及有关术语
路由器由硬件和软件组成。硬件主要包括处理器、内存、接口、控制端口等物理硬件和电路组成;软件主要由路由器的IOS操作系统和运行配置文件组成。
硬件部分:
1、 处理器
与计算机相类似,运行着IOS的Cisco路由器也包括一个“中央处理器(CPU)”。不同系列和型号的路由器,CPU也不尽相同。Cisco一般采用两种类型的处理器,如Motorola68030和Orion/R4600等。路由器的处理器负责执行转发数据包所需的工作,如维护路由器和桥接所需的各种路由表和路由运算等,路由器对数据包的处理速度很大程度上取决于处理器的类型和性能。
2、 内存
Cisco路由器主要采用下列四种类型的内存:ROM、FLASH、RAM、NVRAM。RAM是会在路由器启动或供电间隙时丢失其内容的唯一的一种内存,各种内存的主要作用如下:
①ROM:
ROM 保存着路由器的引导或启动软件。这也是路由器运行的第一个软件,负责让路由器进入正常的工作状态。有些路由器将一套完整的IOS保存在ROM中,以便在另一个IOS不能使用时,作应急之用。ROM通常存放在一个或多个芯片上。
②FLASH:
FLASH可以形象地比作我们常用的PC机的硬盘,但远没有硬盘的容量大,主要用处是保存IOS软件,维持路由器的正常工作。若路由器安装了FLASH,它便是用来引导路由器的IOS软件的默认位置。只要FLASH的容量足够大,便可以保存多个IOS映象文件,以提供多重启动。FLASH主要安装在主机的SIMM槽上,或是一块PCMAIC卡。
③RAM
主要存放IOS系统路由表和缓冲,即平常所说的运行配置,IOS通过RAM满足其所有的常规存储的需要。在配置IOS时,就相当于修改了路由器的运行配置。
④NVRAM
NVRAM的主要作用是保存IOS在路由器启动时读入的配置数据,即常说的启动配置或备份配置。当路由器加电启动时,首先寻找和执行的即是该配置,如果该配置存在,路由器启动后,该配置就成了“运行配置”,当修改运行配置并执行存储后,运行配置就被复制到NVRAM中,当下次路由器加电后,该配置就会被自动调用。
3、 接口
所有路由器都有“接口(Interface)”,每个接口都有自己的名字和编号。一个接口的全名由类型标识及数字构成,编号自0开始。
对于接口固定的路由器(如2500系列)或采用模块化接口的路由器(如4700系列),在接口的全名称中,只采用一个数字,并根据它们在路由器的物理顺序进行编号,如 Ethernet0、Serial0等;
对于支持“在线拨插和删除”或具有动态更改物理接口配置的路由器,其接口全名称中则包含两个数字,如2600系列、7200系列,其接口标识名称为Ethernet0/0、Serial1/0等;
对于支持“万用接口处理器(VIP)”的路由器,其接口编号形式为“插槽/端口适配器/端口号”,如7500系列路由器,其接口标识名称编号为:Ethernet4/0/1等。
4、 控制台端口和辅助端口
所有的路由器都有控制台端口,能使用户或管理员利用终端与路由器进行通信,完成路由器配置;大多数路由器还有一个辅助端口,通过连接Modem,使用户或管理员对路由器实现远程管理。
运行于路由器的软件主要是IOS和进程。运行在相同或不同的路由器中的IOS 有不同的版本,可能通过"show version"命令进行查看;进程则是在路由器上实现某种特殊功能的运行程序,如IP包的选择是由一个进程完成的,IPX包的路由选择则是由另一进程完成的。
二、IOS系统恢复
1、 准备工作
当路由器的IOS操作系统丢失后,路由器便无法进入正常的工作状态,但你也不必紧张和恐慌,下面以Cisco2611为例,介绍如何快速地恢复路由器的IOS操作系统。可以找一台PC机和相应的电缆,按照下图正确地连接设备。
2、 恢复IOS操作系统
首先将IOS映象文件拷到在PC机上,安装tftp_server应用软件并运行该程序,然后键入如下命令:
ip_address = 192.168.1.1
ip_subnet_mask = 255.255.255.0
default_gateway = 198.168.1.1
tftp_server = 192.168.1.2
tftp_file = c2600-11-3.bin
tftpdnld
待出现提示符后,你便成功地完成了IOS映象文件的恢复,通过相应的配置,路由器就可以正常运行和使用了。
3、 注意的几个问题:
①在连接运行tftp server的PC 机至路由器时,必需使用路由器的第一个以太口,即Ethernt0(对2500系列等),Ethernet0/0(对2600系列等),其它系列略有差别,可根据使用手册进行确定。
②在使用连接电缆时,一定要用交叉线,因这种情况属DTE与DCE之间的连接。
③在运行tftp server的PC 机上,一定要有相应的路由器的IOS印象文件,可以通过多种渠道和多种方式获得该文件。
④tftp server的地址可以随意定义,但必须与路由器定义的地址在同一网段上。
在ROMMON状态下,恢复2600和3600系列路由器的IOS
不小心把IOS删掉或者升级IOS失败,重起后进入ROMMON(ROMMON状态是ROM MONITOR的缩写)状态,是比较常见的事,对一个新手而言,前者的可能要大些。两者都可能使路由器进入ROMMON状态,不能进行正常的路由转发功能和软件配置,在这种模式下,原IOS中的大部分命令都无法使用。那怎么办呢?根据Cisco网站的资料,我翻译整理了两种常用的方法:1.使用TFTP恢复IOS;2.使用Xmodem恢复IOS。不同的路由器的命令有些不一样,这里以2600和3600系列路由为例,但是思路应该是差不多的,下面分开讲一下这两种方法:
在进行恢复之前,可以先看一下路由器的Flash里文件,用命令:dir flash:;注意命令中flash后面跟冒号(:),执行命令后会显示flash现存的IOS大小和文件名,如下面:
1. rommon 1 > dir flash:
File size Checksum File name
2179331 bytes (0x214103) 0x7b95 c1600-nsy-mz_112-15a_p
File size Checksum File name
2179331 bytes (0x214103) 0x7b95 c1600-nsy-mz_112-15a_p
如果File name和File size的两项都是符合你的要求的,正确无误,那么你就不必要进行升级。这样也许是你的config-register的设置有问题,正常的一般config-register应该是0x2102的。注意0x2102中的最后一位值2, 最后一位值在2到F都是正常的。注意config-register的值控制着路由器的启动!如果最后一位数值不是在这个范围内,可以使用confreg命令来改变它的值。关于config-register的16bit的每bit的含意,可以看一下cisco的技术资料,这里就不多说了。如果File name和File size的两项有一项是错的,那就进行下面的升级步骤:
一、 使用TFTP恢复IOS
使用交叉的网线连接你的路由器以太口和装有TFTP Server软件的PC机,在PC机上启动TFTP Server软件,并把新的IOS文件放在TFTP server所在目录的根目录下,如:你的TFTP Server软件在机器装的是Cisco TFTP Server目录,那么就把新的IOS文件放在Cisco TFTP Server目录下就可以了。用控制线将调试机器与路由器连接起来。
接下来的事就是在路由器进行操作了,在路由器上首先要设置一下ROMMON状态的环境变量,注意所有的环境变量都是大小写敏感的,一定要注意了!往往出错就是因为这个原因。具体下面设置如下:
打开机器的超级终端工具,连接上ROUTER,此时窗口中出现
的命令行提示符为: ROMMON 1 > (其中“1”代表命令行的行数)。在提示符后输入命令:
ROMMON 1 >IP_ADDRESS= ROUTER的IP地址(要和TFTP软件所在的机器在同一网段内)
ROMMON 2 >IP_SUBNET_MASK= ROUTER的子网掩码
ROMMON 3 >DEFAUT_GATEWAY= 默认网关地址(可以没有,也可以是TFTP服务器)
ROMMON 4 >TFTP_SERVER= TFTP 服务器IP地址
ROMMON 5 >TFTP_FILE= IOS文件名(只给出文件名,不需要路径)
ROMMON 6 >tftpdnld 回车
注意:前面的几条命令必须使用大写,而最后的tftpdnld则要用小写。设置完后要用sync命令保存环境变量到NVRAM,用set命令进行察看设置。
在tftpdnld命令执行后,只要根据提示选择,就可完成文件的传输。当文件传输完后,将自动回到命令行下,输入reset重启ROUTER,重启后就又回到了熟悉的IOS模式下 甚至连以前配置的信息都不会丢失。
下面是具体的例子:
Example
rommon 16 > IP_ADDRESS=172.16.0.1
rommon 17 > IP_SUBNET_MASK=255.255.255.0
rommon 18 > DEFAULT_GATEWAY=172.16.0.2
rommon 19 > TFTP_SERVER=172.16.0.2
rommon 20 > TFTP_FILE=c2600-is-mz.113-2.0.3.Q
rommon 21 > tftpdnld
IP_ADDRESS: 172.16.0.1
IP_SUBNET_MASK: 255.255.255.0
DEFAULT_GATEWAY: 172.16.0.2
TFTP_SERVER: 172.16.0.2
TFTP_FILE: c2600-is-mz.113-2.0.3.Q
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 c2600-is-mz.113-2.0.3.Q from 172.16.0.2 !!!!!.!!!!!!!!!!!!!!!!!!!.!!
File reception completed.
Copying file c2600-is-mz.113-2.0.3.Q to flash.
Erasing flash at 0x607c0000
program flash location 0x60440000
rommon 22 >
二、 使用Xmodem恢复IOS
使用Xmodem和TFTP的主要区别就在于传输的途径不一样,TFTP的IOS传输必须经过以太网线,而Xmodem则是通过控制线来传输的,所以使用Xmodem恢复IOS就不必进行PC机和路由器的网线连接,也不需要IP地址方面的设置,省了不少事。但是Xmodem是通过控制线(console)来进行传输的,一般和cisco路由器相连的控制线波特率是9600,就是9.6k/s,速度很慢传输一个几M大小的文件需要比较长的时间,需要耐心的等待。等待总是让人很焦虑,我就是一个不喜欢等待的人。幸好,还可以在路由器上更改波特率,最大是115200,即115.2K/S,虽然相对100M/s的快速以太网相差甚远,但是比9.6k/S的蜗牛速度爽多了吧,所以先进行默认波特率的修改,可以用confreg命令来修改,如下:
rommon 2 > confreg
Configuration Summary
enabled are:
load rom after netboot fails
console baud: 9600
boot: p_w_picpath specified by the boot system commands
or default to: cisco2-C3600
do you wish to change the configuration? y/n [n]: y
enable "diagnostic mode"? y/n [n]: !--- pressing "Enter" accepts the
!--- default (value between the brackets)
enable "use net in IP bcast address"? y/n [n]:
disable "load rom after netboot fails"? y/n [n]:
enable "use all zero broadcast"? y/n [n]:
enable "break/abort has effect"? y/n [n]:
enable "ignore system config info"? 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 [7]: 7
change the boot characteristics? y/n [n]:
Configuration Summary
enabled are:
load rom after netboot fails
console baud: 115200
boot: p_w_picpath specified by the boot system commands
or default to: cisco2-C3600
do you wish to change the configuration? y/n [n]:
You must reset or power cycle for new config to take effect
改完了,你需要重起一下,让配置生效,注意,你的调试机器上的超级终端的连接波特率也要改为115200,不然你重起后你可能看见的就是一堆乱码#^¥&%×^×^,呵呵。
接下就是用xmodem命令来做了,xmodem的使用方法如下:
rommon 1 > xmodem [-cyrx]
选项
功能
-c 传输过程中使用 CRC-16 检查. 缺省的是 8-bit CRC.
-y ymodem-batch 协议使用CRC-16错误检查
-r 让软件传到DRAM中,缺省的是Flash中。
注意: 不推荐!重起后,DRAM的文件会丢失,你还要进行一次恢复IOS.
-x 让软件传到DRAM中,但是不执行,除非使用launch 命令。
注意: 不推荐!同上一个参数-r
-f 擦除Flash里全部的文件
这个选项是1600系列路由器指定的;在其他平台上是缺省项
Examples:
rommon 1 > xmodem -cf c1600-nsy-mz_112-15a_P
rommon 1 > xmodem -y c2500-js-mz_120-14
让我们step by step来试试:
1. 来执行xmodem命令:rommon 1 > xmodem c1600-nsy-mz_112-15a_P
c1600-nsy-mz_112-15a_P是我们打算在路由器中保存的文件名,你可以起自己想要的名字,不过最好是按原文件的名字来。
2.等待ROMmon 提示信息,类似下面:
Ready to receive file c1600-nsy-mz_112-15a_P ...
3.ok,可以进行文件传输了,在超级终端界面,点击鼠标右键,选择发送文件,弹出的对话框,上面选择你要传送到路由器内的新的IOS,下面选择Xmodem协议。然后点击发送,就可以了。如下:
4.接下来就是文件传输的界面了,耐心些等待吧……:)
5.当显示:Download Complete!信息时,就差不多万事大吉了,不过做为列行的检查还是必要的,用命令:dir flash: 看看文件是不是已经正确无误的传过去了。
rommon 1 > dir flash:
File size Checksum File name
2179331 bytes (0x214103) 0x7b95 c1600-nsy-mz_112-15a_p
File size Checksum File name
2179331 bytes (0x214103) 0x7b95 c1600-nsy-mz_112-15a_p
6.哈哈,到了最后了:使用 reset或者 bootflash:[filename] 命令,如下显示:
rommon 1 > reset或者rommon 1 > boot flash:c1600-nsy-mz_112-15a_P
重起路由器,ok了吗?如果已经进入正常的界面了,那就恭喜你了,IOS恢复就成功了,你可以检查一些看看:show version;show flash等。但是别忘了,刚才你把默认的控制线波特率9600改为115200了,现在要做就是改回来。
命令:config t;
config-register 0x2102;
end。