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!