跳转至

GNS3 网络模拟器

本文记录在 CentOS 7 上快速部署一套 GNS3 服务的过程。


🖥️环境

   Static hostname: BsaControl
         Icon name: computer-server
           Chassis: server
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-514.el7.x86_64
      Architecture: x86-64

🚀部署流程

gns3.py3.6.site-packages.tar.gz · QEMU · gns3_server.conf · gns3server。安装依赖与 QEMU,改配置并启动。

flowchart LR
    A[安装 Python 3.6] --> B[安装 Python 依赖库]
    B --> C[安装 QEMU]
    C --> D[修改 gns3_server.conf]
    D --> E[启动 gns3server]
    E --> F[客户端 / Web 访问 3080]

1. 安装 Python 3.6

略。

2. 安装 Python 依赖库

将准备好的压缩包中的 gns3.py3.6.site-packages.tar.gz 解压,复制到 Python 3.6 的库目录(各机器不同)。例如本机为 /usr/local/lib64/python3.6/site-packages

3. 安装 QEMU

QEMU 是一款高效的模拟器及虚拟机监管器(VMM),主要提供两种功能:

功能 说明
用户态模拟器 利用动态代码翻译机制执行不同于主机架构的代码
虚拟机监管器 模拟全系统,利用其他 VMM(Xen、KVM 等)使用硬件提供的虚拟化支持,创建接近于主机性能的虚拟机
yum makecache
yum install -y qemu*
# 或
yum install -y qemu-guest-agent.x86_64 qemu-img.x86_64 qemu-kvm.x86_64 \
  qemu-kvm-common.x86_64 qemu-kvm-tools.x86_64 libvirt-lock-sanlock.x86_64

yum 库可能比预期少很多包

实际由于 yum 库的原因,makecache 时可能比预期少很多包,因此推荐直接将压缩包 bin 目录下以 qemu 开头的二进制文件复制到宿主机的 /bin 目录下。

4. 修改启动配置

修改压缩包 .config/GNS3/2.2/ 目录下的 gns3_server.conf

gns3_server.conf
host = <改为本机IP>
images_path = <修改为镜像存储目录;建议使用大容量磁盘>
projects_path = <修改为项目目录;建议使用大容量磁盘>
report_errors = True
auth = True
user = <web的登录名>
password = <web的登录密码>

将目录下的所有文件复制到 $HOME/.config/GNS3/2.2/,如无该目录需手动创建。

5. 启动服务器

创建文件 /usr/local/bin/gns3server,写入以下内容并附加可执行权限:

gns3server
#!/usr/bin/python3
# EASY-INSTALL-ENTRY-SCRIPT: 'gns3-server==2.2.17','console_scripts','gns3server'
__requires__ = 'gns3-server==2.2.17'
import re
import sys
from pkg_resources import load_entry_point

if __name__ == '__main__':
        sys.argv[0] = re.sub(r'(-script\.pyw?|\.exe)?$', '', sys.argv[0])
        sys.exit(
        load_entry_point('gns3-server==2.2.17', 'console_scripts', 'gns3server')()
    )

启动服务:

/usr/local/bin/gns3server

此时可以使用客户端或 Web 访问宿主机 3080 端口。


🟢排障

mountnfs.sh · NFS 220 挂载。首次拖入下载模板、工程「不见了」的处理。

首次拖入机器会下载模板

工程新建后首次拖入机器失败时,会从远程服务器下载模板,根据模板大小耗时 10s ~ 20min 不等,请耐心等待,不要反复尝试。

工程不见了?检查 220 挂载

通常是 NFS 挂载掉了,执行:

cat /bin/mountnfs.sh
mount -t nfs 10.66.244.220:/mnt/image /mnt/gns3/ &