Wednesday, April 8, 2009

GNS3 Configuration Guide - Linux (Fedora 9)

I've been hearing how much better Linux is to Windows from guys across the world so I thought I would install FC9 on my home computer and promptly destroyed Windows XP. What a blessing in disguise! Now I've made the leap of faith I am one happy man although still a little green to the world of Linux.

Let's get to installing GNS3, VPCS, loopback adapter equivalent bridge interfaces etc. I'm going to do this without pictures as for the majority of the case it is exactly the same as the Windows installation. It is just the initial installation and dependencies that are required.

Note to purists: I am a Linux noob so if my terminology is out then I apologise.

Note the use of sudo here. If you haven't set it up then you can log in as root and repeat the command (without the "sudo" prefix).

1. Install PyQt4

Fedora = sudo yum -y install PyQt4

Ubuntu = sudo apt-get install PyQt4

This should install all dependencies needed for GNS3 including SIP.

2. Install tunctl and bridge-utils e.g. sudo yum -y install tunctl bridge-utils

This will now allow you to create bridged interfaces equivalent to Microsoft Loopback Adapters.

3. Download GNS3 from here. I tend to go for the tgz file.

4. Download Dynamips from the same location under the heading Associated Software. I run 32-bit only so I download the Dynamips 0.2.8-RC2 binary for Linux x86 platforms

5. Right-click the downloaded GNS3 file and choose Extract Here. Drag the Dynamips file downloaded in Step 4 to the extracted folder. Now right-click the Dynamips file and select the Permissions tab and ensure the "Allow executing file as program" box is ticked, then click Close.

6. Now double-click the gns3 file and choose Run. Assuming that all dependencies have been installed you should see GNS3 start with the screenshot in Step 3 of my GNS3 Windows guide. Follow the majority of that to set up the images and working directories plus the idlepc value.

So hopefully now you should be able to muck around with GNS3 and do most of what you need to do. However, I had one main issue and that was how do I connect my router to my local machine so that I could run syslog servers, iperf, and other apps like we do using the Loopback Adapter in Windows? Well I have to pay my respects to tuner_x at the Sadikhov IT forums for the guide on how to do this. You must run GNS3 as root in order to achieve this so for example I run:

sudo ./Chris/Desktop/GNS3-0.5-src/gns3

NOTE: If Dynamips doesn't start (you'll probably notice that you cannot connect to a hypervisor on 7200 when dragging a router onto the stage) as root then you need to either clean the working directory as it points to your user account or point the working directory to a new location.

1. If you didn't do this before you need to install tunctl and bridge-utils as outlined in Step 2 of the initial configuration guide above.

2. Now add the following to the script below so each time you switch on your PC the bridge interfaces are created.

sudo vi /etc/rc5.d/S99local

Now insert the following (note that there is no particular naming convention, just what I chose to do) and save:

# Script to create bridge interfaces. Requires tunctl and bridge-utils to be
# installed.
#
# This creates the interfaces. -t names the interface and -u sets the owner of
# of the interface.

/usr/sbin/tunctl -t fed_0 -u Chris
/usr/sbin/tunctl -t fed_1 -u Chris
/usr/sbin/tunctl -t gns3_0 -u Chris
/usr/sbin/tunctl -t gns3_1 -u Chris

# Then bring the interfaces up

/sbin/ifconfig fed_0 up
/sbin/ifconfig fed_1 up
/sbin/ifconfig gns3_0 up
/sbin/ifconfig gns3_1 up

# Now create the bridge interface

/usr/sbin/brctl addbr gns3_br0
/usr/sbin/brctl addbr gns3_br1

# Bring the bridge interfaces up
/sbin/ifconfig gns3_br0 up
/sbin/ifconfig gns3_br1 up

# Add the tap interfaces to the bridge interfaces
/usr/sbin/brctl addif gns3_br0 fed_0
/usr/sbin/brctl addif gns3_br0 gns3_0

/usr/sbin/brctl addif gns3_br1 fed_1
/usr/sbin/brctl addif gns3_br1 gns3_1

# Here is an example of how to assign an IP address to the gns3_br0 interface so one
# can ping from a GNS3 router to the local machine in order to run syslog etc
#
# ifconfig gns3_br0 inet 192.168.2.254 netmask 255.255.255.0 up
#
# I do this manually and not via the script but keep it here for reference only.
# And that's it

Now you could choose to reboot or restart the appropriate services. I tend to restart the services as it is quicker than rebooting.

sudo /etc/rc5.d/S99local restart
sudo /etc/init.d/network restart

Now add an IP address to one of your gns3 bridge interfaces. Here I am using the first:

sudo ifconfig gns3_br0 inet 192.168.2.254 netmask 255.255.255.0 up

NOTE: Do not use the same IP address as your main ISP router otherwise you'll knock out your Internet connection. D'oh! Always learn the hard way don't you Chris? LOL.

Go into GNS3 and drag a cloud, or a customised symbol, onto the stage and right-click and choose Configure. Select the "NIO TAP" tab and type the name of your bridge interface (e.g. gns3_br0) then click Add, Apply, then OK.

Hook your router up to the cloud, start the IOS, console into your router, and put the interface into the same subnet as your bridge interface. Bring the interface up and lo-and-behold you should have connectivity between your PC and your router.

What about multiple hosts? You can still use VPCS as explained in my VPCS Configuration Guide for Windows although there is a slightly different way to run it.

1. Once you have downloaded the file, extract it to your GNS3 folder.

2. Now open the extracted folder and locate the "vpcs" file (NOT vpcs.exe).

3. Right-click the vpcs file and choose the Permissions tab and tick the box next to "Execute".

4. Go to the desktop and right-click and choose Create Launcher.

5. Type = Application in Terminal

6. Name = VPCS

7. Command = the path to the vpcs file located in Step 2.

8. Comment = Virtual PCs

9. Click OK to create the launcher

10. Drag the launcher into the VPCS folder.

When you want to run VPCS just double-click on the created launcher. The configuration works just as it does in Windows.

That's it. FC9 running GNS3 exactly as I had it on Windows.

I hope it helps you Linux noobs to run GNS3.

2 comments:

Anonymous said...

Hai I am using fedora 11, I tried ur ideas in using vpcs and i did everything like u said but nothing seems to work can u help me

ashish.virola said...

I am using ubuntu 9.04, can you help me with the connectivity between the cloud interface and router? I am a noob.