GNS3 and IOU remote server install on Centos 6.5

gns3_icon_256x256I recently got a new laptop at work. It has one major downside, it only has 4GB of RAM which is soldered straight into the motherboard and therefore can not be upgraded. Also 500MB of the RAM is reserved for the GPU, so I only have about 3.5GB of useabe RAM. This is fine for running my day to day applications for work, but does not leave much wiggle room for running GNS3.

Luckily I work for a hosting company and we have quite a few servers lying around doing nothing. I managed to get hold of a decommisioned server with 2 quad core processors and 48GB of RAM, perfect to run a remote GNS3 server on. We mainly use Centos and since it is not an OS I am familiar with (I mainly use Ubuntu) I decided to give it a go and try something new. In this post I will run through the steps I went through to get GNS3 sevrer running on Centos as well as setting up the GNS3 GUI to connect to the remote server.

Install the dependencies for GNS3

The main dependencies for GNS3 are:

  • Python version 3.3 or above
  • pip & setuptools
  • pyzmq
  • tornado
  • netifaces (optional)
  • The dependancies for IOU are:

  • iniparser, will need to be installed from source
  • Fix the missing library for 64bit systems
  • Install Python 3.3

    Centos 6 ships with Python 2.6 by default. We cant simply install python 3.3 and replace python2.6 as certain applications (such as yum) will break if we change the default version of python. To work around this limitation we need to install python 3.3 in a non-standard (such as /usr/local) so that python 2.6 and python 3.3 can live side-by-side.

    First we need to install the build dependecies for installing python 3.3, these include development tools and extra libraries that are used by python:

    You should probably compile Python as a shared library. All modern Linux distros ship with Python compiled as a shared library, many third party apps wont work if with out it. If compile pythong as a shared library, you need to tell it where to find the library. Edit the file /etc/ld.so.conf to include /usr/local/lib:

    After you have added the line, you need to run /sbin/ldconfig to make the dynamic linker aware of the change:

    Sample output of /etc/ld.so:

    We can now download, compile and install python 3.3. It is important that you use altinstall when you install python 3.3 or you will end up with two versions of python in the file system both called “python”.

    After you have run the commands above, python 3.3 will be available in /usr/local/bin while the default version of python will be available in /usr/bin:

    Install pip and setuptools

    The pip command is a tool for installing and managing Python packages it builds on top of Setuptools and provides a few extra functions that are useful when you manage your packages. Setuptools is the official package manager used for installing packages from the Python Package Index. Each Python interpreter on your system needs its own install of Setuptools.

    First download the setup script for setup tools:

    Next install setuptools for python 3.3:

    Now we can use setuptools to install pip:

    Install pyzmq, tornado and netifaces using pip

    Now that pip is installed we can install pyzmq, tornado and netifaces using the following command:

    Install Dynamips

    To install Dynamips we first need to install the following dependencies:

  • elfutils-libelf-devel.x86_64 : Development support for libelf
  • libuuid-devel.x86_64 : Universally unique ID library
  • uuid-devel.x86_64 : Development support for Universally Unique Identifier library
  • libpcap-devel.x86_64 : Libraries and header files for the libpcap library
  • libpcap.x86_64 : A system-independent interface for user-level packet capture
  • Cmake 2.8 or higher : A cross-platform build system generator
  • In order to install Dynamips we require version 2.8 of cmake. The default version of cmake installed via yum is 2.6.4:

    We are going to have to download, compile and install cmake from source, the latest version of cmake is 3.0.2.

    First we need to make sure that ncurses-devel is installed:

    Sample output:

    If it is not installed, install it via yum:

    Change directory to the /usr/local directory:

    Download the source files for cmake 3.0.2:

    Now uncompress the file, compile and install it:

    Confirm that cmake has been correctly installed:

    Sample output:

    Now we can download, complile and install Dynamips from the source package:

    Once we have installed Dynamips, we can test it using the following command:

    Sample output:

    Install dependencies for IOU

    To install iniparser, download and compile it using the following commands:

    To fix the missing library link for 64 bit systems install openssl and then create a system link to libcrypto.so.4:

    Install GNS3 server

    Now that we have installed all the required dependencies for GNS3, we can download, compile and install gns3-server v1.0-beta3:

    Install IOU

    Download, compile and install IOU:

    Next we need to creat the license file for IOU using the following script:

    Add the following to the CiscoKeyGen file:

    Make the file executable:

    Execute the CiscoKeyGen script to generate the license file for IOU:

    Sample output:

    Add the license info to ~/.iourc:

    Disable the phone home feature:

    Upload IOS and IOU images to the Server

    Browse to the IOU upload page on the remote server:

    http://X.X.X.X:8000/upload

    Upload Form for GNS3 server 1.0beta4.dev1 - Mozilla Firefox_019

    Click on browse and select the IOU or IOS image you want to upload. Click apply and the image will be uploaded to the server. Make a note of the path of the uploaded files as you will use this later when setting up the client.

    Configure GNS3 GUI to connect to the remote GNS3 server
    Download the Client

    For Windows or Mac download the all-in-one installation files from the new GNS3 website:
    http://new.gns3.net/

    If you are running any of the Debian based distributions you can follow the steps ton install the GNS3 GUI in my previous post GNS3 Beta Install on Ubuntu 14.04 LTS.

    Make sure that you install the same version of the client as is installed on the server or you will get errors when trying to run the GUI.

    Create GNS3 Directory

    Create a GNS3 directory on your PC where you will store your GNS3 projects. For Linux do the following as the super user:

    Client Setup

    Now that the client is installed on your local machine it needs to be configured to connect to the GNS3 server rather than to the local server on your machine.

    General Preferences

    1, Select General from the list on the right hand side of the preferences menu.
    2. Set the path to your projects directory that you created earlier.
    3. Set the path to the images directory on the remote server, this is /root/images.
    4. Make sure the temporary directory is set to be /tmp.
    5. Click apply.

    Preferences_013

    GNS Server Preferences

    1. Select GNS3 Server from the list on the right hand side of the preferences menu.
    2. Select the remote servers tab.
    3. Type in the IP of the Server.
    4. Make sure that the port is set to TCP 8000
    5. Click Add.
    6. Click apply.

    Preferences_014

    Once you click Apply you will get the local server error, click ok as this is normal.

    Dynamips Preferences
    General Dynamips settings

    Now we need to configure Dynamips so that it will be run from the remote server and not our local machine.

    1. Select Dynamips from the menu on the left hand side.
    2. Select the General Settings tab.
    3. Configure the path to Dynamips to be /usr/local/bin/dynamips, This is the path on the remote Sevrer.
    4. Make sure the console port range is TCP 2001 to 2500.
    5. make sure the Auxilary console port range is TCP 2501 to 3000.

    Preferences_022

    Dynamips Server Settings

    1. Select the Server Settings tab.
    2. Untick the “Use local sevrer” check box.
    3. Confirm the IP for the remote server is correct.
    4. Click Apply.

    Preferences_023

    IOS Routers Settings

    1. Select the IOS Routers menu from the left hand side.
    2. Copy the server image path from the table above and paste it into the IOS path.
    3. Select the relevant platform from the drop down menu.
    4. If applicable, select the chassis from the drop down menu.
    5. Set the RAM, to the value specified in the table above, for the image.
    6. Click save.
    7. Repeat for each image you want to use.

    Preferences_024

    IOS on UNIX Settings
    General Settings

    Create an iourc.txt file on you local machine that has the same information as the iourc.txt file you created on the server.

    1. Browse to the path of your iourc.txt file
    2. Click Apply.

    Preferences_029

    Server settings

    1. Untick the “Use local server” checkbox. This only applies Windows and Mac users.
    2. Ensure the remote server IP and port is correct.
    3. Click Apply.

    Preferences_025

    Advanced Settings

    1. Ensure that the console port range is TCP 4001 to 4500
    2. Ensure that the Auxiliary console port range is UDP 30001 to 35000

    Preferences_026

    IOU Devices
    IOU Image Settings

    1. Copy and paste the path from teh table above to the IOU path.
    2. Click Save.
    3. Repeat for each of the images you want to use.
    4. Click Apply.

    Preferences_028

    Start Playing

    That’s it, everything should now be good to go to start creating labs on GNS3 using either Dynamips or IOU as the emulator.

    Just drag and drop Routers and IOU devices into the work space and run as if it was your normal GNS3 client:

    Junos test.gns3- — GNS3_012

    Refrences:

    http://toomuchdata.com/2014/02/16/how-to-install-python-on-centos/
    https://github.com/jackywei/HOW-TO-BUILD-HHVM-WiKi/wiki/Build-&-Install-CMake-2.8.10.2-in-CentOS6.3
    https://github.com/GNS3/dynamips
    http://unix.stackexchange.com/questions/108346/yum-installs-an-old-version-of-cmake
    http://forum.gns3.net/post28850.html#p28850
    http://forum.gns3.net/topic9508.html

    FacebookTwitterGoogle+Share

    22 thoughts on “GNS3 and IOU remote server install on Centos 6.5”

      1. Thanks, glad you like it 😉

        Was a bit of a learning curve using Centos rather than Ubuntu, but was great fun to give it a try.

    1. Yeah, it is explanatory,
      one of the package, openssl i686, is not available in the repository, and need to be replace with the latest version.
      and one more thing , can you put the printing version of your posts so we can have access to them anywhere.
      Thanks

    2. Many Thanks to you ! This was really helpful to install GNS3 1.2.1 on CentOS 7. Require some change but it work !

      As reza said, the most complete guide on this subject.
      Thanks to share !

      Pat

    3. can someone tell me what changes need to be added and how to work around them so I can do this? I hate running linux and follow a tutorial only to get to a part that fails and I have no idea how to keep going.. Thanks

      1. Sorry to hear you are having issues, what exactly is the problem you are having? Where is the install failing and what version of Centos are you running?

    4. Pingback: 九州娛樂城
    5. Thanks for helpful manual!
      Topology will work while the client is running, am I right?
      If there any way to get the GNS3-server to work as daemon so I can run it on remote side once and connect by client only for topology changes while it work in background?

    6. I seem to be having an issue with running iou, this is the error I get:
      [Errno 2] No such file or directory: ‘/root/GNS3/images/i86bi_linux_l2-ipbasek9-ms.may8-2013-team_track’: 32-bit binary support is probably not installed

      1. because I came across the same error, and this is an excellent tutorial:
        to fix this, do:
        yum install openssl-devel.i686
        and relink the lib:
        ln -s /usr/lib/libcrypto.so.10 /usr/lib/libcrypto.so.4
        worked for me using CenOS 6.6

    7. This document might be able to help some others with some questions I’ve seen here. The document got me running IOU in a “Cloud” mode. I set up a CentOS 7.X gns3server on a Virtual Machine, that is where I have the gns3server running all the time. And then I use my Windows computer to access all of my topologies wherever I am just by using the GNS3 client.

      The document is here https://community.gns3.com/community/connect/community-blog/blog/2015/01/27/gns3-12x-in-the-cloud-using-centos-7x

      Hope that is helpful for others.

    8. Hi Jonathan, good guide, but it isnt working for me, I followed your instructions one by one and when i get to open the IP:8000/upload nothing really happens, the server isnt even listening on port 8000.
      Thanks

    9. Gualter, you need to actually fire up the server with ¨gns3server¨

      Brilliant guide…10 minutes end to end.

    10. Get this error on my CentOS 7 install :/

      [root@localhost src]# python3.3 ez_setup.py
      Extracting in /tmp/tmpz08po2
      Traceback (most recent call last):
      File “ez_setup.py”, line 391, in
      sys.exit(main())
      File “ez_setup.py”, line 388, in main
      return _install(archive, _build_install_args(options))
      File “ez_setup.py”, line 50, in _install
      with archive_context(archive_filename):
      File “/usr/local/lib/python3.3/contextlib.py”, line 48, in __enter__
      return next(self.gen)
      File “ez_setup.py”, line 102, in archive_context
      archive.extractall()
      File “/usr/local/lib/python3.3/zipfile.py”, line 1234, in extractall
      self.extract(zipinfo, path, pwd)
      File “/usr/local/lib/python3.3/zipfile.py”, line 1222, in extract
      return self._extract_member(member, path, pwd)
      File “/usr/local/lib/python3.3/zipfile.py”, line 1284, in _extract_member
      with self.open(member, pwd=pwd) as source, \
      File “/usr/local/lib/python3.3/zipfile.py”, line 1204, in open
      close_fileobj=not self._filePassed)
      File “/usr/local/lib/python3.3/zipfile.py”, line 649, in __init__
      self._decompressor = _get_decompressor(self._compress_type)
      File “/usr/local/lib/python3.3/zipfile.py”, line 612, in _get_decompressor
      return zlib.decompressobj(-15)
      AttributeError: ‘NoneType’ object has no attribute ‘decompressobj’

    11. I managed to get gns3 working under Centos7. However, once i did system update yum update IOU devices dont start as they had before.

      Does anyone have this kind of issue.?

    12. Thank you very much. It looks like an appropriate version of cmake is now available in the repositories, so instead of compiling cmake one can now simply:
      yum update cmake || yum install cmake

    13. Is there a lighter version? I need to install on Centos6 running in VMware for my students to follow.

    Leave a Reply to Alex Cancel reply