Tag Archives: dynagen

Creating a Cisco Lab with Dynamips/Dynagen on Ubuntu

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 thepacketstream.com and Darren from mellowd.co.uk, 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 startlab.sh
9. sudo nano startlab.sh

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/Basic.net;;


exit 1;;

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

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

read enterKey;;



10. sudo chmod -R 766 startlab.sh

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!

Share this: