Creating a Cisco Lab with Dynamips/Dynagen on Ubuntu

Reading Time: 2 minutes

If you’re like myself who doesn’t have the space, time, money or power in your own home, having a large scale network lab isn’t really possible. So network in a box would be ideal. Having worked with a couple of pretty cool and smart engineers PacketJedi from and Darren from, they suggested that I should look into creating a Virtual Cisco Lab with a server. Originally, I was using GNS3 (an awesome tool for network engineers, whether a noob or a season vet) to emulate Cisco IOS routers. The issue I found was when I wanted to have large scale topologies, my laptop wasn’t able to cope and the heat was amazing (not in the good way!). To get around this, I got went and got myself a dedicated server from UK Dedicated Servers and installed the packages that were being used behind the GNS3 GUI interface.

This is how i got my network in a box created:

You will need be root or a sudo privileged user.

1. sudo apt-get update
2. sudo apt-get upgrade
3. sudo apt-get install dynagen dynamips iptables-persistent
4. sudo nano /etc/iptables/rules.v4

iptables rules for dynamips
-A INPUT -p tcp -m multiport --dports 7200:7201 -j ACCEPT
-A INPUT -p udp -m multiport --dports 7200:7201 -j ACCEPT
-A INPUT -p tcp -m multiport --dports 2100:2199 -j ACCEPT
-A INPUT -p udp -m multiport --dports 2100:2199 -j ACCEPT
-A INPUT -p udp -m udp --dport 10000 -j ACCEPT

6. sudo service iptables-persistent restart
7. cd /usr/sbin/
8. sudo touch
9. sudo nano

Use a script to run dynamips (heavily borrowed from Darren’s blog)

Automated Dynamips Script

function killdyn() {

# This function kills all existing dynamips and dynagen processes

echo “Killing any existing Dynamips processes …”

pkill -5 dynamips

pkill -5 dynagen


function startdyn() {

# This function starts the dynamips hypervisors

echo “Initializing Dynamips Hypervisors …”

#/usr/bin/dynamips.bin -H 7201 > /dev/null 2>&1 &
/usr/bin/dynamips -H 7201 > /dev/null 2>&1 &


function cleanfolder() {

# This functions cleans the working folder out

echo “Clearing out folder”
find -name ‘c7200_*’ -exec rm {} +


while :


echo ” 1. The Basic”

echo -n “Make A Selection: “

read opt

case $opt in
cd /home/kmarquis/working;
/usr/bin/dynagen /home/kmarquis/dynamips/net/;;


exit 1;;

*)echo “$opt is not a valid option”;

echo “Press [enter] key to continue…”;

read enterKey;;



10. sudo chmod -R 766

In your home directory

11. mkdir -p IOS
12. mkdir -p dynamips/net
13. mkdir -p working
14. mkdir -p config

You can now create/copy your .net topologies into the related folder (dynamips/net for my example) then all you would need to do is run the script

Now you will be able to get started with labbing 🙂

Note: You can get Cisco IOS images from the Cisco website, if you have support contract with them. Outside of that I can’t tell you where you can find them, but as ever with the internet if you look hard enough you may get luck!

The following two tabs change content below.

Keeran Marquis

Network Engineer
Keeran Marquis is a Network Engineer. His main goal is to learn everything within the Networking field, pick up a little bit of scripting, be a poor man sysadmin and share whatever he knows! All Posts are his own views, opinions and experiences, no guarantees they will work for you but point you in the right direction 🙂
Share this:

Leave a Comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.