pemu
目录
序言
...1.历史
......1.1 linux版的历史
......1.2 windows版的历史
...2.pemu的启动方式
......2.1 批处理方式
......2.2 net文件方式
...3.pemu的使用
......3.1 cpu占用问题的解决
......3.2 activation key的使用
......3.3 端口通讯的连接方式
.........3.31 pcap方式
.........3.32 udp方式
.........3.33 tap方式
.........3.34 lcap方式(only on linux)
...4.相关周边程序
......4.1 gns
......4.2 dynagui
...5.其他重要信息
......5.1 dynamips
......5.2 最新版的dynagen
......5.3 重要链接信息
...致谢
----------------------------------------------------------------------------------------------------
序言
什么是Pemu?
PEMU是一个基于开源的QEMU模拟器的思科防火墙模拟器和虚拟机。最初的Linux版本作者是hacki论坛的“mmm123”,现在,强大的PEMU软件已经被hacki论坛的另一位坛友—melifaro作出了windows版。Pemu能够模拟PIX525。
Pemu是基于qemu的,qemu是一个类似vmware的模拟器。可以这样理解,qemu+compiled src+FLASH+bios+Finesse=pixemu=pemu。(编者注:1.pemu的最初称谓叫pixemu;2.finesse是思科防火墙OS的名称;3.在2008-03-03版的pemu里,bios文件已经被集成到了可执行文件里)
因为Pemu最初只有linux版本的,所以官方曾有句“PEMU - Pix Emulator on Linux ”的说法。
重要备注:本文在pemu的相关使用介绍上是基于windows版本来做介绍的。
1.历史
1.1 linux版的历史
pemu发布时的名称是PixEmu,也就pix仿真(模拟)器的意思,是2007年4月5由mmm123在hacki论坛里推出。
最初是hacki论坛里的一个叫mikezhang的坛友发了一个帖子:
----------------------
Author: mikezhang
Posted: Wed Mar 28, 2007 7:52 pm Post subject: PIX 515 SIM
Hi, Chris
are there any possibility to develop a Pix simulator? The Pix is a pc based toy.
thx
----------------------
这里提到的Chris也就是Christophe Fillot,思科真实路由器模拟器dynamips的作者。
之后,mmm123回帖,称其做出了一个PIX模拟器(是基于Qemu模拟器来模拟特定的硬件实现的)。而当时他还不能够分发共享的原因是pemu的最初版需要用到涉及版权的Cisco的原始BIOS文件。根据mmm123的第一个帖子发表的时间来推算,在2007年的4月5日以前,pemu就已经开发出来了,作者怕触犯版权法律(break copyright laws)才没有发布的。
2007年4月11日,mmm123上传了整个模拟包,并且给出了编译基于windows版本的建议,同时也表示自己不会花费时间去做这件事,而至于bios的版权问题,作者没有详叙。
2007年04月20日,mmm123在一个subject为New version 2007-04-20的帖子里放出第一个更新,并且pixemu正式更名为pemu。在这篇的贴子的末尾,也就是2007年5月28日,因为涉及太多的激活码的讨论,总版主(也就是hacki)不得不将该主题讨论关闭。
1.2 windows版的历史
有了基于linux版本的肯定就会出基于windows版本的,因为windows的用户群远远大于linux的。原作者mmm123无意花费时间编译,但给出了相关编译细节的建议。
2007年5月1日,一个叫melifaro的坛友推出了windows版的pemu。
2007年4月18号,一篇subject为’DynaPIX on Windows’的帖子里,有人提出应该有win版的pemu出现。Melifaro在回复该主题时(也就是2007年的5月1日)发布了当时其谦虚的称为“半成品”的第一版windows下的pemu。
之后mmm123也来捧场,并进行了一些key、SN和版本更新的讨论。
2007年5月3日,Meilfaro发布了一个新的更新版本,具有纪念意义的是,该版本开始支持pcap方式的端口通讯连接(Added support for dynamips-style networking (winpcap))。
2.pemu的启动方式
2.1 批处理方式(batch file)
批处理文件是一个文本文件,这个文件的每一行都是一条 DOS 命令(大部分时候就好象我们在 DOS提示符下执行的命令行一样),您可以使用 DOS下的 Edit 或者 Windows的notepad等任何文本文件编辑工具创建和修改批处理文件。
用批处理执行一行或若干行命令同您在命令行下一步一步输入执行是一样的意思,只不过批处理要调用一个解释器而已。
下半部即是pemu的bat文件参数pemu可以用bat来定义需要的参数,这个和dynamips的bat一样的。对于直接指定参数,您有两种选择:
① 您可以在dynamips的目录下,输入dynamips后面跟参数来启动路由器;
② ②可以把参数写成bat文件,而后双击执行。
好处是显而易见的,有了bat文件,您就不用每次都去dos下一个字母在一个字母的输参数了。
右图是bat文件启动方式的原理图:
2.2 net文件方式(an ini-like configuration file,must work with dynagen and pemuwrapper)
当您安装了最新版的dynagen后,后缀名为net的文件会自动关联到dynagen,也就是说,dynagen将起来作为程序管理器,它解释执行net文件,并将其参数传递给相应的模拟器程序(如dyanmips、pemu)。
在linux下,dynagen读取配置了pemu参数的net文件,并将相关参数直接传递至pemu执行;
而在windows下,pemu要和dynagen协同运作,还得需要一个“中间人”—pemuwrapper,dynagen将读取的参数交由pemuwrapper,后者再将参数传递到pemu。
Dynagen是后来才支持pemu的,这要得益于confdynagen,更多的Dynagen的介绍详见第5章。
pix和router的net参数都在同一个文件里了哈pemuwrapper:
在windows下,要让dynagen读取配置了pemu的net文件并将参数传递给pemu来模拟pix,必须还得要个中间人,也就是pemuwrapper。
Pemuwrapper由Thomas Pani推出,目前最新版本是0.2.3,对于他和他的作品的更多资料能在这里找到: http://gdynagen.sourceforge.net/pemuwrapper
右图net文件启动方式的原理图:
3.pemu的使用
3.1 cpu占用问题的解决
早在pemu开发之初,大家就注意到pemu十分占cpu资源,一位叫wayn的坛友提到用cpulimit来操作,确实也有效果,此人还提到希望Chris和Greg(编者注:Greg Anuzelli是dynagen的作者)能够做出像dynamips模拟器那样的idlepc值来降低cpu的占用(Perhaps Chris and Gregcan leverage on their expertise with dynamips to find a similar solution for pixemu)。
3.2 activation key的使用
关于activation key,编者提醒用户,请通过合法途径从思科公司购买。
pix是受激活码限制的,比如有的激活码不允许您使用vpn,而定激活码则是无限制的。而pemu模拟的真实的pix,自然就涉及到这个话题。引用hacki论坛一个坛友的一个帖子:
-------------------------------
Author: rafnabergr
Posted: Mon May 14, 2007 1:47 pm Post subject:
You must convert your serial number from DEC to HEX before putting it into your pemu.ini.
- To activate features for 6.3(?) you can use pemu.ini.
- To activate features for 7.x(x) you must use the activation-key command inside the pix. (as you have probably done many times before)
-------------------------------
也就是说,在pemu运行的pix os版本为6.3时,您只需要在pemu文件夹下的pemu.ini文件里输入相应激活码就能成功激活相关特性;而在您运行的pix os版本为7.x时,您必须在pix的cli界面下通过activation-key命令来激活。
3.3 端口通讯的连接方式
现在您知道了有两种启动pemu的方式,bat文件方式和net文件方式,在本节,编者将就bat方式来做介绍。
Pemu的端口通讯的连接方式一共有四种:pcap、udp、tap和只能在linux用的lcap。为了实现pemu的端口通讯,我们需要在电脑安装相应的网卡或虚拟网卡。
3.31 pcap方式
在模拟router的net配置文件里,连接router的f0/0到这个名叫vmnet3的网卡是如下连接的:
f0/0=NIO_gen_eth:DeviceNPF_{B96B138A-4C4C-4AA5-BB1B-97B89CC335B5}
(编者注:模拟的router用net文件方式写的,pemu则都用bat方式写的。)
在pix的bat文件里,定义使用pcap方式来连接:
pemu -net nic,macaddr=00:aa:00:00:01:01 -net pcap,ifname=DeviceNPF_{B96B138A-4C4C-4AA5-BB1B-97B89CC335B5} -serial telnet::8888,server -m 128 FLASH
注意到pemu的bat文件里的一行ifname定义接口名称,这里用的就是Generic Ethernet device (pcap)参数。
这里编者给个建议,如果您还要抓取route和pix之间的通讯流的话,您可以卸掉vmnet3网卡的TCP/IP协议栈(直接在网卡属性里的去掉钩就ok),这样可以减少来自pc的其他ip包的干扰(去掉vmnet3的IP协议栈根本不会影响工作,因为这里是真正的二层桥接)。
此处的vmnet3网卡同样可以是物理网卡或者其他的虚拟网卡。
3.32 udp方式
Router的net配置文件如下:
f0/0 = NIO_udp:4003:127.0.0.1:5003
pix的bat配置文件如下:
pemu –net nic,vlan=1, macaddr=00:aa:00:00:01:01 -net udp,vlan=1,sport=5003,dport=4003,
daddr=127.0.0.1 -serial telnet::8888,server -m 128 FLASH
注意,这里的vlan参数很重要:在定义多个接口时,如果不分配vlan值的话,在抓包的时候,各个接口就像桥接起了HUB一样,这个网卡的流量在另外几个网卡上也出现,根本无法让我们完成期望的实验。
详细的底层通讯过程详见附件。
3.33tap方式
Tap方式其实就是用tap网卡来做端口的通讯连接,所以请先用openvpn来装tap网卡。在pemu运行后,其将自动开启连接的tap网卡(虚拟网卡的开启操作受两种控制:“永久开启”或者“随应用控制”,默认是后者,所以正常情况虚拟网卡默认状态是连接断开的,当pemu利用tap做连接实验时,在pemu启动以后,那它参数里指定的相应tap网卡就会自动开启)。
Pemu相应参数设置如下:
pemu -net nic,macaddr=00:aa:00:00:02:01 -net tap,ifname=tap0 -serial telnet::4444,server
router的参数则直接用pcap方式先取得网卡参数做相应连接就可以了。
编者注:这里要先启动pix,不然tap网卡没有被开启的话,那么,dynamips将会报错。
3.34 lcap方式(only on linux)
(省略)
4.相关周边程序
4.1 gns3
GNS3是一款优秀的具有图形化界面可以运行在多平台(包括Windows, Linux, and MacOS等)的网络虚拟软件。Cisco网络设备管理员或是想要通过CCNA,CCNP,CCIE等Cisco认证考试的相关人士可以通过它来完成相关的实验模拟操作。同时它也可以用于虚拟体验Cisco网际操作系统IOS或者是检验将要在真实的路由器上部署实施的相关配置。
简单说来它是dynamips的一个图形前端,相比直接使用dynamips这样的虚拟软件要更容易上手和更具有可操作性。
GNS3整合了如下的软件:
Dynamips :一款可以让用户直接运行CiscoIOS的模拟器
Dynagen :是Dynamips的文字显示前端
Pemu :PIX防火墙设备模拟器。
Winpcap :windows平台下一个免费,公共的网络访问系统。开发winpcap这个项目的目的在于为win32应用程序提供访问网络底层的能力。
4.2 DynamipsGUI
DynamipsGUI则是由一名国人CCIE小凡开发的一个思科模拟器图形前端,其不仅整合了思科所有的IOS模拟器,而且还整合了BES以及VPCS。是一个综合的模拟器解决方案。其配置输出采用的是bat批处理文件。目前最新版是2.8。
5.其他重要信息
基于真正的IOS的思科模拟器是从dynamips开始的,当时的作者写出了一个模拟思科7200硬件的模拟器,并且灌载思科真实的IOS来运作,几乎可以完全模拟真正的思科路由器。而当时正是统治级别的思科模拟器比如Boson,PacketTracer,RouterSIM,Sybex等都是基于软件来模拟,dynamips面世后,一举打败前者!后者开源,您不用支付任何费用。
5.1 dynamips
早在2005年的8月,Chris就开始了他的dynamips的制作进程。在0.2.5版本出来的时候,dyanmips从这时开始支持-H命令, 以让dynamips好Run in hypervisor mode,来支持dynagen。
他当时称dynagen为一个Hypervisor程序,也就是“字符前端”:
Hypervisor,就是一个管理程序,它可以同时启动和控制多台路由器实例(instances),有了这个管理程序,使模拟器实验来得更加简单:它使用一个类似ini一样的配置文件(也就是net文件)来传递参数给dynamips。它指示特定的接口适配器,生成并匹配他们的繁琐的NIO描述,指定桥接、帧中继和ATM交换机等等。它还提供基于CLI的管理,比如list设备,挂起和重启实例(instances)等等。你甚至还可以通过不同的服务器来建立一个分布式的复杂实验环境。
2007年9月10日,0.2.8_rc2发布,这也是目前(2009-04-12)最新的版本。
5.2 最新版的dynagen
2008年4月20号发布的dynagen是目前(2009-04-12)最新的版本,它的windows版安装包里包含的这四样东西: dynagen+dynamips+pemuwrapper+pemu。它已经是个all-in-one的合体了,于win版,你只要这一个安装包,"Dynagen 0.11.0 and Dynamips 0.2.8-RC2 Windows XP installer",你就拥有了所有的思科IOS模拟器。
这个all in one的安装包,结构如下:
最初Greg的dynagen是不支持pemu的。
在dynagen发布0.11时(20-Apr-2008发布,目前最新版),作者吸收了confdynagen的所有优秀代码:动态编辑特性和对pemu支持(实际上在win下是pemuwrapper)。
而这里的confdynagen,它是由Pavel Skovajsa编写的一个可以动态编辑net拓扑文件的基于Dynagen的程序(核心也就是dynagen)。除了动态编辑这一功能外,confdynagen的另一大特性,那就是对pemu的支持!(在2007年的7月17日的confdyangen更新版本里,加入了具有历史意义的pemu支持。于pemu运作来说,这是confdynagen最伟大之处,因为它开了先河,让pemu可以在net配置文件里来定义。)
所以图上的dynagen由最初的dynagen和confdynagen组成就是这个道理。All in one里的几大套件的最新版本如下:
dynagen是0.11.0版,
dynamips是0.2.8rc2版,
pemu是2008-03-03版,
pemuwrapper是0.2.3版。
5.3 重要链接信息
Dynamips:http://www.ipflow.utc.fr/index.php/Cisco_7200_Simulator
pemuwrapper:http://gdynagen.sourceforge.net/pemuwrapper
dynagen: http://dyna-gen.sourceforge.net(现在这个网站直接跳转到http://dynagen.org,)
hacki forum: http://7200emu.hacki.at
TUN与TAP:http://zh.wikipedia.org/w/index.php?title=TUN/TAP&variant=zh-cn
Winpcap:http://baike.baidu.com/view/696423.html?wtp=tt
致谢
感谢各位软件的原作者:
dynamips,Chris;
dynagen,Greg;
confdynagen,Jumbo;
pemu,mmm123;
pemu(on windows),Malfora;
pemuwrapper,Thpani。