Installing GNS3 on CentOS 7

This article serves as an add-on to the information found at Installing GNS3 on CentOS 7

GNS3 is a popular network software emulator. It uses the Dynamips emulation software to simulate Cisco IOS. The official documentation includes installation guides for Ubuntu, Debian, Arch Linux, Fedora and OpenSuse. This article explains how to install GNS3 on CentOS 7.



Skip to the Installation section for non-VirtualBox use.

Configure base image to build from

Using CentOS-7-x86_64-Minimal-1708.iso from

Follow standard installation path for CentOS 7

– set root user’s password
– optionally create a new user to build with that has sudo rights

Activate Network

  •  ifcfg-enp0s3 was mapped to NAT
  • ifcfg-enp0s8 was mapped to host-only network at

  • Update /etc/sysconfig/network-scripts/ifcfg-enp0s3 to start on boot. from ONBOOT=no to ONBOOT=yes
  • Update /etc/sysconfig/network-scripts/ifcfg-enp0s8 to start on boot. from ONBOOT=no to ONBOOT=yes

Update base packages

Disable SELinux

  •  CentOS won’t let you disable the firewall as long as SELinux is enforcing, so that needs to be disabled first.
  • If you disable SELinux, make sure you reboot your machine before continuing to more steps.

Turn SELinux off: update /etc/sysconfig/selinux and reboot

  • From:

  • To:


Python 3

GNS3 is written in Python 3, Python 2 is not supported. The Python 3 packages are not available through the CentOS RPM repositories but they are available on EPEL. The steps below add the EPEL repository, install Python 3.6, QT5 and various other packages that are either needed or are useful for running GNS3.



Once Python 3.6 has been installed, the latest GNS3 releases are available from PyPi and are easily installed through the pip3.6 script.

Qt5 and Python 3 bindings

GNS3 relies on the Python 3 bindings for the QT5 toolkit. These are not available for CentOS 7 from any repository and must be installed from source code. This section is heavily based on the instructions found at


SIP is a tool that makes it very easy to create Python bindings for C and C++ libraries. It was originally developed to create PyQt, the Python bindings for the Qt toolkit, but can be used to create bindings for any C or C++ library.
SIP comprises a code generator and a Python module. The code generator processes a set of specification files and generates C or C++ code which is then compiled to create the bindings extension module. The SIP Python module provides support functions to the automatically generated code.


PyQt is the Python bindings for Digia’s Qt cross-platform application development framework. It supports Python v2 and v3 and Qt v4 and Qt v5. PyQt is available under the GPL and commercial licenses. The Sourceforge project is the repository for the GPL source and binary packages.
Building PyQt5 from source will take a while.


Dynamips is a Cisco router emulator. It started as a separate project in 2005 but the sources are now part of the GNS3 repositories on Github.


The Virtual PC Simulator (VPCS) can be used in GNS3 to add simple PCs to a network topology. The steps below will install the /usr/local/bin/vpcs from source code.


uBridge is a simple application to create user-land bridges between various technologies. Currently bridging between UDP tunnels, Ethernet and TAP interfaces is supported. Packet capture is also supported.


Bridge IOU to UDP, TAP and Ethernet.


That’s all!

Section for configuring and running the GNS3 server and GNS3 client. – coming soon!


I wanted to create a simple website to catalog and track my software endeavors, hobbies, and random thoughts. Since I theoretically develop software for a living, this seemed to be something that I should take on myself, and so was born.

Like most developers I’m lazy… Err, I mean I want to use existing tools if possible to develop and expand upon. There is a lot of good work out there already, so I’m happy to glue bits of it together to meet my needs and move on to other things.

Steps to make this site come to fruition.

  1. Choose an Internet domain registrar
  2. Choose an infrastructure provider
  3. Choose a platform and content management system
  4. Get SSL certificates
  5. Deploy everything


Internet Domain Registrar

Domain names are available for purchase from multiple vendors. I chose GoDaddy for no particular reason other than they have a decent track record, their price isn’t bad, and their tooling is easy enough to work with.


Infrastructure Provider

There are plenty of service providers out there offering all kinds of tiered options. I’m happy to administrate my own site so I only needed a simple platform as a service (PaaS) provider and Digital Ocean fit the bill. Basic tier is $5.00 / month and there are typically promotional codes floating around to bring the cost down even more.

Basic tier / standard droplet

– 512 MB RAM
– 1 vCPU
– 200 GB SSD Disk
– 1 TB Transfer

How to create a Droplet

It is useful to generate SSH keys ahead of time if you don’t have one already. I tend to generate new keys based on a collection of services, and the creation of on Digital Ocean warranted the creation of new keys for me.

  • Your new SSH key can then be added from the Settings > Security > SSH Keys section

For information about SSH keys, see the SSH Key Primer (ref needed).

  • Login into your account at Digital Ocean
  • From top of droplets page, choose  Create > Droplets
  • Choose an image:
    • select a distribution you are familiar with configuring, for me this is Ubuntu 16.04
  • Choose a size:
    • I have no delusions nor desire of going viral, so this is going to be the smallest option possible, $5.00 / month
  • Choose a datacenter region:
    • I’m US based, and on the East side of the country, so New York
  • Add SSH keys:
    • Add my SSH keys that were generated locally from ~/.ssh/
  • Finalize and Create
    • How many droplets: 1
  • Choose a hostname: Pick something you can remember


  • Create domain name:
    Set A record

    • map to IP provided by Digital Ocean
  • Set CNAME
    • map to