更新内容:
很多网友都反映用此文方法行不通,现象为:分布在各计算机上的路由器能起来,但互联的端口是Down的,以至于ping 不通。在此特别感谢 flyxj 网友QQ联系到我才引起我的高度注视使问题得到解决,不会再给读者误导(本人能力是很有限的)。
原因经分析找到了,NET文件中有[localhost]一句,localhost 会被本地的hosts文件解析成127.0.0.1,想毕各位已经明白了吧,分布在各计算机上的路由器之间的连接是通过UDP=后边指定的端口通信的,由于127 和192不在同一子网,所以端口自然UP不起来了。
注意:笔者用最新的dynamips 0.2.7RC1和dynagen 0.90 实验不成功,有错误提示,google 了一下说是两个版本不匹配(晕)。请更新后仍不成功的朋友换本文推荐的版本试一下
dynamips 固然是个好东西,但其对内存苛刻的要求又让人头痛,虽说现在的内存比较便宜了,可对于像我这样的学生一族,又岂能承受的了。笔者01年买的电脑,一直也在升级,到现在才用上了512的内存。
那些有钱人新买来的电脑多是1G内存双核CPU,居然用来玩卡丁车,内存占用没上过500,这自然勾起我节约能源的爱国之心,用他们的电脑分担几台路由器,来完一大网络的模拟。“要学会花别人的钱”,嘿嘿,“要学会用别人的电脑”更恰当!于是笔者尝试了一下dynamips的分布式功能。
我们舍宿四台电脑,通过四口的傻瓜路由相连。不详细说了,充份发挥一下拓朴的优势!
下面以 dynamips for 工大瑞普full version 为蓝本实现如下的拓朴(老版本可能会存在问题)
要再每台电脑上安装上winpcap,并按如下结构复制文件。
e:\
┠─dynamips
┃
┣ ios ━ unzip-c3620-i-mz.122-37.bin
┃
┣ dynamips ━┳cygwin1.dll
┃ ┗dynamips-wxp.exe
┣ workingdir //空目录
┗ 启动虚拟服务.cmd //内容为:cd dynamips
dynamips-wxp.exe -H 7200
本次实验笔者是在PC1上作的,前端程序dynagen要放到PC1上,所以要加入如下目录和文件:
e:\
┠─dynamips
┃
┣ dynagen ━┳configspec
┃ ┣dynagen.exe
┃ ┣dynagen.ini
┃ ┗library.zip
┣ labini ━━━ test.net //内容见下
┗实验控制台.cmd //内容为:cd dynagen
dynagen.exe ..\labini\test.net
test.net 文件内容:
autostart = false
[192.168.1.101]
port = 7200
udp = 10000
workingdir = ..\workingdir\
[[router R1]]
image = ..\ios\unzip-c3620-i-mz.122-37.bin
model = 3620
console = 3001
ram = 32
confreg = 0x2142
exec_area = 64
mmap = false
slot0 = NM-1FE-TX
slot1 = NM-4T
s1/1 = R2 s1/0
s1/2 = R4 s1/0
[192.168.1.102]
port = 7200
udp = 10000
workingdir = ..\workingdir\
[[router R2]]
image = ..\ios\unzip-c3620-i-mz.122-37.bin
model = 3620
console = 3002
ram = 32
confreg = 0x2142
exec_area = 64
mmap = false
slot0 = NM-1FE-TX
slot1 = NM-4T
s1/1 = R3 S1/0
s1/2 = R4 s1/1
[192.168.1.103]
port = 7200
udp = 10000
workingdir = ..\workingdir\
[[router R3]]
image = ..\ios\unzip-c3620-i-mz.122-37.bin
model = 3620
console = 3003
ram = 32
confreg = 0x2142
exec_area = 64
mmap = false
slot0 = NM-1FE-TX
slot1 = NM-4T
s1/2 = R4 s1/2
[192.168.1.104]
port = 7200
udp = 10000
workingdir = ..\workingdir\
[[router R4]]
image = ..\ios\unzip-c3620-i-mz.122-37.bin
model = 3620
console = 3004
ram = 32
confreg = 0x2142
exec_area = 64
mmap = false
slot0 = NM-1FE-TX
slot1 = NM-4T
此时在PC1上运行
实验控制台.cmd
启动虚拟服务.cmd
PC2 3 4 上分别运行 启动虚拟服务.cmd ,这样就可以实验了。
总结:
其实原理很简单,dynagen作为前端,所以只需要在操作此实验的pc上有就行了,net文件也应在此pc上。而路由器是运行在各个服务器端的,所以dynamips要在每个PC上都有,ios也要放在服务器端。dynagen会将NET文件中的信息发送给各各服务器端,并实现各路由器之间的连接,有了这个思想就可以用更多的pc搭建更大的拓朴了。
此文章是回忆实验写的,有出错或不明白的请留言(推荐),或至email到:admin@pppei.cn
我尝试了你的方法。发现dynagen可以起来,路由器也可以起来,但是就是PING不通。每一条路径都PING不通。
能不能把你做好的.net文件贴上来看看?
你说的太简单了,不大好判断哪的问题,我实验时绝对成功了,成功运行rip协议,NET文件就是文中的test.net,(好好看一下net的文件结构是不是有错)。另每个电脑上都要有
┠─dynamips
┃
┣ ios ━ unzip-c3620-i-mz.122-37.bin
┃
┣ dynamips ━┳cygwin1.dll
┃ ┗dynamips-wxp.exe
┣ workingdir //空目录
┗ 启动虚拟服务.cmd //内容为:cd dynamips
dynamips-wxp.exe -H 7200
路由器启动后,到各台电脑上的Dynamips服务器程序上看看,是不是有启动成功的字样。还有就是最好关了防火干墙。
欢迎再交流!!!可以至信admin@pppei.cn 或QQ联系。QQ号查看我的帐户ring0 可见!!
用gui,然后自己改,想怎么分布就怎么分布,简单多了。
我就用2台PC,搭建了一个IE机架,轻松的紧。
NET我也用过,后来改BAT了,不过说实话,你这个net我真的看不懂。
net文件看不懂不是我文章问题,你应该去看一下dyna*的管方文档,或去网上找相关资料.bat和net用哪个是个人习惯问题,你觉的bat简单的多,我却觉的net更简单的多,要知道dynamips是个工具,只要能用来作实验就OK了,不要再为了用哪个好而争了,浪费时间啊!
非常感谢,我尝试了gui的方式,感觉没有这种好理解。
个人觉得这种方式最好理解。
谢谢!
不客气