You can support us by downloading this article as PDF from the Link below. Download the guide as PDF

GNS3 team is working smarter and harder day by day to make GNS3 a must go to tool when learning and testing Network implementation scenario. GNS3 is a Graphical Network Simulator that allows emulation of complex networks. It is an essential tool when preparing for Networking certifications such CCNA, JNCIA, CCNP as well as CCIE level. With every new release there are new features added as well as improvements on existing.

In this article we will be discussing the installation of GNS3 on Kali Linux 2020.x and latest rolling editions. The GNS3 project has evolved to support many devices from multiple network vendors including Cisco virtual switches, Cisco ASAs, Brocade vRouters, Cumulus Linux switches, Docker instances, HPE VSRs, multiple Linux appliances and many others.

Some core features of GNS3 are:

  • Fully free and Open Source – No monthly or yearly license fees
  • There is no limit on the number of devices supported – CPU and RAM hardware is your only limitation
  • GNS3 supports all VIRL images (IOSv, IOSvL2, IOS-XRv, CSR1000v, NX-OSv, ASAv)
  • GNS3 can run with or without hypervisors in multi-vendor environments
  • It has support for multiple switching options (ESW16 Etherswitch, IOU/IOL Layer 2 images, VIRL IOSvL2)
  • GNS3 supports both free and paid hypervisors – Virtualbox, VMware Workstation, VMware Player, ESXi, Fusion
  • GNS3 has native support for Linux without the need for need for additional virtualization software

Step 1: Update System

Begin the installation by updating the system and all packages installed to the latest versions.

sudo apt update
sudo apt upgrade

Since the upgrade could contain updates around kernel let’s reboot our system.

sudo reboot

Step 2: Install required dependencies

Make sure your Kali Linux has correct repositories configured.

Add Kali Linux official repositories to sources.list

Update package APT index:

$ sudo apt update
Get:1 kali-rolling InRelease [30.5 kB]         
Get:2 kali-rolling/contrib Sources [63.7 kB]
Get:4 kali-rolling/main Sources [13.8 MB]
Get:8 kali-rolling/non-free Sources [127 kB]                                                                                                                                                    
Get:9 kali-rolling/main amd64 Packages [17.5 MB]                                                                                                                                                
Get:10 kali-rolling/non-free amd64 Packages [202 kB]                                                                                                                                            
Get:11 kali-rolling/contrib amd64 Packages [106 kB]                                                                                                                                             
Fetched 28.2 MB in 16s (1,769 kB/s)                                                                                                                                                                                       
Reading package lists... Done
Building dependency tree       
Reading state information... Done

Install the following software dependencies

sudo apt install -y python3-pip python3-pyqt5 python3-pyqt5.qtsvg python3-pyqt5.qtwebsockets qemu qemu-kvm qemu-utils libvirt-clients libvirt-daemon-system virtinst wireshark xtightvncviewer apt-transport-https ca-certificates curl gnupg2 software-properties-common

Step 3: Install GNS3 on Kali Linux Rolling

Finally perform the installation of GNS3 on Kali Linux Rolling release.

Install GNS3 Server component

$ sudo pip3 install gns3-server
Collecting gns3-server
  Downloading gns3-server-2.2.17.tar.gz (8.7 MB)
     |████████████████████████████████| 8.7 MB 4.2 MB/s 
Requirement already satisfied: Jinja2>=2.7.3 in /usr/lib/python3/dist-packages (from gns3-server) (2.11.2)
Collecting aiofiles==0.5.0
  Downloading aiofiles-0.5.0-py3-none-any.whl (11 kB)
Collecting aiohttp-cors==0.7.0
  Downloading aiohttp_cors-0.7.0-py3-none-any.whl (27 kB)
Requirement already satisfied: aiohttp==3.6.2 in /usr/lib/python3/dist-packages (from gns3-server) (3.6.2)
Requirement already satisfied: async-timeout==3.0.1 in /usr/lib/python3/dist-packages (from gns3-server) (3.0.1)
Requirement already satisfied: distro>=1.3.0 in /usr/lib/python3/dist-packages (from gns3-server) (1.5.0)
Requirement already satisfied: jsonschema==3.2.0 in /usr/lib/python3/dist-packages (from gns3-server) (3.2.0)
Collecting psutil==5.6.7
  Downloading psutil-5.6.7.tar.gz (448 kB)
     |████████████████████████████████| 448 kB 4.9 MB/s 
Collecting py-cpuinfo==7.0.0
  Downloading py-cpuinfo-7.0.0.tar.gz (95 kB)
     |████████████████████████████████| 95 kB 3.0 MB/s 
Collecting sentry-sdk>=0.14.4
  Downloading sentry_sdk-0.19.5-py2.py3-none-any.whl (128 kB)
     |████████████████████████████████| 128 kB 4.7 MB/s 
Requirement already satisfied: urllib3>=1.10.0 in /usr/lib/python3/dist-packages (from sentry-sdk>=0.14.4->gns3-server) (1.26.2)
Requirement already satisfied: certifi in /usr/lib/python3/dist-packages (from sentry-sdk>=0.14.4->gns3-server) (2020.6.20)
Building wheels for collected packages: gns3-server, psutil, py-cpuinfo
  Building wheel for gns3-server ( ... done
  Created wheel for gns3-server: filename=gns3_server-2.2.17-py3-none-any.whl size=9362887 sha256=d41b291e64f3296c747f99ccfd7a85080572274b270a173070d84abe03fa3e32
  Stored in directory: /root/.cache/pip/wheels/7c/93/bf/6988e561eb06b210a54928f884483e35ce48ca7fad4c8bffc0
  Building wheel for psutil ( ... done
  Created wheel for psutil: filename=psutil-5.6.7-cp39-cp39-linux_x86_64.whl size=265842 sha256=02c84201fd411405155645990d6c833588c130ffb8dc4978c652e7561344e424
  Stored in directory: /root/.cache/pip/wheels/67/e7/5d/b8eb44db682bf1a1859a6e6d2540045869edaee3731552adc0
  Building wheel for py-cpuinfo ( ... done
  Created wheel for py-cpuinfo: filename=py_cpuinfo-7.0.0-py3-none-any.whl size=20068 sha256=15426c9fbf5132b19bc648bc50137d21413486439ea1a25786f738ec3fa138f3
  Stored in directory: /root/.cache/pip/wheels/7f/2c/24/85d73581e5927be15689598ed1f02fe2a40cc66314232507c4
Successfully built gns3-server psutil py-cpuinfo
Installing collected packages: aiofiles, aiohttp-cors, psutil, py-cpuinfo, sentry-sdk, gns3-server
  Attempting uninstall: psutil
    Found existing installation: psutil 5.7.3
    Not uninstalling psutil at /usr/lib/python3/dist-packages, outside environment /usr
    Can't uninstall 'psutil'. No files were found to uninstall.
Successfully installed aiofiles-0.5.0 aiohttp-cors-0.7.0 gns3-server-2.2.17 psutil-5.6.7 py-cpuinfo-7.0.0 sentry-sdk-0.19.5

Wait for installation to complete then install the GUI component.

$ sudo pip3 install gns3-gui
Collecting gns3-gui
  Downloading gns3-gui-2.2.17.tar.gz (4.9 MB)
     |████████████████████████████████| 4.9 MB 1.2 MB/s 
Requirement already satisfied: distro>=1.3.0 in /usr/lib/python3/dist-packages (from gns3-gui) (1.5.0)
Requirement already satisfied: jsonschema==3.2.0 in /usr/lib/python3/dist-packages (from gns3-gui) (3.2.0)
Requirement already satisfied: psutil==5.6.7 in /usr/local/lib/python3.9/dist-packages (from gns3-gui) (5.6.7)
Requirement already satisfied: sentry-sdk>=0.14.4 in /usr/local/lib/python3.9/dist-packages (from gns3-gui) (0.19.5)
Requirement already satisfied: certifi in /usr/lib/python3/dist-packages (from sentry-sdk>=0.14.4->gns3-gui) (2020.6.20)
Requirement already satisfied: urllib3>=1.10.0 in /usr/lib/python3/dist-packages (from sentry-sdk>=0.14.4->gns3-gui) (1.26.2)
Building wheels for collected packages: gns3-gui
  Building wheel for gns3-gui ( ... done
  Created wheel for gns3-gui: filename=gns3_gui-2.2.17-py3-none-any.whl size=3815821 sha256=700245f3b2668c0c3cc4e6e4e015ea2ebef4f7a2703f44a8809869a8d9c38ba1
  Stored in directory: /root/.cache/pip/wheels/a0/8c/61/bcfd1f0c4324732bb6a051a80a71c0bfa6bdce5e248b064cdb
Successfully built gns3-gui
Installing collected packages: gns3-gui
Successfully installed gns3-gui-2.2.17

You can start GNS3 from CLI

$ gns3

Or by searching the GNS3 application from Desktop and starting it.


The next steps will be GNS3 Setup Wizard for your Local server then proceeding to create your first GNS3 topology.

Step 4: Setting up Docker Support

If you want Docker support in your GNS3 you’ll need to install Docker CE by following steps in the guide below.

Install Docker and Docker Compose on Kali Linux

Then add GNS3 repository

sudo tee /etc/apt/sources.list.d/gns3.list<<EOF
deb bionic main
deb-src bionic main

Import GPG repository key:

$ sudo apt-key adv --keyserver --recv-keys F88F6D313016330404F710FC9A2FD067A2E3EF7B                                                                                                             

Warning: apt-key is deprecated. Manage keyring files in trusted.gpg.d instead (see apt-key(8)).
Executing: /tmp/apt-key-gpghome.WQqu0nldXm/ --keyserver --recv-keys F88F6D313016330404F710FC9A2FD067A2E3EF7B
gpg: key 9A2FD067A2E3EF7B: public key "Launchpad PPA for GNS3" imported
gpg: Total number processed: 1
gpg:               imported: 1

Update APT package index:

sudo apt update

Then install dynamips ubridge:

$ sudo apt install dynamips ubridge
Reading package lists... Done
Building dependency tree       
Reading state information... Done
Suggested packages:
The following NEW packages will be installed:
  dynamips ubridge
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 391 kB of archives.
After this operation, 1,190 kB of additional disk space will be used.
Get:1 bionic/main amd64 dynamips amd64 0.2.21-1~bionic1 [358 kB]
Get:2 bionic/main amd64 ubridge amd64 0.9.18-1~bionic1 [32.8 kB]                                                                                                                   
Fetched 391 kB in 9s (44.6 kB/s)                                                                                                                                                                                            
Preconfiguring packages ...
Selecting previously unselected package dynamips.
(Reading database ... 275469 files and directories currently installed.)
Preparing to unpack .../dynamips_0.2.21-1~bionic1_amd64.deb ...
Unpacking dynamips (0.2.21-1~bionic1) ...
Selecting previously unselected package ubridge.
Preparing to unpack .../ubridge_0.9.18-1~bionic1_amd64.deb ...
Unpacking ubridge (0.9.18-1~bionic1) ...
Setting up dynamips (0.2.21-1~bionic1) ...
Setting up ubridge (0.9.18-1~bionic1) ...
Processing triggers for man-db (2.9.3-2) ...
Processing triggers for kali-menu (2021.1.2) ...

Add your user to the following groups:

sudo usermod -aG kvm,libvirt,docker,ubridge,wireshark $USER

To prevent accidentally installing anything else from that repo (for now), remove comment out lines in the file.

sudo tee /etc/apt/sources.list.d/gns3.list<<EOF
#deb bionic main
#deb-src bionic main

Refresh metadata

sudo apt update

Recommended networking books:

Best CCNA R&S (200-125) Certification Preparation Books

Best CCNA Security (210-260) Certification Study Books

Best CCNP R&S Certification Preparation books

As an appreciation for the content we put out,
we would be thrilled if you support us!

As we continue to grow, we would wish to reach and impact more people who visit and take advantage of the guides we have on our blog. This is a big task for us and we are so far extremely grateful for the kind people who have shown amazing support for our work over the time we have been online.

Thank You for your support as we work to give you the best of guides and articles. Click below to buy us a coffee.


Please enter your comment!
Please enter your name here