如何搭建和使用GNS3服务器
GNS3 Remote Server
近期,我在学习使用GNS3的过程中发现,国内论坛关于GNS3的介绍较少,少数的几篇文章介绍的GNS3版本也比较低,已经不太实用了。因此,我想通过本文分享一些GNS3的使用经验,希望对大家能有所帮助。
GNS3简介:
GNS3是一款免费的开源软件,用于帮助网络工程师进行网络模拟、配置、测试和排错。它界面简洁,简单易用,且功能强大。目前,GNS3已经发展到了2.1.0版本,通过Dynamips、IOU、VMWare、Docker、VPCS、QEMU等软件,可以支持模拟来自不同供应商的多种网络设备(如Cisco N9K、ASA、F5 BIG-IP等)。详细的设备支持列表可以访问:https://gns3.com/marketplace/appliances 进行查询。
GNS3组件介绍:
GNS3是C/S架构的,分为客户端和服务器端。用户使用一般涉及到两个组件,分别是GNS3-all-in-one和GNS3-VM,下面简单介绍一下:
- 客户端:GNS3-all-in-one内包含了GNS3的客户端组件,安装运行在本地PC上,目前支持Windows、Mac、Linux。提供了图形化的用户交互界面(GUI),方便我们创建自己的网络拓扑,官方截图如下:
- 服务器端:GNS3的服务器端分为两类,分别是本地GNS3服务和GNS3 VM。
- 本地GNS3服务:会在安装了GNS3-all-in-one的本地PC上与GNS3 GUI、Dynamips等进程一同运行。仅能通过Dynamips模拟思科IOS系统设备,且资源占用较高;
- GNS3 VM:顾名思义,它是GNS3服务器端的虚拟机版本。从部署上可以分为本地部署和远端部署。其中本地部署可以支持的虚拟化平台有VMware Workstation和Virtualbox。远端部署可以支持VMware ESXi,甚至可以部署在云平台上。
GNS3的安装(本文重点介绍GNS3的Remote Server安装):
- GNS3-all-in-one:由于官方的文档已经写得相当详细,图文并茂,甚至还提供了教学视频(YouTube!!!你们懂的),我就偷个懒直接分享下官方的文档链接(其实Windows和Mac两个系统版本的安装已经非常简单了)。
GNS3-all-in-one下载:https://gns3.com/software/download
- GNS3-VM:官方分别针对VMware Workstation、VMware ESXi和Virtualbox三个虚拟化平台,发布了相应的部署模板,用户只需导入即可。
GNS3-VM下载:https://gns3.com/software/download-vm
- GNS3 Remote Server:
先简单介绍一下,Remote Server是GNS3的云端服务器版,用户可以使用本地GNS3客户端,随时随地的连接至服务器,实时在线共享他们实验案例。
本次介绍的是基于Ubuntu 16.04 LTS系统的GNS3 Remote Server安装过程。
- 如果是在虚拟化环境下安装,我们需要先确认虚拟化平台是否放开了CPU虚拟化指令的访问
gns3@gns3srv:~$ lscpu Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 8 On-line CPU(s) list: 0-7 Thread(s) per core: 1 Core(s) per socket: 4 Socket(s): 2 NUMA node(s): 1 Vendor ID: GenuineIntel CPU family: 6 Model: 44 Model name: Intel(R) Xeon(R) CPU E5620 @ 2.40GHz Stepping: 2 CPU MHz: 2394.000 BogoMIPS: 4788.00 Virtualization: VT-x //确认此参数 Hypervisor vendor: VMware Virtualization type: full L1d cache: 32K L1i cache: 32K L2 cache: 256K L3 cache: 12288K NUMA node0 CPU(s): 0-7
注:如果不能访问CPU虚拟化指令,将会导致需要QEMU运行的应用无法使用。
- 安装remote server,以root权限执行以下命令
1 cd /tmp 2 curl https://raw.githubusercontent.com/GNS3/gns3-server/master/scripts/remote-install.sh > gns3-remote-install.sh 3 bash gns3-remote-install.sh --with-openvpn --with-iou --with-i386-repository
注:GNS3在使用过程中,需要将设备的控制台开放给用户进行远程访问。而在公有云环境中,这些控制台将直接暴露在互联网上。为了提高安全性,官方建议通过VPN连接服务器。如果是在内网环境部署,可以选择不安装"OpenVPN"。
- 配置防火墙策略,以root权限执行以下命令
1 ufw allow 3080/tcp //GNS3客户端默认使用3080端口与服务器通信 2 ufw allow 5000:5100/tcp //开通GNS3模拟设备控制台端口,GNS3默认起始端口为5000,用户可以根据使用需求开放范围端口 3 ufw enable //启用防火墙
注:以上仅开通了GNS3所使用的服务端口,如需通过SSH或VPN连接服务器,相关服务端口也需一并开启。
- 上面防火墙中所开启的GNS3服务端口均为系统默认端口,用户可以通过编辑GNS3的配置文件进行修改,配置文件位置:/etc/gns3/gns3_server.conf,以下是官方给出的配置示例:
1 [Server] 2 ; IP where the server listen for connection 3 host = 127.0.0.1 4 ; HTTP port for controlling the servers 5 port = 3080 6 ; Path where images of devices are stored 7 images_path = /home/gns3/GNS3/images 8 ; Path where user project are stored 9 projects_path = /home/gns3/GNS3/projects 10 ; Send crash to the GNS3 team 11 report_errors = True 12 ; First port of the range allocated to devices telnet console 13 console_start_port_range = 2001 14 ; Last port of the range allocated to devices telnet console 15 console_end_port_range = 5000 16 ; First port of the range allocated to communication between devices. You need two port by link 17 udp_start_port_range = 10000 18 ; Last port of the range allocated to communication between devices. You need two port by link 19 udp_start_end_range = 20000 20 ; Path of the ubridge program 21 ubridge_path = /Applications/GNS3.app/Contents/Resources/ubridge 22 ; Boolean for enabling HTTP auth 23 auth = True 24 ; Username for HTTP auth 25 user = bob 26 ; Password for HTTP auth 27 password = alice 28 29 [VPCS] 30 ; Path of the VPCS binary 31 vpcs_path = /usr/local/bin/vpcs 32 33 [Dynamips] 34 allocate_aux_console_ports = False 35 mmap_support = True 36 ; Path of the dynamips path 37 dynamips_path = /usr/local/bin/dynamips 38 sparse_memory_support = True 39 ghost_ios_support = True 40 41 [IOU] 42 ; Path of the iouyap binary 43 iouyap_path = /usr/local/bin/iouyap 44 ; Path of your .iourc file. If empty we search in $HOME/.iourc 45 iourc_path = /home/gns3/.iourc 46 ; Validate if the iourc is correct. If you turn off and your licence is invalid iou will crash without errors 47 license_check = True 48 49 [VirtualBox] 50 ; Path of the VBoxManage command 51 vboxmanage_path = /usr/local/bin/VBoxManage 52 ; Run VirtualBox with sudo as vbox_user 53 vbox_user = 54 55 [VMware] 56 ; Type of Virtualization product (fusion, player, workstation) 57 host_type = fusion 58 ; First vmnet adapter controlled by GNS3 59 vmnet_start_range = 2 60 ; Last vmnet adapter controlled by GNS3 61 vmnet_end_range = 50 62 ; Path of the vmrun executable 63 vmrun_path = /Applications/VMware Fusion.app/Contents/Library/vmrun
注:如非必要,不建议修改配置文件。配置文件中部分参数可通过客户端的GUI界面进行配置。
GNS3的使用
- 连接GNS3服务器:
- 第一次进入GNS3客户端,会弹出配置向导界面,该界面也可以通过点击"Help"菜单中的"Setup Wizard"打开。通过该向导完成与Remote Server的连接配置,如下图:
- 向导最后会询问是否添加设备模板,如下图:
直接点击“OK”完成向导,稍后我会详细介绍如何导入设备模板。 - 向导完成后,我们会在右边的Servers Summary窗口看到服务器的资源使用情况(如下图),这表明我们已经成功连接到了服务器。
- 第一次进入GNS3客户端,会弹出配置向导界面,该界面也可以通过点击"Help"菜单中的"Setup Wizard"打开。通过该向导完成与Remote Server的连接配置,如下图:
- 使用Dynamips运行思科路由器IOS镜像:
跟我们以前使用的第三方模拟器一样,GNS3可以通过Dynamips软件,运行未经修改的思科IOS系统镜像。这种方式虽然可以保留完整的IOS功能,但仅能支持部分型号路由器的早期版本,且运行时资源占用较高。GNS3官方给出了目前Dynamips可以支持的路由器型号和IOS版本,大家可以通过访问http://docs.gns3.com/1-kBrTplBltp9P3P-AigoMzlDO-ISyL1h3bYpOl5Q8mQ/index.html进行查询。
下面说一下在GNS3中,思科IOS镜像的导入方法:
- 点击"Edit"菜单中的"Preferences...",如下图:
- 弹出"Preferences"窗口后,点击左侧列表"Dynamips"中的"IOS routers",然后点击右侧的"New"按钮,如下图:
- 在弹出窗口中选择"New Image",然后点击"Browse..."按钮(如下图),然后选取要导入的IOS镜像文件
- 选取完镜像文件后,GNS3会将镜像上传至服务器,并对镜像文件进行识别,识别后会弹出新窗口,让用户确认,如下图:
- 确认相关设备运行内存大小(如下图),相关内存数据可以在之前那个GNS3官方提供的设备支持列表中找到
- 选择扩展模块,用户可以根据使用需求,添加不同类型接口的扩展模块,如下图:
- 计算Idle值,如果使用的是GNS3官方推荐的IOS版本,这里会自动识别。如果不是,则需要通过点击"Idle-PC finder"按钮,生成一个,如下图:
- 这样我们就完成了一个设备的添加,如果我们想要修改该设备的配置信息,可以在"Preferences"界面(如下图)选中要修改的设备,然后点击"Edit"按钮进行编辑
- 在使用过程中,也可以通过选中设备,点击鼠标右键,选择"Configure Template"(如下图),进行编辑
- 点击"Edit"菜单中的"Preferences...",如下图:
- GNS3设备模板导入方法:
- 在GNS3中,官方为所有能够支持的设备均制作了模板,不管是使用Dynamips、IOU、VIRL还是QEMU,都可以通过统一的模板导入的方式添加设备,所有模板可以在“这里”下载,如下图:
- 下载的文件后缀为".gns3a",下载完成后,我们打开GNS3的"File"菜单,点击"Import appliance",如下图:
- 在弹出窗口中,选取刚才下载的gns3a文件,点击“打开”,进入"add appliance"界面,如下图:
- 选择服务器类型,因为我们只添加了一个服务器,故这里仅一项可选,如下图:
- 这时,GNS3会列出该模板所需的文件列表,并扫描本地磁盘是否有相应的文件,如果找到则显示状态为"Found",如所需文件没有找到,用户可以选中相应的文件,然后点击"Import"按钮手动导入。当所需的文件均已找到后,该项会显示为"Ready for install",这时我们就可以点击"Next"按钮了,根据提示完成导入,如下图:
- 完成后我们就可以在设备列表中看到该设备(如下图),如需修改配置,同样可以选中设备,点击鼠标右键,选择"Configure Template"进行编辑
- 在GNS3中,官方为所有能够支持的设备均制作了模板,不管是使用Dynamips、IOU、VIRL还是QEMU,都可以通过统一的模板导入的方式添加设备,所有模板可以在“这里”下载,如下图:
- 其它关于设备模板使用的注意事项
- 在使用IOU、VIRL模拟思科网络设备时,需具有思科相关授权许可才能使用,其模板中所需文件均可在思科官网进行下载。
- IOU的授权可以在"Preferences..."界面的"IOS on UNIX"中进行导入,具体界面如下:
注:由于涉及授权问题,本文不提供相关授权许可内容,大家可以去找“度娘”问问 - 在使用remote server时,导入IOU授权后,可能不会马上生效,这时需要你去服务器上重启一下GNS3的服务即可
- 项目的创建及使用
- 项目的创建
在完成了服务器连接后,GNS3客户端会要求建立实验项目,如下图: - 如果想读取remote server上已建立的实验项目,可以点击“Projects library”选项卡,查看并选取实验项目,如下图:
注:remote server上的实验项目允许多个客户端同时读取,这样可以实现实时的在线共享,适合应用于培训
- 项目的创建
GNS3的用户界面非常友好,通过简单的拖拽操作,即可组建出自己的网络拓扑,这里就不再针对构建拓扑进行介绍了,希望本文的内容对大家能有所帮助。
铸剑团队签名:
【总监】十二春秋之,3483099@qq.com;
【Master】戈稻不苍,han169@126.com;
【Java开发】雨鸶,343691194@qq.com;思齐骏惠,qiangzhang1227@163.com;小王子,545106057@qq.com;巡山小钻风,840260821@qq.com;
【VS开发】豆点,2268800211@qq.com;
【系统测试】土镜问道,847071279@qq.com;尘子与自由,695187655@qq.com;
【大数据】沙漠绿洲,caozhipan@126.com;张三省,570417591@qq.com;
【网络】夜孤星,11297761@qq.com;
【系统运营】三石头,261453882@qq.com;平凡怪咖,591169003@qq.com;
【容灾备份】秋天的雨,18568921@qq.com;
【安全】保密,你懂的。
原创作者:夜孤星
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。