First of all, may I welcome you to my site. My name is Chris and I'm from the UK and work as a Systems Engineer for Cisco. This blog was initially created to post up my subnetting technique but has now got more stuff to do with attaining Cisco certifications. Either way I really hope that the content is sufficent for your needs and I look forward to hearing your feedback. If you find that the content really helps you please feel free to donate using the PayPal link on the right.

To view the index of all my articles please click here.

Vyatta on VM Workstation

Here's the deal. How do you fill your work time looking busy but having a bit of fun? Simple. Look out for emerging technologies and tell your department you want to "innovate" with Product X. So here I am, looking at Vyatta. Bold claims from these guys but is it as good as they say? Well I'm not here to run the mathematical experiments. What I want to know is "Is it easy to use?" and "Can I use it in one of our projects?". It's early days to be answering the latter but I may be able to answer the former over a series of posts.

What I want to do is set up a dummy network in VM Workstation to simulate a square with a Vyatta router at each corner like so:

Vyatta Instance 1 --> Vyatta Instance 2
Vyatta Instance 1 --> Vyatta Instance 3
Vyatta Instance 2 --> Vyatta Instance 4
Vyatta Instance 3 --> Vyatta Instance 4

I really am a noob to VM Workstation but after a little playing around I got it to work.

Taking the above connections I used the Custom Network Connections for each (I believe VMNet0 and VMNet1 are reserved):

Vyatta Instance 1 --> Vyatta Instance 2 = VMNet2
Vyatta Instance 1 --> Vyatta Instance 3 = VMNet3
Vyatta Instance 2 --> Vyatta Instance 4 = VMNet4
Vyatta Instance 3 --> Vyatta Instance 4 = VMNet5

By default each virtual machine in VM Workstation has one Network Connection set up (usually NAT). Modify this to a custom connection and from the drop-down list choose the appropriate VMNet. To add a new Network Adapter simply click Add in the Virtual Machine Settings and choose Network Adapter then select Custom and choose the desired VMNet connection. For my example above I modified the first Network Adapter on Vyatta Instance 1 to VMNet2 and created a new Network Adapter in VMNet3. I done similar on the other three instances and lo-and-behold everything was connected.

Here's my basic settings:

Vyatta Instance 1:

set system host-name Vyatta-Instance-1
set interfaces ethernet eth0 description Link_To_Vyatta_Instance_2
set interfaces ethernet eth0 address
set interfaces ethernet eth1 description Link_To_Vyatta_Instance_3
set interfaces ethernet eth1 address

Vyatta Instance 2:

set system host-name Vyatta-Instance-2
set interfaces ethernet eth0 description Link_To_Vyatta_Instance_1
set interfaces ethernet eth0 address
set interfaces ethernet eth1 description Link_To_Vyatta_Instance_4
set interfaces ethernet eth1 address

Vyatta Instance 3:

set system host-name Vyatta-Instance-3
set interfaces ethernet eth0 description Link_To_Vyatta_Instance_1
set interfaces ethernet eth0 address
set interfaces ethernet eth1 description Link_To_Vyatta_Instance_4
set interfaces ethernet eth1 address

Vyatta Instance 4:

set system host-name Vyatta-Instance-4
set interfaces ethernet eth0 description Link_To_Vyatta_Instance_2
set interfaces ethernet eth0 address
set interfaces ethernet eth1 description Link_To_Vyatta_Instance_3
set interfaces ethernet eth1 address

This is probably more for my reference but to undo anything use the "delete" command. For example if I accidentally put an IP address under eth0 for example I could use the following;

delete interfaces ethernet eth0 address

Now I've decided to run RIP just to see how easy it is.

Vyatta Instance 1

set protocols rip network
set protocols rip network

Vyatta Instance 2

set protocols rip network
set protocols rip network

Vyatta Instance 3

set protocols rip network
set protocols rip network

Vyatta Instance 4

set protocols rip network
set protocols rip network

To shut down an interface:

set interfaces ethernet eth0 disable

To bring it back up:

delete interfaces ethernet eth0 disable

It all seems easy so far.

Posted byChris Bloomfield at 11:23 1 comments  

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 netmask 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 netmask 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.


Posted byChris Bloomfield at 13:36 3 comments  

GNS3 0.5 released

The GNS3 0.5 release is available. It includes bugs fixes and new features:

* Possibility to load .net files of other users (provided that there is a registered IOS image with the same model as the one used in the NET file).
* New detailed tooltips for nodes.
* A minimalist wizard raised when the configuration file is empty.
* A button to insert a picture on the scene.
* Decorative node support for creating network diagrams.
* Ghostios is now supported on remote hypervisors.
* A symbol manager with library support (a howto to create a symbol library will be released).
* Z values can be changed for annotations and inserted pictures.
* Automatic load-balancing on external hypervisors (choose multiple external hypervisors when recording an IOS image).
* New option to bind the hypervisor manager with an address/name other than 'localhost': useful for labs which use local and remote hypervisors.
* The DMG package includes two Dynamips binaries, one for Tiger and one for Leopard

You will notice that on opening GNS3 for the first time you will now be confronted with a setup wizard which takes you through the first few steps of my main guide.

Clicking on Step 1 will bring you to the following screen:

Clicking on Step 2 will bring you to the following screen:

Posted byChris Bloomfield at 14:14 0 comments  

Adding Hosts/PCs to GNS3 - VPCS Configuration Guide

For some time now I have been asked how I simulate hosts in GNS3 and my stock answer was to configure a router as a host by issuing the "no ip routing" command and setting a default gateway with the "ip default-gateway" command. You would also need to assign an IP address to the interface connected to the router performing routing, or a switch which in turn is connected to a router doing the routing. It worked a treat but had one major flaw, namely, CPU overhead.

I know that a lot of people tried putting loopback adapters at either end of a topology but when pinging between multiple loopback adapters the traffic stayed on the PC and would not pass through the routers configured in GNS3.

By jove though, a clever man, mirnshi I believe his name is, has devised a great little program that can simluate up to 9 hosts within GNS3. It is called VPCS and can be downloaded from here.

In my traditional style I shall run you through a step-by-step guide of configuring VPCS and show you an example of how I set up a basic topology to test the functionality.

1. Download the zip file from here and extract it to wherever desired.

2. Go to the GNS3/Dynamips directory and rename the cygwin1.dll file to cygwin1.dll.old and copy the cygwin1.dll file in the VPCS directory to this directory.

3. Open up a command prompt and change the directory to where you have the VPCS folder. If you are unsure of how to do this, go to Start-->Run and type in "cmd" (without the quotes) and hit Enter. Now using Windows Explorer go to the folder where VPCS is located and copy the location from the address bar. If you cannot see the address bar go to View-->Toolbars and click Address Bar. Now go back to the command prompt you opened and type "cd" (again, without the quotes) followed by the path to your VPCS folder. For example, I may have cd C:\Program Files\GNS3\vpcs-0.14g

An even easier way to do this in Windows XP is to download the "Open Command Prompt Here" Power Toy from here.
Once installed right-click the VPCS folder and select Open Command Prompt Here and a command prompt window will open in that directory. Windows Vista includes this ability right out of the box, it's just not immediately obvious, because it's hidden behind a shortcut key. To activate this, just hold down the Shift key when you right-click on a folder, and you should see the Open Command Window Here menu item.

4. To run VPCS type vpcs.exe from the command line and you ought to see a screenshot similar to below:

5. Type in the show command to view a printout of your virtual PCs.

6. To view the help type ?

I don't know who Mike Muuss is by the way, lol.

7. To change the IP address and default gateway to better suit your needs the following syntax prevails:

ip [ip address of PC] [ip address of default gateway] [mask in number of bits]

For example:

8. To change the virtual PC you are configuring simply enter the number of the virtual PC you wish to configure.

9. Keep adding as many PCs as you need and configure the IP addresses as desired (limited to 9).

10. Make a note of the LPORT and RPORT settings (from the show command) for each PC you have configured as you will need them for later.

Now the proof of the pudding is in the eating so what I'm going to do is connect a very simple network in GNS3 (I know this seems obvious but KEEP VPCS RUNNING):

NOTE: Each PC is a separate cloud.

11. Right-click on each cloud, choose Configure and then select the NIO UDP tab. You should now see a screen similar to the following:

12. Referring to step 10 where you noted the LPORT and RPORT values for each PC you need to add the RPORT value to the Local Port field in GNS3, the IP address in the Remote Host field in GNS3, and finally the LPORT value in the Remote Port field in GNS3. Once you have finished this ensure that you click on the Add button and select Apply, then OK. For example if my LPORT value was 20000 and my RPORT value 30000 then I would fill it out thus:

13. Now connect your network in GNS3 end-to-end and assign IP addresses as apt to the routers. Remember to either run a routing protcol between the two routers or use static or default routes. For my purpose I used default routes on each router pointing to the other router.

For example in my IP addressing scheme I have:

PC1 to R1 Fa0/0 = and respectively
R1 Fa0/1 to R2 Fa0/1 = and respectively
R2 Fa0/0 to PC2 = and respectively

My default routes are:

R1: ip route
R2: ip route

My network looks like this now:

14. Go back to VPCS. Here I have tested for end-to-end connectivity by pinging from PC1 to PC2:

"So what?" I hear you cry. I know this doesn't prove whether the traffic passes over the GNS3 routers. That is where we use the tracert command in VPCS. Check it out:

Would you look at that! Hop 2 is the Fa0/1 interface of R2. Proof that the packets traverse the routers.

I must say that this is a major breakthrough for me and hopefully for others and will save a lot of time and CPU resources.



Posted byChris Bloomfield at 11:09 36 comments  

Complex Route Summarization

I've already posted about route summarization but I found this interesting technique for calculating complex route summaries at http://www.sadikhov.com/forum from member MarkinManchester. Thanks Mark!

Sometimes you are asked to filter a complex set of routes using as few lines as possible. Here we will examine a way to calculate the subnet and wildcard for such a scenario. With some practice, you should be able to calculate any set in 5 minutes or less. It is also recommend to test your results in a lab setting, using loopbacks and distribute-lists.

For example, say we are asked to filter the following routes using a one-line filter:

First, make a table as shown:

Then, enter the decimal digits from the first octet in the left-hand column. Convert each number to binary. You can use Windows Calculator set to Scientific Mode to do the conversion if you so wish.

In the binary area, first check the octet then column by column, apply the following rules:

  1. If the entire octet is 0, the subnet is 0 for that octet, and the mask is 255 for that octet.
  2. Else If the column is all 0’s, the subnet is 0, and the mask is 0
  3. Else If the column is all 1’s, the subnet is 1, and the mask is 0
  4. Else the column is a mixture of 1’s and 0’s, the subnet is 0, and the mask is 1.

For the first octet the table should look like:

Convert the binary Subnet and Wildcard Mask to decimal to complete the table:

So far, our filter looks like: 100.xxx.xxx.xxx 27.xxx.xxx.xxx

For the second octet the completed table should look like:

Our summary address now looks like: 100.0.xxx.xxx 27.55.xxx.xxx

For the third octet the completed table should look like:

Our summary address now looks like: 100.0.33.xxx 27.55.94.xxx

Now the last octet for all addresses is zero so the subnet address must be 0 in the last octet and the wilcard mask must be 255 in the last octet.

Our completed summary address looks like:

Apply this technique as you wish, for example:

access-list 1 permit

This is a great technique for reducing something complex into easier computation so hats off to Mark again for turning me on to this.

Posted byChris Bloomfield at 19:47 5 comments  

GNS3 PEMU Configuration Guide - latest version 0.4.1

The latest version of GNS3 (0.4.1) offers:

* A dynamic mode (no design/emulation modes)
* A new .net save/load.
* c1700 and WICS support.
* PIX emulation.
* Dynamips's ATM bridge.
* Capture feature for links from the GUI.
* IDLE PC calculation from the GUI.
* GUI improvements (save the window state when closing GNS3 ...)
* Annotation feature.
* Project feature (you can keep router configs, nvram ...)
* NULL NIO support.
* PDF export.
* New languages.

For those that need to set up GNS3 for the first time, I have amended my GNS3 Configuration Guide based on version 0.3.x so that users of 0.4.x can understand and follow it too.

Anyway, back to the stand-out new feature - PIX emulation, yay! My only minor gripe is that PIX is now EOL but as there are loads of PIX firewalls out there I'm not complaining.

Hopefully you can tell but I'm not the kind of guy to leave people in the lurch and chuck them in the deep end so here is a step-by-step guide on how to configure a PIX firewall in the latest version of GNS3.

1. Download and install the latest version of GNS3 from http://www.gns3.net/download and ensure that you install the PEMU wrapper (this is done by default when installing GNS3).

2. Open up GNS3 and you will see a screen like the following (notice how it has changed from the old version, especially that you run the IOS and console to devices from the one screen).

3. Now go to Edit on the menu bar and select Preferences. You will now see the screen below:

4. Now select the PEMU option from the left-hand menu to be presented with a screen like the one below. All you need to do now is point to the PIX Image where it says "PIX Image". Once you have done that click on Apply, then Close.

5. Now drag and drop a PIX firewall from the left-hand menu of the main screen onto the centre stage. Right-click on the firewall and select Start then Console:

6. You should now see your Console session to your PIX firewall as below:

Posted byChris Bloomfield at 11:26 4 comments