解决GNS3模拟路由器启动配置丢失的问题
 
GNS3是基于Dynamips的图形管理器,相对于Dynagen来说,新手可以省去学习和撰写net文件的繁琐过程,把精力更好的放到实验分析中去。
GNS3本身也是一个Dynagen的特殊实现,其依托于net文件。
由于最近出了新版本,增加了很多新功能,所以拿来一试,当前最新版本是3.0.5beta。
 
对于这个版本的功能,感觉还是扩展了不少实用特性,在此不一一例举,这里主要讲下发现的一个bug。
 
GNS3对于模拟设备的配置保存有以下几种方式:
1、在新建拓扑的时候选择“保存配置选项”;
2、在拓扑建设完成后实验过程中点击上方按钮“解压所有startup_configs” (水煮豆豆注:这里还是要感谢下GNS3中文翻译的武汉的那位朋友,虽然我个人觉得这里译成导出更为合适)
3、每个设备右键有个startup_config选项,可以配置路径;
4、在控制台中直接输出export /all……
5、左上方按钮“保存net”也会做输出配置的操作,但是前提是新建拓扑的时候选择了“保存配置选项”
 
我们来看看几种方式的逻辑关系。
1、在新建拓扑的时候选择保存配置,net文件中将出现
[GNS3-DATA]
    configdir = XXXXX
配置完拓扑后,启动设备,完成实验,然后点击“保存net”,此时不但拓扑被保存,所有的startup也被输出到指定目录。
同时net文件内所有设备增加cnfg=XXXXX一行。
(水煮豆豆注:现在问题来了,这样的情况下,再次启动GNS3,拓扑还在,但是运行设备将无法获取启动配置,设备所有环境归零;解决问题的办法是将workingdir中所有文件删除,然后重新运行模拟器,启动设备,重建所有工作文件,这时原先做的配置会回来;但是我们不能每次都这么做啊,怎么办?请接着往下看)
2、“保存net”按钮影响到右键startup_config选项,即点击保存后输出的路径会直接和右键选项内的路径挂钩。
3、控制台export和上方按钮“解压所有startup_configs”都会影响右键选项。
4、控制台export和上方按钮“解压所有startup_configs”还会影响net文件,生成cnfg条目。
 
说到这里,复杂的互相影响的关系很让人头疼吧?但是我们的目的很简单,就是再次启动设备要有原先的配置。且可以灵活的导出各种阶段的配置方便实验。
解决方式如下:
删除net文件内configdir = XXXXX一行。或者在新建拓扑的时候不要选择保存配置。
只要此行不存在,无论net文件内生成何种cnfg条目,都能正确的获得上一次保存的配置。
 
这样的情况下,每次导出配置,net文件内都会修改cnfg指向新路径,用该配置启动;
手工删除cnfg,用工作目录内的缓存启动配置;
并且点击“保存net”将不在输出配置。
达到了我们的预期的效果。
 
对于这个bug,我查看了下 [url]http://7200emu.hacki.at/[/url]也有专门的讨论,应该是一个过渡期的bug,相信很快可以修正。