Chinaunix首页 | 论坛 | 博客
  • 博客访问: 78332
  • 博文数量: 51
  • 博客积分: 328
  • 博客等级: 一等列兵
  • 技术积分: 360
  • 用 户 组: 普通用户
  • 注册时间: 2011-05-09 17:06
文章分类

全部博文(51)

文章存档

2013年(6)

2012年(45)

我的朋友

分类: 网络与安全

2012-12-07 14:24:39

一、软件介绍
  
  1、Dynamips
  
  http://www.ipflow.utc.fr/blog/
  
  Cisco路由器模拟软件,支持17xx、26xx、36xx、7200等Cisco路由器系列。
  它是在计算机上模拟路由器硬件,并在虚拟路由器中运行真实的IOS。
  因此,从逻辑上看用户面对的就是真正的Cisco路由器。
  
  
  2、Dynagen
  
  
  
  一款基于字符界面的、使用Python开发的Dynamips管理前端,也就是说可以通过它更好
  地使用Dynamips。Dynagen通过更友好的操作简化了Dynamips的配置和网络拓朴的实现。
  
  
  3、WinPcap
  
  
  
  用于实现虚拟路由器与本地网卡的桥接。
  
  
  
  二、Dynagen使用
  
  
  1、安装
  
  安装前需要下载3个软件:WinPcap、Dynagen、Dynamips
  
  首先安装WinPcap,所有安装项均使用默认配置即可。
  其次安装Dynagen,默认安装即可。
  最后安装Dynamips的最新版本(比较程序的创建日期即可)。
  
  
  我的个人配置习惯:
  
   a) 更改默认telnet程序 (dynagen.ini)
   +-----------------------------------------------------
   | ...
   | # Windows
   | telnet = start C:\windows\system32\putty.exe -telnet %h %p
   | # Linux (GNOME)
   | telnet = gnome-terminal -t %d -e "telnet %h %p" > /dev/null 2>&1 &
   | ...
   +-----------------------------------------------------
   b) 建立images目录,专门存放IOS映像。
   c) 建立dynamips目录,专门存放各种.net文件。
   d) 针对不同IOS映像文件计算主机使用的idlepc值。
   e) 获取本地网卡设备ID。
   f) 更新已有.net文件的idlepc值和本地网卡设备ID。
  
  
  
  2、初始化idlepc参数
  
  2.1) 直接通过命令运行一个路由器实例
  
   [Windows example 1]
   dynamips -P 3600 -t 3640 -r 128 -X D:\images\c3640-jk9o3s-mz.124-7a.img
  
   [Windows example 2]
   dynamips -P 3600 -t 3640 -r 128 -p 0:NM-4T -p 1:NM-4E -X D:\images\c3640-jk9o3s-mz.124-7a.img
  
   [Windows example 3]
   dynamips -t npe-400 -X D:\images\c7200-adventerprisek9-mz.124-11.T.img
  
   [Windows example 4]
   dynamips -P 2600 -X -r 96 -p 1:NM-16ESW .\c2600-adventerprisek9-mz.124-10a.img
   
   [Linux example 1]
   dynamips -P 3600 -t 3640 -r 128 -X /dynamips/images/c3640-jk9o3s-mz.124-10a.img
   
   [Linux example 2]
   dynagen-0.10.1/dynamips -t npe-400 -X /dynamips/images/c7200-adventerprisek9-mz.124-11.T.img
   
   [Linux example 3]
   dynamips -P 3600 -t 3640 -r 128 -p 0:NM-4T -p 1:NM-4T -p 2:NM-4E -p 3:NM-4E -X --idle-pc 0x604fc520 ../images/c3640-jk9o3s-mz.124-10a.img
  
  
  2.2) 登录路由器,当出现“router>”提示符后,按下“Ctrl+]”,再按“i”,稍等一会就会出现idlepc的运算结果,如
  
   +-----------------------------------------------------
   | Router>
   | Please wait while gathering statistics...
   | Done. Suggested idling PC:
   | 0x605a151c (count=37)
   | 0x605a1594 (count=30)
   | 0x604fb1b0 (count=45)
   | 0x604fbc3c (count=33)
   | 0x604fbc78 (count=38)
   | 0x603dbda0 (count=69)
   | 0x603dbe00 (count=62)
   | 0x603dbe34 (count=66)
   | 0x603dbe48 (count=36)
   | 0x604fc520 (count=27)
   | Restart the emulator with "--idle-pc=0x605a151c" (for example)
   +-----------------------------------------------------
  
   我原来一直认为count值越大的 idlepc 效果越好,但一次实验的结果彻底改变了我的认识。
   选择 idlepc 的方法只有一种,即实践。
   
   方法是在步骤 2.1 的命令中增加 --idle-pc 0x######## 参数再次运行一个虚拟路由器实例:
   dynamips -P 3600 -t 3640 -r 128 -p 0:NM-4T -p 1:NM-4T -p 2:NM-4E -p 3:NM-4E -X --idle-pc 0x604fc520 ../images/c3640-jk9o3s-mz.124-10a.img --idle-pc 0x604fc520
   
   屏幕显示:
   +-----------------------------------------------------
   | ...
   | Would you like to enter the initial configuration dialog? [yes/no]:
   +-----------------------------------------------------
   或
   +-----------------------------------------------------
   | ...
   | Press RETURN to get started!
   +-----------------------------------------------------
   优异的 idlepc 会在出现上面提示的时候,就已经将 CPU 占用降低到 5% 以下。
  
   选择到自己满意的 idlepc 后,将其更新到 .net 文件中即可:
   +-----------------------------------------------------
   | [[3640]]
   | image = ../images/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文件的编辑方法并不轻松,这里我就不做详细说明了。
  有兴趣的朋友自己研习一下Dynagen和Dynamips的帮助,说明非常详细。
  
  下面,以一个.net实例进行加以介绍:
  
  #
  # Legend: ( Router ) [ Switch ]
  #
  # Topology:
  #
  # ( r1 ) ( r2 ) ( r3 )
  # | | |
  # |-s0/0----------s0/1-| |
  # |-e1/0----------e1/1-| |
  # | |-s0/0----------s0/1-|
  # | |-e1/0----------e1/1-|
  # |-e1/3--Local NIC | |
  #
  
  
  autostart = false
  sparsemem = true
  ghostios = true
  
  
  [localhost]
   
   [[3640]]
   image = D:\images\c3640-jk9o3s-mz.124-7a.img
   idlepc = 0x6042bdb4
   ram = 96
   slot0 = NM-4T
   slot1 = NM-4E
   
   [[ROUTER r1]]
   model = 3640
   console = 3001
   s0/0 = r2 s0/1
   e1/0 = r2 e1/1
   e1/3 = NIO_gen_eth:\Device\NPF_{50FBC283-9098-434E-99FF-FBDB1892247E}
   
   [[ROUTER r2]]
   model = 3640
   console = 3002
   s0/0 = r3 s0/1
   e1/0 = r3 e1/1
   
   [[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. help 查看可用命令
   B. list 列出当前拓朴设备清单
   C. start r1 启动路由器R1,不区分大小写
   D. start r1 r2 同时启动路由器R1和R2
   E. telnet r1 r2 登录R1和R2
   F. reload r2 重启R2 (Dynamips虚拟的路由器自身不能通过reload重启)
   G. stop r2 关闭R2
   H. stop /all 关闭所有路由器
   I. export r1 d:\ 将r1的startup-config导出到 d:\r1.cfg 文件
   J. import r1 d:\ 将文件d:\r1.cfg的配置导入为startup-config
  
  
  6、如何使用.bat文件
  
  6.1) bat 文件示例
  
  @echo off
  pause
  echo.
  title r1
  mkdir r1
  cd r1
  "C:\Program Files\Dynamips\dynamips" -T 3001 -P 3600 -r 96 -t 3640 --idle-pc=0x60521d40 -c 0x2102 -p 0:NM-4T -p 1:NM-4E -s 0:0:udp:10000:127.0.0.1:10101 -s 1:0:udp:20000:127.0.0.1:20101 ..\c3640-jk9o3s-mz.124-7a.img
  
  
  6.2) shell 文件示例 - 启动路由器实例
  
  #!/bin/sh
  mkdir -p r1
  cd r1
  ../sys/dynamips -T 2001 -f ../sys/FRSWITCH -P 3600 -r 96 -X -t 3640 -c 0x2102 -p 0:NM-4T -p 1:NM-1FE-TX -p 2:NM-1FE-TX -s 0:0:udp:11100:127.0.0.1:61100 -s 0:1:udp:11101:127.0.0.1:61101 -s 1:0:udp:11110:127.0.0.1:21001 -s 2:0:udp:11120:127.0.0.1:22001 ../sys/c3640-jk9o3s-mz.124-10a.img --idle-pc=0x604fc520 &
  
  
  6.3) shell 文件示例 - 登录路由器
  
  #!/bin/sh
  gnome-terminal -t R1 -e "telnet 127.0.0.1 2001" > /dev/null 2>&1 &
  
  
  
  
  7、其它说明
  
  7.1) 详细阅读3个手册:Dynamips的README-x.x.x.txt、Dynagen的Tutorial(HTML)和all_config_options.txt
  7.2) 通过测试得出,如果要运行BGP,那么至少需要128M内存。
  7.3) 2600的IOS文件(.bin)一定要解压才能正常运行,Dynagen Tutorial中的原文如下:
   Note that currently imgs for 2600 routers must be uncompressed to work with Dynamips.
阅读(1113) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~