经过了若干年重拾GNS3,上手最新的版本3.0.5,却发现曾经熟练操作GNS3的我不会使用了。因为GNS3的架构和操作都发生了变化,之前网络上大量的教程也都过时了,经过几天的摸索,终于找到了正确的途径,记录于此与各位共享。
一、架构
GNS3已经不能独立运行了,因为服务都集成进了GNS3 VM,没有本地服务了。也就是说,Dynamips、IOU、Qemu都在GNS3 VM内部运行。
设计出的拓扑、保存的工程文件、路由器参数、路由器镜像也都上传至GNS3 VM,若要带走你的拓扑,直接把GNS3 VM镜像带走就可以,all in one了。
二、下载GNS3安装包和GNS3 VM
GNS3官方主页:https://github.com/GNS3/GNS3-gui/releases
安装包(先下载暂不安装,下文安装):GNS3-3.0.5-all-in-one.exe
如果之前安装了wireshark就不要勾选,因为GNS3附带的wireshark版本较低,会覆盖之前安装的新版本wireshark。
GNS3 VM镜像:GNS3.VM.VMware.ESXI.3.05.zip 可用于VMware workstation。
三、安装GNS3和导入GNS3 VM
双击GNS3-3.0.5-all-in-one.exe,遇到授权点Accept,输入邮箱,要你安装自由软件点No,直到安装完毕(暂不要运行)。
双击GNS3 VM的镜像文件,将其导入VMware workstation。
GNS3 VM的特点:
集成 Dynamips、IOU、QEMU、Docker
避免 Windows 权限和路径问题
支持VMware workstation的桥接网络、NAT、仅主机模式
四、配置GNS3 VM并打开虚拟机
内存增大到4GB,CPU核心增大为2个,打开硬件虚拟化,网络适配器建议改为桥接,这样GNS3 VM就可以上网了,也能实现完整的网络可见性和通信。。

因为所有的任务都在GNS3 VM上运行,所以消耗其内存。在设计拓扑的时候心里要有根弦,若拓扑规模过大,甚至用Qemu建立了Windows设备,就要回到这里增加内存和CPU核心数量。
虚拟机开机,会显示出3个地址和1个目录:

-
GNS3启动时,连接GNS3 VM的地址。
-
ssh的连接地址,用户名和密码都是gns3。
-
Web-UI登录地址和端口:可以在这里设计拓扑(用户名和密码都是admin),也就是说一个GNS3 VM就可以开展实验,无需安装GNS3 GUI。但很少使用Web UI,因为大多使用GNS3 GUI客户端软件。
-
镜像和存盘文件保存在 /opt/GNS3目录。

五、配置GNS3
第一次开机就要你连接GNS3 VM:

如果没有弹出这个框也不用慌,在主界面点Edit→Preference→Controller,连接参数是一样的,把GNS3 VM提示的连接地址和密码填入。注意端口是80而不是默认的8080,点Connect,GNS3就可以正常工作了!

六、导入IOU许可证
方法一:很简单。进入Edit→Preference→IOS on UNIX,在右侧的Iou licence (iourc file):框里贴入以下2行,点Apply,注意最后有个分号:
[license]
gns3vm = 73635fd3b0a13ad0;
授权文件很多年都没有变化了。
方法二:自行计算许可证
如果发现IOU运行不起来,很有可能是许可证不对,需要重新计算。
下载PY源码:在GNS3 VM里打回车,进入Shell,运行:wget http://www.ipvanquish.com/download/CiscoIOUKeygen3f.py
赋予执行权限:chmod a+x CiscoIOUKeygen3f.py
输出许可证:./CiscoIOUKeygen3f.py 会显示出许可证信息,同时在本目录下生成许可证文件iourc.txt。
Py文件下载站点:https://gist.github.com/paalfe/8edd82f780c650ae2b4a?permalink_comment_id=2344473
CiscoIOUKeygen3f.py已经下载于本笔记目录下,但版本可能会更新,最好从上面的连接下载最新版。
第一个回复里有操作步骤。
七、到哪去找路由器镜像
见这篇帖子:13个GNS3 3.0.5 appliances设备模板镜像合集:IOSv/L2,IOU L2/L3,以及IOS-XE-CSDN博客
八、为何Cloud设备无法找到VMware workstation的虚拟网卡
老版本的GNS3有HOSTS虚拟主机,新版已经没有了,用Cloud设备取代,拓扑中的设备可以通过Cloud设备与外部物理网络通信,或者与VMware workstation虚拟机通信。但在配置Cloud设备时发现无法找到VMware workstation安装的虚拟网卡。
这是因为新版GNS3的Controller运行于GNS3 VM内部,所以只能发现虚拟机内部的网卡,无法发现物理主机的网卡。
解决之道就是:给GNS3 VM添加新的网卡,并与物理主机的VMware workstation虚拟网卡所属网络对应。
举例说明:
运行VMware workstation→编辑→虚拟网络编辑器,列出了当前的虚拟网络以及类型,点下方的“更改设置”:

本例列出了4个虚拟网卡和所属类型。
关闭GNS3 VM,添加这4个网卡,且类型也对应与虚拟网络编辑器里的类型一一对应:

现在配置Cloud设备,就列出了GNS3 VM内部的4个网卡(Ubuntu):


现在要确定GNS3 VM中的网卡名称与外部VMware workstation虚拟网卡名称的对应关系。在GNS3 VM主界面打回车,选择Shell进入命令行,运行ip a|more,把这4个网卡的名字和获得的地址抄下来,然后进入虚拟网络编辑器,比对这4个网络的DHCP分配范围,即可得出表格:

若想要拓扑中的某个设备与VMware workstation中的某个虚拟机通信,只需要在Cloud中选择对应VMNet网络的网卡即可!比如有个WIN10虚拟机属于VMNet2网络,那么Cloud就选择eth2网卡。
记得删除Cloud设备中无关的网卡。