Virtual router instances Juniper vSRX, Juniper vMX and GNS3

Introduction

In order to build Proof of Concept networks to test new features in mixed-vendor networks I have decided to create a setup with some virtual routers that I can test and use together with my existing lab environment.

I am going to implement:

  • Juniper vSRX on ESXi
  • Various Cisco IOS routers trough GNS3 on a Ubuntu VM (on ESXi)
  • Juniper vMX on ESXi

Juniper vSRX on ESXi

I downloaded the "junos-vsrx-12.1X47-D20.7-domestic.ova" file and deployed the OVA (trough the vSphere desktop client) using this and this link.

In order to get make sure the vSRX behaves like a router (packet-mode) a few commands needed to be executed:

root# set system host-name NL-RTD01-VSRX01
root# set system root-authentication plain-text-password
root# set interfaces ge-0/0/0 unit 0 family inet address x.x.x.x/xx
root# delete security
root# set security forwarding-options family mpls mode packet-based
root# set security forwarding-options family iso mode packet-based
root# set security forwarding-options family inet6 mode packet-based

GNS3 on a Ubuntu VM (on ESXi)

I started with installing the Ubuntu Server (ubuntu-14.04.3-server-amd64.iso). Ubuntu server installs itself without the GUI that we need for GNS3 later, so I used this link to install the gui with the commands:

sudo apt-get update
sudo apt-get install ubuntu-desktop

I used this guide install all the dependancies for GNS3 and GNS3 itself.

Once GNS3 was installed I created some extra directories (images, projects, configs, ie, capture, and tmp) as a best practice that I found here.

I copied all my IOS images to the "images" folder and added some routers using this link.

IOU licence generator

There is an option to also use IOU images trough GNS3. In order to do this you need to have an IOU licence which can be created with the script found on this website.

Create a file named "CiscoKeyGen.py" with the following content:

#! /usr/bin/python
print "\n*********************************************************************"
print "Cisco IOU License Generator - Kal 2011, python port of 2006 C version"
import os
import socket
import hashlib
import struct
# get the host id and host name to calculate the hostkey
hostid=os.popen("hostid").read().strip()
hostname = socket.gethostname()
ioukey=int(hostid,16)
for x in hostname:
 ioukey = ioukey + ord(x)
print "hostid=" + hostid +", hostname="+ hostname + ", ioukey=" + hex(ioukey)[2:]
# create the license using md5sum
iouPad1='\x4B\x58\x21\x81\x56\x7B\x0D\xF3\x21\x43\x9B\x7E\xAC\x1D\xE6\x8A'
iouPad2='\x80' + 39*'\0'
md5input=iouPad1 + iouPad2 + struct.pack('!L', ioukey) + iouPad1
iouLicense=hashlib.md5(md5input).hexdigest()[:16]
# add license info to $HOME/.iourc
print "\n*********************************************************************"
print "Create the license file $HOME/.iourc with this command:"
print " echo -e '[license]\\n" + hostname + " = " + iouLicense + ";'" + " | tee $HOME/.iourc "
print "\nThe command adds the following text to $HOME/.iourc:"
print "[license]\n" + hostname + " = " + iouLicense + ";"
# disable phone home feature
print "\n*********************************************************************"
print "Disable the phone home feature with this command:"
print " grep -q -F '127.0.0.1 xml.cisco.com' /etc/hosts || echo '127.0.0.1 xml.cisco.com' | sudo tee -a /etc/hosts"
print "\nThe command adds the following text to /etc/hosts:"
print "127.0.0.1 xml.cisco.com"
print "\n*********************************************************************"

After the script is runned on the machine I got the following output:

ubuntu@NL-RTD01-GNS301:~/Downloads$ ./CiscoKeyGen.py

*********************************************************************
Cisco IOU License Generator - Kal 2011, python port of 2006 C version
hostid=*******, hostname=NL-RTD01-GNS301, ioukey=*******

*********************************************************************
Create the license file $HOME/.iourc with this command:
 echo -e '[license]\nNL-RTD01-GNS301 = *******;' | tee $HOME/.iourc 

The command adds the following text to $HOME/.iourc:
[license]
NL-RTD01-GNS301 = *******;

*********************************************************************
Disable the phone home feature with this command:
 grep -q -F '127.0.0.1 xml.cisco.com' /etc/hosts || echo '127.0.0.1 xml.cisco.com' | sudo tee -a /etc/hosts

The command adds the following text to /etc/hosts:
127.0.0.1 xml.cisco.com

*********************************************************************
ubuntu@NL-RTD01-GNS301:~/Downloads$ 

Juniper vMX on ESXi

For the Juniper vMX I used the file "jinstall-vmx-14.1R1.10-domestic.img" and this link to set it up in ESXi.