{"id":5431,"date":"2026-09-13T11:06:19","date_gmt":"2026-09-13T11:06:19","guid":{"rendered":"https:\/\/geekmungus.co.uk\/?p=5431"},"modified":"2026-09-13T11:06:19","modified_gmt":"2026-09-13T11:06:19","slug":"gns3-installation-and-configuration","status":"publish","type":"post","link":"https:\/\/geekmungus.co.uk\/?p=5431","title":{"rendered":"GNS3 Installation and Configuration"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">GNS3 can run on Windows, Linux or MacOS, however for large scale network simulations running it on a dedicated server machine (typically Linux) is recommended. The deployment of this can be difficult due to limited documentation, the following provides a guide for the installation of GNS3 on a dedicated Linux server, ideally with as much CPU and memory as you have available (depending on what switch hardware you seek to virtualise).&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Running on Linux uses QEMU\/KVM hypervisior layer meaning that your switch\/firewall\/router images run emulated at high performance due to the direct access to the Kernel. When using Windows or MacOS you need to run these on a GNS3 VM which adds another layer between your lab and the host running it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The following was built and verified with Ubuntu Linux&nbsp;24.04 LTS on a Virtual Machine running on VMware ESXi 8, the VM is sized as 8 vCPU, 128GB RAM and 1TB Hard Disk. You could of course run this straight onto bare metal, if you have suitable hardware available to.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The Virtual Machine requires that the &#8220;Expose hardware extended virtualistion to the guest OS&#8221; enabled to ensure that you have nested virtualisation capability.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"691\" height=\"468\" src=\"https:\/\/geekmungus.co.uk\/wp-content\/uploads\/2026\/09\/image.png\" alt=\"\" class=\"wp-image-5432\" srcset=\"https:\/\/geekmungus.co.uk\/wp-content\/uploads\/2026\/09\/image.png 691w, https:\/\/geekmungus.co.uk\/wp-content\/uploads\/2026\/09\/image-300x203.png 300w\" sizes=\"auto, (max-width: 691px) 100vw, 691px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">The guide assumes you have a working Ubuntu Linux 24.04 LTS instance running, which has network and Internet connectivity. It is recommended to have created a user to install and run GNS3 under. In my case I have a user account with sudo privileges that is used to install and run the GNS3 server.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Step 1 &#8211; Prepare and Verify<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">We&#8217;ll ensure we have the basics in place so we are prepared to build the server.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1.1. Check Hardware Virtualisation<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Firstly we&#8217;ll check that the hardware virtualisation is exposed with:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>grep -c -E 'vmx|svm' \/proc\/cpuinfo<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Any result greater than 0 shows you have hardware virtualisation capability within the Linux instance.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1.2. Update System and Enable Universe Respository<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">GNS3 needs the Ubuntu universe respository, so we&#8217;ll configure APT and perform updates so the OS is up to date.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt update &amp;&amp; sudo apt upgrade -y\nsudo add-apt-repository -y universe<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Now we need to add what is required for handling external PPAs (Personal Package Archive), so we can then access the GNS3 PPA to get GNS3 server.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt install -y software-properties-common curl<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">1.3. Enable Sudoers and Set Timezone<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">We want to be able to easily swap to sudo without having to retype passwords etc. so let&#8217;s just add using &#8220;visudo&#8221; our user account to the sudoers file. Add the following under the groups section:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cit-gns3-01-admin       ALL=(ALL:ALL) NOPASSWD: ALL<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">We need to set the timezone, if not already done:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo timedatectl set-timezone Europe\/London<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">1.4. Add GNS3 PPA to APT Repository Configuration<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">GNS3 is published via the PPA for major releases of Ubuntu, we&#8217;ll add it and update APT.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo add-apt-repository -y ppa:gns3\/ppa\nsudo apt update<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">We check where it is coming from, which appears to be good:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ apt-cache policy gns3-server\ngns3-server:\n  Installed: 2.2.61~noble1\n  Candidate: 2.2.61~noble1\n  Version table:\n *** 2.2.61~noble1 500\n        500 https:\/\/ppa.launchpadcontent.net\/gns3\/ppa\/ubuntu noble\/main amd64 Packages\n        100 \/var\/lib\/dpkg\/status<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">Step 2 &#8211; Install GNS3 Server<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Now we can actually install GNS3, its recommended to be logged on as the user you wish to be running the GNS3 Server under. When creating this I had signficant problems when attempting to install under one user and run under another<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2.1. &#8211; Install GNS3 Server<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">We&#8217;ll install GNS3 Server:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt install -y --no-install-recommends gns3-server<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">When prompted, allow non-superusers to be able to run GNS3, i.e. say &#8220;yes&#8221; to this.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Once GNS3 is installed check its available:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ gns3server --version\n2.2.61<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">2.2. &#8211; Install Libvirt and IOU Support<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Install Libvirt and IOU Support (needed for Cisco images):<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt install libvirt-daemon-system libvirt-clients bridge-utils ubridge dnsmasq<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Enable and start the libvirtd service:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl enable --now libvirtd<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ensure the default network interface <strong>virbr0 <\/strong>is running:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo virsh net-start default<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Check:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo virsh net-list --all<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">You should see a network named default. If it is inactive, start it and enable automatic startup:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo virsh net-autostart default<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Enable IOU Support:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo dpkg --add-architecture i386\nsudo apt update\nsudo apt install gns3-iou<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">2.3. Install Docker CE<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Remove any old versions:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt remove docker docker-engine docker.io\nsudo snap remove docker<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Install the following packages:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt-get install apt-transport-https ca-certificates curl software-properties-common<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Import the official Docker GPG key:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -fsSL https:\/\/download.docker.com\/linux\/ubuntu\/gpg | sudo apt-key add -<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Add the appropriate repo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo add-apt-repository \\\n\"deb &#91;arch=amd64] https:\/\/download.docker.com\/linux\/ubuntu \\\n   $(. \/etc\/os-release &amp;&amp; echo $VERSION_CODENAME) stable\"<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Install Docker-CE:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt update\nsudo apt install docker-ce -y<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">2.4. Fix Permissions<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">We need to ensure that our current user, i.e. the one used to run the GNS3 Server will have the correct permissions, we do this with:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><em>ubridge libvirt kvm wireshark docker<\/em><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo usermod -aG ubridge,libvirt,kvm,wireshark,docker $(whoami)<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Restart your user session by logging out and back in, or restarting the system.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Verify it is all in place as expected:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>id | tr ',' '\\n' | grep -E 'kvm|libvirt|ubridge'<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Check the ubridge with:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>getcap \/usr\/bin\/ubridge<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Its expected to get the following:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>\/usr\/bin\/ubridge cap_net_admin,cap_net_raw=eip<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">2.5. Install Dynamips<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Although I won&#8217;t be running any Cisco images, Dynamips is worth installing so you can use the basic &#8220;Ethernet Switch&#8221; object, which can be useful in certain simple scenarios, or when you want a management network for your hardware.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo apt install -y dynamips<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Check the build:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>dynamips --version | head -1<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">Step 3 &#8211; Test GNS3 Server<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">Now it is installed, we can test it works running interactively:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>gns3server --host 0.0.0.0<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">You should see something like:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>cit-gns3-01-admin@cit-gns3-01:~$ gns3server --host 0.0.0.0\nNo configuration file could be found or read\n2026-09-07 15:27:43 INFO run.py:218 GNS3 server version 2.2.61\n2026-09-07 15:27:43 INFO run.py:220 Copyright (c) 2007-2026 GNS3 Technologies Inc.\n2026-09-07 15:27:43 INFO run.py:242 Running with Python 3.12.3 and has PID 17988\n2026-09-07 15:27:43 INFO run.py:248 Using system certificate store for SSL connections\n2026-09-07 15:27:43 INFO run.py:78 Current locale is en_GB.UTF-8\n2026-09-07 15:27:43 INFO web_server.py:349 Starting server on 0.0.0.0:3080\n2026-09-07 15:27:43 INFO __init__.py:70 Load controller configuration file \/home\/cit-gns3-01-admin\/.config\/GNS3\/2.2\/gns3_controller.conf\n2026-09-07 15:27:43 INFO __init__.py:74 Controller is starting\n2026-09-07 15:27:43 INFO __init__.py:329 Installing base configs in '\/home\/cit-gns3-01-admin\/GNS3\/configs'\n2026-09-07 15:27:43 INFO __init__.py:342 Installing built-in disks in '\/home\/cit-gns3-01-admin\/GNS3\/images\/QEMU'\n2026-09-07 15:27:43 INFO __init__.py:255 Comparing controller version 2.2.61 with config version None\n2026-09-07 15:27:43 INFO appliance_manager.py:103 Installing built-in appliances in '\/home\/cit-gns3-01-admin\/.local\/share\/GNS3\/appliances'\n2026-09-07 15:27:43 INFO compute.py:69 Create compute local\n2026-09-07 15:27:43 INFO compute.py:369 Connecting to compute 'local'\n2026-09-07 15:27:43 WARNING compute.py:372 Cannot connect to compute 'local': Cannot connect to host 127.0.0.1:3080 ssl:default &#91;Connect call failed ('127.0.0.1', 3080)]\n2026-09-07 15:27:43 INFO web_server.py:247 Computing image checksums...\n2026-09-07 15:27:43 INFO web_server.py:249 Finished computing image checksums\n2026-09-07 15:27:48 INFO compute.py:369 Connecting to compute 'local'\n2026-09-07 15:27:48 INFO web_log.py:232 127.0.0.1 &#91;07\/Sep\/2026:15:27:48 +0000] \"GET \/v2\/compute\/capabilities HTTP\/1.1\" 200 553 \"-\" \"Python\/3.12 aiohttp\/3.13.5\"\n2026-09-07 15:27:48 INFO notification_handler.py:50 New client has connected to compute WebSocket\n2026-09-07 15:27:48 INFO compute.py:436 Connected to compute 'local' WebSocket 'http:\/\/127.0.0.1:3080\/v2\/compute\/notifications\/ws'<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">You should also be able to reach the API, if you can then it is working correctly:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -s http:\/\/localhost:3080\/v2\/version<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">So a result like the following (your version may differ) is good:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n    \"local\": false,\n    \"version\": \"2.2.61\"\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">That&#8217;s great, but we don&#8217;t want to have this running interactively, so let&#8217;s set this to run as a Systemd service.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Step 4 &#8211; Run as Systemd Service<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">To run as a systemd service, we just need to first create the file as below:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo vim \/etc\/systemd\/system\/gns3server.service<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">And add this content, we need to ensure that the User and Group is changed to whatever our GNS3 Server user account will run under, i.e. the user you are logged into at the moment:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>&#91;Unit]\nDescription=GNS3 server\nAfter=network-online.target\nWants=network-online.target\n\n&#91;Service]\nType=simple\nUser=cit-gns3-01-admin\nGroup=cit-gns3-01-admin\nExecStart=\/usr\/bin\/gns3server --host 0.0.0.0\nRestart=on-failure\nRestartSec=5\nLimitNOFILE=16384\n\n&#91;Install]\nWantedBy=multi-user.target<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Reload Systemctl and enable GNS3 for a server.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl daemon-reload\nsudo systemctl enable --now gns3server<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Now check it is listening with:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>sudo systemctl status gns3server --no-pager<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">We should see something like the following:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ sudo systemctl status gns3server --no-pager\n\u25cf gns3server.service - GNS3 server\n     Loaded: loaded (\/etc\/systemd\/system\/gns3server.service; enabled; preset: enabled)\n     Active: active (running) since Mon 2026-09-07 15:30:35 UTC; 10s ago\n   Main PID: 18115 (gns3server)\n      Tasks: 1 (limit: 154442)\n     Memory: 45.0M (peak: 49.7M)\n        CPU: 610ms\n     CGroup: \/system.slice\/gns3server.service\n             \u2514\u250018115 \/usr\/share\/gns3\/gns3-server\/bin\/python \/usr\/bin\/gns3server --host 0.0.0.0\n\nSep 07 15:30:36 cit-gns3-01 gns3server&#91;18115]: 2026-09-07 15:30:36 INFO __init__.py:263 Built-in appliances are installed in '\/home\/cit-gns3-01-admin\/.local\/share\/GNS3\/appliances'\nSep 07 15:30:36 cit-gns3-01 gns3server&#91;18115]: 2026-09-07 15:30:36 INFO compute.py:69 Create compute local\nSep 07 15:30:36 cit-gns3-01 gns3server&#91;18115]: 2026-09-07 15:30:36 INFO compute.py:369 Connecting to compute 'local'\nSep 07 15:30:36 cit-gns3-01 gns3server&#91;18115]: 2026-09-07 15:30:36 WARNING compute.py:372 Cannot connect to compute 'local': Cannot connect to host 127.0.0.1:3080 ssl:default &#91;Connect\u2026.0.0.1', 3080)]\nSep 07 15:30:36 cit-gns3-01 gns3server&#91;18115]: 2026-09-07 15:30:36 INFO web_server.py:247 Computing image checksums...\nSep 07 15:30:36 cit-gns3-01 gns3server&#91;18115]: 2026-09-07 15:30:36 INFO web_server.py:249 Finished computing image checksums\nSep 07 15:30:41 cit-gns3-01 gns3server&#91;18115]: 2026-09-07 15:30:41 INFO compute.py:369 Connecting to compute 'local'\nSep 07 15:30:41 cit-gns3-01 gns3server&#91;18115]: 2026-09-07 15:30:41 INFO web_log.py:232 127.0.0.1 &#91;07\/Sep\/2026:15:30:41 +0000] \"GET \/v2\/compute\/capabilities HTTP\/1.1\" 200 553 \"-\" \"Pyth\u2026aiohttp\/3.13.5\"\nSep 07 15:30:41 cit-gns3-01 gns3server&#91;18115]: 2026-09-07 15:30:41 INFO notification_handler.py:50 New client has connected to compute WebSocket\nSep 07 15:30:41 cit-gns3-01 gns3server&#91;18115]: 2026-09-07 15:30:41 INFO compute.py:436 Connected to compute 'local' WebSocket 'http:\/\/127.0.0.1:3080\/v2\/compute\/notifications\/ws'\nHint: Some lines were ellipsized, use -l to show in full.<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">And then also verify it is working with:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>ss -tlnp | grep 3080<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Which should show GNS3 is listening on 3080:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>$ ss -tlnp | grep 3080\nLISTEN 0      100          0.0.0.0:3080      0.0.0.0:*    users:((\"gns3server\",pid=18115,fd=13))<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">You should also be able to reach the API, if you can then it is working correctly:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>curl -s http:\/\/localhost:3080\/v2\/version<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">So a result like the following (your version may differ) is good:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>{\n    \"local\": false,\n    \"version\": \"2.2.61\"\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">We are all good. You are now ready to use your GNS3 client to access the GNS3 Server and build your lab environment.<\/p>\n\n\n\n<h1 class=\"wp-block-heading\">Desktop Client Install and Configuration<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">The full installation of the client and configuration is beyond the scope of this document, but for Windows or MacOS, just running through with the default settings during installation is all that is typically required.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Once installed, use the &#8220;Setup Wizard&#8221; (which can be found under &#8220;Help&#8221;) to select a &#8220;Remote Server&#8221;, then complete the settings. I didn&#8217;t need to set the admin username or password, all I needed to do is enter an IP address of the GNS3 server.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"557\" height=\"430\" src=\"https:\/\/geekmungus.co.uk\/wp-content\/uploads\/2026\/09\/image-1.png\" alt=\"\" class=\"wp-image-5433\" srcset=\"https:\/\/geekmungus.co.uk\/wp-content\/uploads\/2026\/09\/image-1.png 557w, https:\/\/geekmungus.co.uk\/wp-content\/uploads\/2026\/09\/image-1-300x232.png 300w\" sizes=\"auto, (max-width: 557px) 100vw, 557px\" \/><\/figure>\n\n\n\n<h1 class=\"wp-block-heading\">GNS3 Cloud Node<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">The GNS3 Cloud Node works effectively as a Layer 2 bridge between the physical network directly via GNS3 Server into your lab environment. So a node (for example an Ubuntu Workstation) within your lab environment can exist directly on your physical network, and can be reached by hosts on your physical network, even though its actually inside your lab. The machine can also reach the Internet, or anything permitted by the physical network for that matter.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"165\" height=\"291\" src=\"https:\/\/geekmungus.co.uk\/wp-content\/uploads\/2026\/09\/image-2.png\" alt=\"\" class=\"wp-image-5434\"\/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Within this example the GNS3 Server is running on VMware, so to ensure the Cloud Node works as expected, we need to ensure the Port Group used by the So, to enable it, assuming you have installed everything as per the above, you just need to ensure the Port Group is configured as below,\u00a0<strong>Promisicious Mode: Accept<\/strong>\u00a0(and &#8220;override&#8221; if set upstream),\u00a0<strong>Mac Address Changes: Accept<\/strong>, and\u00a0<strong>Forged Transmits: Accept<\/strong>.<\/p>\n\n\n\n<figure class=\"wp-block-image size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"922\" height=\"562\" src=\"https:\/\/geekmungus.co.uk\/wp-content\/uploads\/2026\/09\/image-3.png\" alt=\"\" class=\"wp-image-5435\" srcset=\"https:\/\/geekmungus.co.uk\/wp-content\/uploads\/2026\/09\/image-3.png 922w, https:\/\/geekmungus.co.uk\/wp-content\/uploads\/2026\/09\/image-3-300x183.png 300w, https:\/\/geekmungus.co.uk\/wp-content\/uploads\/2026\/09\/image-3-768x468.png 768w\" sizes=\"auto, (max-width: 922px) 100vw, 922px\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Obviously you&#8217;ll need to ensure that the interface used by your device (e.g. an Ubuntu machine) within your lab has the correct network configuration as per your physical network, for example here is the\u00a0<strong>netplan\u00a0<\/strong>for the management workstation. Its the\u00a0<strong>ens3\u00a0<\/strong>adapter we are most interested in, this is the one that is on the same network that is bridged via the Cloud Node to the physical network.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>\/etc\/netplan\/50-cloud-init.yaml<\/strong><\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>network:\n  version: 2\n  ethernets:\n    ens3:\n      match:\n        macaddress: \"0c:15:60:d6:00:00\"\n      set-name: \"ens3\"\n      addresses:\n        - 192.168.102.112\/24\n      routes:\n        - to: default\n          via: 192.168.102.1\n      nameservers:\n        addresses:\n          - 8.8.8.8\n    ens4:\n      match:\n        macaddress: \"0c:15:60:d6:00:01\"\n      set-name: \"ens4\"\n      addresses:\n        - 172.16.1.1\/24<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">Quality of Life Settings<\/h1>\n\n\n\n<p class=\"wp-block-paragraph\">The screen resize can be a bit strange on Windows GNS3 Client when using Ubuntu Linux virtual machines within GNS3, to make it cope with resizing of the windows, you can install xterm, and use &#8220;resize&#8221;.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>apt install xterm\nresize<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Put that into bash.rc to catch that, append to the end of your ~\/.bashrc for it to always be available as soon as you log onto it.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># Automatically update window size on serial consoles\nshopt -s checkwinsize\nif &#91;&#91; \"$(tty)\" == \/dev\/ttyS* ]]; then\n\u00a0 \u00a0 trap 'resize &amp;>\/dev\/null' DEBUG\nfi<\/code><\/pre>\n\n\n\n<h1 class=\"wp-block-heading\">Additional Information\/Further Reading<\/h1>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/computingforgeeks.com\/how-to-install-gns3-on-ubuntu\/\">https:\/\/computingforgeeks.com\/how-to-install-gns3-on-ubuntu\/<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/github.com\/gns3\/gns3-server\">https:\/\/github.com\/gns3\/gns3-server<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/medium.com\/virtual-network-environments-gns3-vs-eve-ng\/part-2-gns3-installation-on-ubuntu-20-04-gcp-45f47e8f342\">https:\/\/medium.com\/virtual-network-environments-gns3-vs-eve-ng\/part-2-gns3-installation-on-ubuntu-20-04-gcp-45f47e8f342<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/gns3.com\/community\/featured\/trying-to-setup-autorun-on-boot-ubuntu-20-04\">https:\/\/gns3.com\/community\/featured\/trying-to-setup-autorun-on-boot-ubuntu-20-04<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/docs.gns3.com\/docs\/using-gns3\/administration\/gns3-server-configuration-file\">https:\/\/docs.gns3.com\/docs\/using-gns3\/administration\/gns3-server-configuration-file<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/docs.gns3.com\/docs\/using-gns3\/administration\/running-gns3-server-as-daemon\">https:\/\/docs.gns3.com\/docs\/using-gns3\/administration\/running-gns3-server-as-daemon<\/a><\/li>\n\n\n\n<li><a href=\"https:\/\/docs.gns3.com\/docs\/using-gns3\/administration\/gns3-security\">https:\/\/docs.gns3.com\/docs\/using-gns3\/administration\/gns3-security<\/a><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>GNS3 can run on Windows, Linux or MacOS, however for large scale network simulations running it on a dedicated server machine (typically Linux) is recommended. The deployment of this can be difficult due to limited documentation, the following provides a guide for the installation of GNS3 on a dedicated Linux server, ideally with as much &#8230; <a title=\"GNS3 Installation and Configuration\" class=\"read-more\" href=\"https:\/\/geekmungus.co.uk\/?p=5431\" aria-label=\"Read more about GNS3 Installation and Configuration\">Read more<\/a><\/p>\n","protected":false},"author":4,"featured_media":5437,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11,17],"tags":[],"class_list":["post-5431","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-linux","category-networking"],"_links":{"self":[{"href":"https:\/\/geekmungus.co.uk\/index.php?rest_route=\/wp\/v2\/posts\/5431","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/geekmungus.co.uk\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/geekmungus.co.uk\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/geekmungus.co.uk\/index.php?rest_route=\/wp\/v2\/users\/4"}],"replies":[{"embeddable":true,"href":"https:\/\/geekmungus.co.uk\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=5431"}],"version-history":[{"count":2,"href":"https:\/\/geekmungus.co.uk\/index.php?rest_route=\/wp\/v2\/posts\/5431\/revisions"}],"predecessor-version":[{"id":5438,"href":"https:\/\/geekmungus.co.uk\/index.php?rest_route=\/wp\/v2\/posts\/5431\/revisions\/5438"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/geekmungus.co.uk\/index.php?rest_route=\/wp\/v2\/media\/5437"}],"wp:attachment":[{"href":"https:\/\/geekmungus.co.uk\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=5431"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/geekmungus.co.uk\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=5431"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/geekmungus.co.uk\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=5431"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}