Dynagen + Dynamips 使用说明
一、软件介绍
1、Dynamips
http://www.ipflow.utc.fr/blog/
Cisco路由器模拟软件,支持17xx、26xx、36xx、7200等Cisco路由器系列。
它是在计算机上模拟路由器硬件,并在虚拟路由器中运行真实的IOS。
因此,从逻辑上看用户面对的就是真正的Cisco路由器。
2、Dynagen
http://dynagen.org/
一款基于字符界面的、使用Python开发的Dynamips管理前端,也就是说可以通过它更好
地使用Dynamips。Dynagen通过更友好的操作简化了Dynamips的配置和网络拓朴的实现。
3、WinPcap
http://www.winpcap.org
用于实现虚拟路由器与本地网卡的桥接。
二、Dynagen使用
1、安装
安装前需要下载3个软件:WinPcap、Dynagen、Dynamips(可选,建议使用最新版本)
首先安装WinPcap,所有安装项均使用默认配置即可。
其次安装Dynagen,默认安装即可。
最后检查Dynamips官方网站下载的程序版本与Dynagen集成的Dynamips程序版本,
建议使用最新版本的Dynamips程序。
我的个人配置习惯:
a) 更改默认telnet程序 (C:\\Program Files\\Dynamips\\dynagen.ini)
+-----------------------------------------------------
| ...
| telnet = start C:\\windows\\system32\\putty.exe -telnet %h %p
| ...
+-----------------------------------------------------
b) 建立d:\\ios目录,专门存放IOS映像。
c) 建立d:\\cfg-net目录,专门存放各种.net文件。
d) 针对不同IOS映像文件计算主机使用的idlepc值。
e) 获取本地网卡设备ID。
f) 更新已有.net文件的idlepc值和本地网卡设备ID。
2、初始化idlepc参数
2.1) 运行一个路由器实例,这需要事先编辑一个bat文件,请见下面示例。
例一:3640的镜像启动bat文件
+-----------------------------------------------------
| pause
| \"C:\\Program Files\\Dynamips\\dynamips\" -P 3600 -t 3640 -r 128 -X D:\\ios\\c3640-jk9o3s-mz.124-7a.img
| pause
+-----------------------------------------------------
或
+-----------------------------------------------------
| pause
| \"C:\\Program Files\\Dynamips\\dynamips\" -P 3600 -t 3640 -r 128 -p 0:NM-4T -p 1:NM-4E -X D:\\ios\\c3640-jk9o3s-mz.124-7a.img
| pause
+-----------------------------------------------------
例二:7200的镜像启动bat文件
+-----------------------------------------------------
| pause
| \"C:\\Program Files\\Dynamips\\dynamips\" -t npe-400 -X D:\\ios\\c7200-jk9o3s-mz.124-12.img
| pause
+-----------------------------------------------------
例三:2600的镜像启动bat文件
+-----------------------------------------------------
| pause
| \"C:\\Program Files\\Dynamips\\dynamips\" -P 2600 -X -r 96 -p 1:NM-16ESW .\\c2600-adventerprisek9-mz.124-10a.img
| pause
+-----------------------------------------------------
2.2) 登录路由器,当出现“router>”提示符后,按下“Ctrl+]”,再按“i”,稍等一会就会出现idlepc的运算结果,如
+-----------------------------------------------------
| Please wait while gathering statistics...
| Done. Suggested idling PC:
| 0x81538008 (count=64)
| 0x805246fc (count=75)
| 0x81adf56c (count=45)
| 0x8051ffac (count=29)
| 0x8051ffc0 (count=51)
| Restart the emulator with \"--idle-pc=0x81538008\" (for example)
+-----------------------------------------------------
选择count值最大的结果作为本机的idlepc值,以3640为例:
+-----------------------------------------------------
| [[3640]]
| image = D:\\ios\\c3640-jk9o3s-mz.124-7a.img
| idlepc = 0x805246fc /*计算结果中count最大值对应idlepc*/
| ...
+-----------------------------------------------------
3、使用本地网卡通信
运行 Dynagen 安装后出现的批命令 Network device list.cmd ,找到本地网卡的设备ID。
形式为
NIO_gen_eth:\\Device\\NPF_{50FBC283-9098-434E-99FF-FBDB1892247E}
将虚拟路由器的接口与本地网卡桥接,以3640为例:
+-----------------------------------------------------
| [[ROUTER r1]]
| model = 3640
| console = 3001
| f0/0 =
NIO_gen_eth:\\Device\\NPF_{50FBC283-9098-434E-99FF-FBDB1892247E}
| ...
+-----------------------------------------------------
运行虚拟路由器实例,可以发现f0/0自动启用,如果本地网络有可用的DHCP服务器,
f0/0会自动获得IP地址,可以通过 show int f0/0 查看IP。
如果没有DHCP,则可以为 f0/0 手工配置IP地址。
4、设计网络拓朴(.net文件)
下面,以一个.net实例进行说明
#
# Legend: ( Router ) [ Switch ]
#
# Topology:
#
# ( r1 ) ( r2 ) ( r3 )
# | | |
# |-s1/0----------s1/1-| |
# |-f3/0----------f3/2-| |
# |-f3/1----------f3/3-| |
# | |-s1/0----------s1/1-|
# | |-f3/0----------f3/2-|
# | |-f3/1----------f3/3-|
# |-f0/0--Local NIC | |
#
autostart = False
ghostios = True
[localhost]
[[3640]]
image = D:\\ios\\c3640-jk9o3s-mz.124-7a.img
idlepc = 0x6042bdb4
ram = 96
slot1 = NM-4T
slot2 = NM-4E
slot3 = NM-16ESW
[[ROUTER r1]]
model = 3640
console = 3001
f0/0 =
NIO_gen_eth:\\Device\\NPF_{50FBC283-9098-434E-99FF-FBDB1892247E}
s1/0 = r2 s1/1
f3/0 = r2 f3/2
f3/1 = r2 f3/3
[[ROUTER r2]]
model = 3640
console = 3002
s1/0 = r3 s1/1
f3/0 = r3 f3/2
f3/1 = r3 f3/3
[[Router r3]]
model = 3640
console = 3003
5、运行虚拟路由器
5.1) 运行虚拟路由器的步骤是:
A. 运行 Dynamips Server.bat (见Dynagen开始菜单或安装目录)
B. 运行 .net 文件,正常启动后会出现一个基于命令行控制台窗口
C. 在控制台通过各种命令实现路由器的启动、关闭、登录等操作
5.2) Dynagen安装后会自动关联 .net 文件,因此直接运行 .net 文件就可以执行拓朴。
5.3) 在 .net 文件运行产生的控制台上,输入 ? 或 help 可以获得命令帮助。
5.4) 常用命令
A. start r1 启动路由器R1,不区分大小写
B. start r1 r2 同时启动路由器R1和R2
C. telnet r1 r2 登录R1和R2
D. reload r2 重启R2 (Dynamips虚拟的路由器自身不能通过reload重启)
E. stop r2 关闭R2
F. stop /all 关闭所有路由器
6、其它说明
6.1) 详细阅读2个手册:Dynamips的README-x.x.x.txt、Dynagen的Tutorial(HTML)
6.2) 在我的不完全测试中得出的结论是,如果要运行BGP,那么至少需要128M内存。
6.3) 通过不断的实验和阅读 (Dynagen, Dynamips) 文档,我发现文档中已有的一个重
要信息,即运行2600 IOS文件时一定要将bin文件解压才能正常运行。
Dynagen Tutorial中的原谅如下:
* Note that currently imgs for 2600 routers must be uncompressed to work with Dynamips.
因篇幅问题不能全部显示,请点此查看更多更全内容