Dynamips是一个基于虚拟化技术的模拟器,用于模拟思科的路由器。
Dynagen是思科模拟器的前端。它使用类似Windows下的ini配置文件来生成网络拓扑,主要用于分配端口的配置,生成和匹配NIO描述符,指定桥、帧中继、ATM交换机等。它提供了一个管理端口用于列出设备,恢复和保存实例,管理PC空闲时间,抓包等等。
一般而言,模拟器的前端会有图形化的界面,更容易进行直观的配置,Dynamips+Dynagen这种命令行的方式会显得有些鸡肋。但如果想自己编写一个管理模拟路由器的程序,就需要对命令行的配置有一定的了解。
一.安装Dynamips+Dynagen
1.在http://sourceforge.net/projects/dyna-gen/files/这里下载Dynamips和Dynagen的安装包
2.安装支持包libpcap,详细步骤参考这里
3.安装Dynamips
[root]# cp dynamips-0.2.8-RC2-x86.bin /usr/bin/dynamips
[root]# chmod +x /usr/bin/dynamips
[root]# ln -s /usr/bin/dynamips/dynamips-0.2.8-RC2-x86.bin dynamips
说明:下载的如果是bin文件,是可执行文件,改名放入对应的位置即可。如果是RPM文件,直接安装即可。
4.安装Dynagen
[root]# rpm -ivh dynagen-0.10.1-1.el6.rf.noarch.rpm
5.下载思科的ISO文件
二.编写拓扑配置文件
编写*.net配置文件,里面存储模拟路由器的相关信息,这里以编写test.net为例
[root]# vim test.net
autostart = False
[localhost]
workingdir = /tmp
prot = 7200
udp = 10000
[[2691]]
image = root/IOS/c2691-advipservicesk9-mz.124-25d.bin
ram = 128
[[ROUTER R0]]
model = 2691
console = 2000
slot0 = GT96100-FE
f0/0 = NIO_linux_eth:eth1
这里模拟了一个思科2691型号的路由器R0,其网口f0/0连接到本地电脑的eth1网口,远程登陆端口为2000
三.编写启动脚本
每次启动需要先开启Dynamips守护进程,然后再启动模拟器运行.net文件。可以编写脚本减少工作量
[root]# vim start_dynamips.sh
#!/bin/bash
echo "*===========================*"
echo "* 开启Dynamips守护进程 *"
echo "*===========================*"
/usr/bin/dynamips -H 7200 &
[root]# vim start_dynagen.sh
#!/bin/bash
echo "*===========================*"
echo "* 开启Dynagen *"
echo "*===========================*"
/usr/bin/dynagen test.net
编写完脚本还要记得赋予权限
[root]# chmod 777 start_dynamips.sh
[root]# chmod 777 start_dynagen.sh
四.运行模拟器
1.运行Dynamips
2.运行dynagen
3.查看模拟的路由器设备列表,并启动路由器R0
4.第一次启动时,需要计算路由器的idlepc值,这里截不到图了,借用下别人的图
5.现在可以用telnet登陆路由器R0,进行相关配置
五.模拟器保存配置文件
有两种常见的方法:
方法一:用Dynagen提供的export命令。注意,使用此命令之前,必须先保存配置文件,用write命令或是用copy run start,然后再用下面命令
=> export R1 d:\
The directory "d:\" already exists. Ok to overwrite (Y/N)? y
Exporting R1 to "d:\\R1.cfg"
=>
执行结束后,会在D:\有一个R1.cfg的文件,当然,你也可以用export /all D:\来导出所有设备的配置文件。
如果你想导入以前保存好的配置文件的话,就用import /all D:\ 命令。
方法二:用Dynagen的save命令。这种方法备份的配置信息会保存在当前用的net文件中,这些信息是经过处理过的,你看不明白,它会在每个路由器中增加一个属性,如:
[[router R1]]
model = 3660
f0/0 = NIO_gen_eth:\Device\NPF_{BA68CE2E-1ACE-4DCB-AF5D-92179DD5F49C}
configuration = IQohIExhc3QgY***********Cg==
下次再启动net文件时,系统会提示你是否加载配置信息,你自由选择就可以了。