FreeBSD 使用dynagen+dynamips CISCO模拟器
by: 小虫子(xiaook) [email protected] QQ:10516321
原创作品,转载请注明出处http://goat.cublog.cn,可在网络自由传播此作品,未经许可不得用于商业目的。
----------------
前两天不是从哪个网站看到dynamips这个CISCO 7200路由器硬件模拟器,一看到这个就觉得这个很有搞头,这两天安装来用了一下,感觉很好,所以顺便写一篇BLOG记下安装过过程,也分享给有类似需求的朋友!
简介:
FreeBSD的好话就不多说了,效能高,内核占用资源小…………
dynamips 一种模拟CISCO路由器硬件环境的软件,可运行在linux,windows,freebsd系统上。当然其它的模拟软件也很多,学过CISCO的朋友肯定用过一些。但其它模拟软件都只是模拟一些针对NA/NP考试的命令,拓扑要么固定,要么运行不是很稳定,命令不全,运行命令时和真实路由器也还是有一些差别的。而dynamips 模拟的是CISCO的硬件环境,也就是说可以直接运行CISCO IOS,运行和真实路由器完全相同。而且模拟7200/3600这些作为学习CISCO认证的朋友,难以得到实际操作机会的高端机型。我了解到这些后也是相当兴奋的。
dynagen 是一种dynamips的前端管理工具,利用它可以方便的建立多个路由器的实验环境。只是一个使dynamips更易于配置和管理的工具,它并不是必须的,但我强烈推荐使用。
优点:真接运行CISCO IOS,再现真实环境;可运行于linux,FreeBSD,Windows 等各种操作系统,可自己灵活定制各种拓朴结构。
缺点:对硬件(在运行多台路由器时CPU和内存要够好)要求高,配置较其它路由器模拟软件麻烦一些。
软件安装:
安装FreeBSD
cvsup 更新ports树(FB6.1更新ports后才有dynagen)
安装dynamips
bsd# cd /usr/ports/emulators/dynamips/
bsd# make install clean
安装dynagen
bsd# cd /usr/ports/emulators/dynagen/
bsd# make install clean
准备CISCO IOS文件(这步我是先前在Windows XP里做的,FreeBSD中也可以完成)
在网上搜一下,如果下载的IOS是RAR文件,先用windows里的winrar先解开为.bin文件,一般bin文件也是经过压缩的,这个文件应该还可以解压,把这个文件直接拖到winrar上或是把此文件的扩展名改成zip,再用winrar解压得到的应该就是未压缩的IOS文件了,把IOS文件完全解压的目的是 不要让路由器在启动的时候解压IOS文件,可以大大加快路由器的启动速度。
准备拓扑文件
最好在网上找一些现成的拓扑文件,基本了解了之后,再自己搞拓朴更好此,如果找不到就先用dynagen带的示例文件,位置如下:
%pwd
/usr/local/share/examples/dynagen/sample_labs
%ls
all_config_options.txt frame_relay simple1
ethernet_switch multiserver simple2
%
参考文档:
对于 dynagen的基本了解可以看一下dynagen的文档,位置如下:
%ll
total 78
-r--r--r-- 1 root wheel 76637 1 5 15:21 tutorial.htm
drwxr-xr-x 2 root wheel 1024 1 5 15:21 tutorial_files
%pwd
/usr/local/share/doc/dynagen
%
下面来个我做的拓朴,可以做CCNP的路由实验,和BSCI实验手册上的拓朴是相同的。
一般来说需要修改的地方我加了简单注释
autostart = false #启动dynagen时不自动启动路由器,如果配置文件中路由器较多时自动启动,系统会很久没有响应,还是手动一个一个来好了。
[localhost]
port = 7200
udp = 10000
workingdir = /home/xiao/dynagen/tmp/ #在dynagen运行时会生成很多文件,指定一个目录让它们都在一块,以方便管理
[[3640]] #这一小节是全局模块配置
image = =/home/xiao/dynagen/IOS/c3640-telco-124-13.bin #指定IOS文件,注意要用绝对路径,我使用~/dynagen类似的路径时,工作不正常
ram = 64 #一台路由器使用的内存大小,IOS的具体要求可查相关资料
confreg = 0x2102 #如果想启动时不加载以前的配置文件,就改这个寄存器器为0x2142
idlepc = 0x6100bf2c #针对不同的IOS要重新计算此数,详见上面提到的dynagen文档
exec_area = 64
mmap = false
slot1 = NM-4T #所有路由器都加了个4个串口模块,用来连接帧中继
[[router BBR1]]
model = 3640
s1/0 = FR 3
e0/0 = SW 5
[[router BBR2]]
model = 3640
# slot2 = PA-A1 #ATM模块,平时没用的注释起来
s1/0 = FR 4
e0/0 = SW 6
[[router R1]]
model=3640
s1/0 = FR 1
s1/1 = R2 s1/1
e0/0 = R3 e0/0
e0/1 = SW 1
[[router R2]]
model=3640
s1/0 = FR 2
e0/0 = R4 e0/0
e0/1 = SW 2
[[router R3]]
model=3640
s1/0 = R4 s1/0
e0/1 = SW 3
[[router R4]]
model=3640
e0/1 = SW 4
[[FRSW FR]] #软件自带的帧中继交换,不用你再自己用路由器来配置了
1:102 = 2:201
1:103 = 3:301
1:104 = 4:401
2:203 = 3:302
2:204 = 4:402
3:304 = 4:403
[[ethsw SW]] #这个交换机有两个VLAN,从逻辑上隔离不同功能
1 = dot1q 2
2 = dot1q 2
3 = dot1q 2
4 = dot1q 2
5 = dot1q 1
6 = dot1q 1
7 = dot1q 1 NIO_tap:/dev/tap0 #连接到本机的接口上,以方便在本机运行tftp,ACS等
准备目录,为dynagen指定一个目录管理方便些,我喜欢在xiao这个用户的$home目录下运行dynagen所以建了下面这些目录:
/home/xiao/dynagen dynagen的主目录,相关文件都在这里,拓扑文件也直接存在这里了
/home/xiao/dynagen/IOS 把IOS 文件放在这里
/home/xiao/dynagen/tmp 存放dynagen运行时生成的文件,可以保存路由器的设置,所以要根据需要清空。
运行dynagen
运行dynagen前先要运行dynamips于服务器模式(这里我走了一个弯路,先以为直接运行dynagen会自己启动dynamips,结果浪费了不少时间)
在gnome中开一个终端
%dynamips -H 7200
Cisco 7200 Simulation Platform (version 0.2.5-x86)
Copyright (c) 2005,2006 Christophe Fillot.
Hypervisor TCP control server started.
保持第一个终端运行状态,再开一个终端运行dynagen
%dynagen 3640.net #3640.net是上面贴的拓扑文件的文件名
Reading configuration file...
Network successfully loaded
Dynagen management console for Dynamips
Copyright (c) 2005-2007 Greg Anuzelli
=> list
Name Type State Server Console
BBR1 3640 stopped localhost:7200 2000
BBR2 3640 stopped localhost:7200 2001
R1 3640 stopped localhost:7200 2002
R2 3640 stopped localhost:7200 2003
R3 3640 stopped localhost:7200 2004
R4 3640 stopped localhost:7200 2005
FR FRSW always on localhost:7200 n/a
SW ETHSW always on localhost:7200 n/a
=> ?
Documented commands (type help ):
========================================
clear filter idlepc push resume shell stop ver
exit help import py save show suspend
export hist list reload send start telnet
=>
到这步就自己看着办了,可用的命令在上面,对路由器的start,stop,telnet都是在这里操作。
export,import也很实用的,自己慢慢研究了。
不过在使用软件前最好计算好idelpc值,详细介绍请看dynagen的教程,不然运行一台路由器CPU占用也是100%,没办法运行很多台。
在我的机器上(R52: pm 1.86G,1G + FreeBSD6.1+gnome),运行以上配置start/all 设备可以全部正常启动,不过CPU也占用100%够受的。相同的配置在windows中运行windows版本的这个软件只能启动6台路由器,当然CPU也是100%占用,内存也没有剩的。不过完全启动后,CPU会降下来不少的。看来机器足够好完全能够做自己的试验室,而且在这方面FreeBSD确实要强一些。
如果想节约CPU和内存资源,选择合适的IOS很重要,最好能够满足实验要求的情况下,使用占用内存更少的IOS,并且可以多试试不同的idlepc值
-----------2008.5.16
使用tap0和本地主机通信
修改 /boot/default/loader.conf 里面有一项if_tap_load="NO"修改为YES,以使开机可以自动加载if_tap模块。
在/etc/rc.conf里面为tap0接口配置一个IP地址
在dynagen配置文件里面使用NIO_tap:/dev/tap0来连接到本地接口,注意这里使用了设备文件的绝对路径
使用root用户来启动dynamips server,不然如果使用了tap0接口会提示没有权限。
我现在的方法是使用sudo来运行dynamips,以普通的用户来运行dynagen.