如何搭建和使用GNS3服务器

时间:2024-03-03 12:24:43

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。
  1. 本地GNS3服务:会在安装了GNS3-all-in-one的本地PC上与GNS3 GUI、Dynamips等进程一同运行。仅能通过Dynamips模拟思科IOS系统设备,且资源占用较高;
  2. GNS3 VM:顾名思义,它是GNS3服务器端的虚拟机版本。从部署上可以分为本地部署和远端部署。其中本地部署可以支持的虚拟化平台有VMware Workstation和Virtualbox。远端部署可以支持VMware ESXi,甚至可以部署在云平台上。

GNS3的安装(本文重点介绍GNS3的Remote Server安装):

  • GNS3-all-in-one:由于官方的文档已经写得相当详细,图文并茂,甚至还提供了教学视频(YouTube!!!你们懂的),我就偷个懒直接分享下官方的文档链接(其实Windows和Mac两个系统版本的安装已经非常简单了)。
  1. Windows系统:传送门
  2. Mac系统:传送门
  3. Linux系统:传送门

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安装过程。

  1. 如果是在虚拟化环境下安装,我们需要先确认虚拟化平台是否放开了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运行的应用无法使用。

  2. 安装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"。

  3. 配置防火墙策略,以root权限执行以下命令
    1 ufw allow 3080/tcp            //GNS3客户端默认使用3080端口与服务器通信
    2 ufw allow 5000:5100/tcp      //开通GNS3模拟设备控制台端口,GNS3默认起始端口为5000,用户可以根据使用需求开放范围端口
    3 ufw enable                    //启用防火墙

    注:以上仅开通了GNS3所使用的服务端口,如需通过SSH或VPN连接服务器,相关服务端口也需一并开启。

  4. 上面防火墙中所开启的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的使用

  1. 连接GNS3服务器:
    • 第一次进入GNS3客户端,会弹出配置向导界面,该界面也可以通过点击"Help"菜单中的"Setup Wizard"打开。通过该向导完成与Remote Server的连接配置,如下图:

    • 向导最后会询问是否添加设备模板,如下图:

      直接点击“OK”完成向导,稍后我会详细介绍如何导入设备模板。
    • 向导完成后,我们会在右边的Servers Summary窗口看到服务器的资源使用情况(如下图),这表明我们已经成功连接到了服务器。
  2. 使用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"(如下图),进行编辑
  3. GNS3设备模板导入方法:
    • 在GNS3中,官方为所有能够支持的设备均制作了模板,不管是使用Dynamips、IOU、VIRL还是QEMU,都可以通过统一的模板导入的方式添加设备,所有模板可以在“这里”下载,如下图:

    • 下载的文件后缀为".gns3a",下载完成后,我们打开GNS3的"File"菜单,点击"Import appliance",如下图:
    • 在弹出窗口中,选取刚才下载的gns3a文件,点击“打开”,进入"add appliance"界面,如下图:
    • 选择服务器类型,因为我们只添加了一个服务器,故这里仅一项可选,如下图:
    • 这时,GNS3会列出该模板所需的文件列表,并扫描本地磁盘是否有相应的文件,如果找到则显示状态为"Found",如所需文件没有找到,用户可以选中相应的文件,然后点击"Import"按钮手动导入。当所需的文件均已找到后,该项会显示为"Ready for install",这时我们就可以点击"Next"按钮了,根据提示完成导入,如下图:


    • 完成后我们就可以在设备列表中看到该设备(如下图),如需修改配置,同样可以选中设备,点击鼠标右键,选择"Configure Template"进行编辑
  4. 其它关于设备模板使用的注意事项
    1. 在使用IOU、VIRL模拟思科网络设备时,需具有思科相关授权许可才能使用,其模板中所需文件均可在思科官网进行下载。
    2. IOU的授权可以在"Preferences..."界面的"IOS on UNIX"中进行导入,具体界面如下:

      注:由于涉及授权问题,本文不提供相关授权许可内容,大家可以去找“度娘”问问
    3. 在使用remote server时,导入IOU授权后,可能不会马上生效,这时需要你去服务器上重启一下GNS3的服务即可
  5. 项目的创建及使用
    1. 项目的创建
      在完成了服务器连接后,GNS3客户端会要求建立实验项目,如下图:

    2. 如果想读取remote server上已建立的实验项目,可以点击“Projects library”选项卡,查看并选取实验项目,如下图:

      注:remote server上的实验项目允许多个客户端同时读取,这样可以实现实时的在线共享,适合应用于培训

GNS3的用户界面非常友好,通过简单的拖拽操作,即可组建出自己的网络拓扑,这里就不再针对构建拓扑进行介绍了,希望本文的内容对大家能有所帮助。