Proof-of-concept for a Proxy Server for GNS3. The proxy is configured as aregular remote server in the GNS3-GUI, as the GNS3-GUI client does not yetsupport proxies gns3-gui issue #2696. Basic ideais to allow the use of central GNS3 server backends for classroom / lab setups,as used, e.g., in the Network Laboratory of Fulda University of AppliedSciences. Students can connect to the proxy and requests will be authenticated,filtered and forwarded to appropriate backend servers. Proxy authenticationalso circumvents the current lack of multi-user support in GNS3. Without theproxy, due to the multi user limitations (see \"Multiple Users Environment\"in GNS3 Security),users will have to use the same admin credentials for GNS3 to access thebackend. Also, requests cannot be filtered and authorized (e.g., to denydeletion/creation of projects etc.). As GNS3 does not support proxies, severaltweaks were necessary to the forked proxy.py project to allow transparentREST and WebSocket passthrough.
In our Network Laboratory we use several network emulators (besides GNS3 esp., mininet, CML-P and EVE-NG) and simulatorsfor courses and lab sessions as well as individual research or students' projects. As GNS3 is focusing on single userinstallations, several changes were necessary to provide lab session in class as well as to students working fromat home. The following figure describes our setup:
Using gns3-proxy, we can use separate credentials for users accessing the proxy without needing to share the singleadmin user provided by the standard gns3 server. However, no modifications are necessary to the standard GNS3 serverused in our backends and for the GNS3 client GUI. Users defined in the proxy, e.g., a group of students workingtogether in a group or on individual projects from at home, will be mapped to an individual backend server allowingload balancing and failover, since GNS3 compared to other network emulation environments does not offer a cluster setupto spread running projects and contained resources. The proxy also allows to filter and hence deny requests thatcontain modifications to projects. Prepared projects are periodically synced to all server backends using cron and thereplication utility gns3_proxy_replicate_projects.py.
Deploy the GNS3 server appliance as usual. You can find further information regarding the installation of a serverfor multiple clients in the GNS3 server for multiple clients docu.Make sure to allow VT-x/AMD-V for the backend server. If configured correctly, \"KVM support available: true\" should bedisplayed in the menu after starting the server. The server should be configured to use a static IP address. This canbe done using the Shell or selecting the option \"Network\" (Configure network settings) from the GNS3 menu. Configurestatic IP addresses using the template in /etc/netplan/90_gns3vm_static_netcfg.yaml.
You can use gns3_proxy_replicate_images.pyand gns3_proxy_replicate_templates.pyto replicate all templates and images of an existing backend server to new server. These scripts can also be usedperiodically using cron to replicate images and templates to all gns3-proxy backends.
The only change necessary in the GNS3 server backends, is to edit the regulargns3_server.conf (available in the appliance terminal and, e.g., used tochange username password etc., see alsoGNS3 server configuration file)and change the hostname from 0.0.0.0 to the IP address the server shouldlisten on, e.g.:
After you changed the config of the GNS3 backend servers and restarted them, configure gns3_proxy_config.ini basedon your needs and run gns3_proxy.py. You can then, configure GNS3-GUI to use the proxy as a remote GNS3 server.By default, the proxy listens on 0.0.0.0 and TCP port 14080.
will replicate all GNS3 project names beginning with \"KommProt\" from the backend server gns3-master as the source toall backend servers matching the regular expression \"gns3-.(.*)\". The option --force tells the utility to overwrite existingprojects with the same name on the targets without further notice. The option --regenerate-mac-address searches for thegiven MAC address in the projects and creates a new locally administered MAC address. This is especially necessary forlinks to cloud node types in the project. Otherwise all projects will use the same address leading to duplicate MAC andconsequently duplicated IP addresses.
will start the project with the name TestProject on the server gns3-1 defined as a backend in gns3_proxy_config.ini.Can be used, e.g., together with cron to start the project ahead of time for lab sessions or courses, avoidingwaiting for projects to be ready for use when students take the lab.
GNS3 is one of the greatest network simulators. GNS3 stands for Graphical Network Simulator. It helps to learn and design networks. In this article, you can download gns3 for Windows / Linux and macOS.
Since it is an open-source simulator, so you can download it from GitHub. However, if you want to download it from the official gns3 website, you need to signup on to gns3.com. Currently, the latest version of GNS3 is 2.2.16.
During the installation, the setup will ask you to download and install other applications such as Wireshark. You can skip the installation of such applications, but the recommendation is you should always install such applications.
You will also notice that the setup will ask for several types of permissions, you need to allow it accordingly. Now, just follow the following steps to download and install gns3 in Linux ( Ubuntu, Mint, etc.). 1e1e36bf2d