7
Tutorial: Building GNS3 Multiuser Environment By: Jaakko Rautanen v1.1 This tutorial show you how to build GNS3 multiuser environment. Following GNS3 features are tested in this setup: Users can create, save and open their own labs regardless other users Projects can be used Packet Capture can be used with WireShark In this tutorial we don't use remote hypervisor functionality because of it's limitations. Projects cannot be used with remote hypervisors. This is too big problem so I decided to implement this other way. Basic idea is to run GNS3 locally on server. Users connect to server via Remote Desktop connection (VNC). GNS3 Server VNC VNC VNC

GNS3 Multiuser Environment Tutorial v1.1

Embed Size (px)

DESCRIPTION

GNS3

Citation preview

Page 1: GNS3 Multiuser Environment Tutorial v1.1

Tutorial: Building GNS3 Multiuser EnvironmentBy: Jaakko Rautanen

v1.1

This tutorial show you how to build GNS3 multiuser environment. Following GNS3 features are tested in this setup:

• Users can create, save and open their own labs regardless other users

• Projects can be used

• Packet Capture can be used with WireShark

In this tutorial we don't use remote hypervisor functionality because of it's limitations. Projects cannot be used with remote hypervisors. This is too big problem so I decided to implement this other way.

Basic idea is to run GNS3 locally on server. Users connect to server via Remote Desktop connection (VNC).

GNS3 Server

VNC

VNC

VNC

Page 2: GNS3 Multiuser Environment Tutorial v1.1

1 Installing LinuxFirst you have to install some operating system. Here we use Ubuntu 8.10 desktop. Well, install operating system ;) In this distro default username is ”user”. If you wan't to use some other username you have to replace ”user” in all commands with username you are using.

• Enable root account:

• System -> Administration -> Users and Groups

2 Installing and configuring VNCserverSecond step is to install VNC server. VNC gives opportunity to connect to the server using VNC viewer. It's remote desktop program like Windows Remote Desktop but it's free.

By default you can connect to one user's desktop at the same time using VNC. In this case multiple users need to connect to their own desktops at the same time.

VNC-server need to be installed and configured. After this you can use VNC-viewer to connect this server and you'll get standard ubuntu login screen. Multiple users can be logged in simultaneuosly to their own desktops.

• Enable Remote Access (XDMCP)• System » Administration » Login Window

• Tab Remote » Style: Same as Local

• Button Configure XDMCP… –> Uncheck (disable) “Honor indirect requests”

• Edit /etc/X11/gdm/gdm.conf

• Find the [xdmcp] section in the file, set: Enable=True• Find:

• And uncomment the RemoteGreeter line

• Install vnc4server and xinetd

# The greeter for xdmcp logins, usually you want a less graphically intensive# greeter here so it's better to leave this with gdmlogin# RemoteGreeter=/usr/lib/gdm/gdmlogin

sudo vi /etc/X11/gdm/gdm.conf

sudo apt-get install vnc4server xinetd

Page 3: GNS3 Multiuser Environment Tutorial v1.1

• Add VNC Service to xinetd

• Add this:

• Restart xinetd

3 Installing GNS3Install GNS3 to the server by following tutorial GNS3-0.5-tutorial.pdf. Tutorial can be found at GNS3 website. Follow steps 1 and 2 in chapter GNS3 Quick Start Guide for Linux Users.

After that steps 1 and 2, copy whole GNS3 directory to the /usr/local and chage it's owner.

You can remove GNS3 directory and downloaded package from user's desktop.

Create laucher on users desktop:

• Right-Click on users desktop -> select Create Launcher

• Name: GNS3

• browse and select gns3 file in GNS3-0.6-src directory

4 Install wireshark• Open Package Manager (System -> Administration -> Synaptic

package manager)

• Search using keyword wireshark

• Select wireshark

service Xvnc {type = UNLISTEDdisable = nosocket_type = streamprotocol = tcpwait = yesuser = nobodyserver = /usr/bin/Xvncserver_args = -inetd :1 -query localhost -geometry 1024x768 -depth 16 -once -

fp /usr/share/fonts/X11/misc -DisconnectClients=0 -NeverShared passwordF ile=/root/.vncpasswd -extension XFIXES -SecurityTypes none

port = 5901}

sudo /etc/init.d/xinetd stopsudo killall Xvncsudo /etc/init.d/xinetd start

sudo vi /etc/xinetd.d/Xvnc (probably creates a new file)

sudo cp /home/user/Desktop/GNS3-0.6-src/ /usr/local/ -R sudo chown root /usr/local/GNS3-0.6-src/ -R

Page 4: GNS3 Multiuser Environment Tutorial v1.1

• Mark for installation

• Press mark and Install with apply button

5 Adding UsersBecause of multiple dynamips processes running on the same server at the same time you have to modify some GNS3 settings. You have to ensure that following things are not overlapping between users:

• Hypervisor ports

• UPD ports

• Ports for Console connections

Following settings have to be equal for all users:

• IOS image directory

• dynamips directory

• ...

Page 5: GNS3 Multiuser Environment Tutorial v1.1

Configuring first user's settingsCreate new textfiles to users home directory. Paste following Scripts into files:new_GNS3_user.sh

# This script adds new GNS3 user to the system. User specific settings and directorys are created.

##### Asking New username and other user specific info:

echo 'Please type new username:'

read UserName

echo 'Please type hypervisor base port:'

read HV_port

echo 'Please type hypervisor base UDP port:'

read HV_base_UDP

echo 'Please type hypervisor base Console:'

read HV_base_console

# Creating linux account

useradd $UserName

passwd $UserName

# Creating user home directory

mkdir /home/$UserName/

chown $UserName /home/$UserName/

# Creating project directory

mkdir /home/$UserName/GNS3_labs/

chown $UserName /home/$UserName/GNS3_labs

# Creating Dynamips Working Directory

mkdir /home/$UserName/GNS3_labs/.dynamips_wd

chown $UserName /home/$UserName/GNS3_labs/.dynamips_wd

# Creating directory for GNS3 Configuration file

mkdir /home/$UserName/.gns3

chown $UserName /home/$UserName/.gns3

touch /home/$UserName/.gns3/gns3.ini

# Creating Directory for Capturefiles

mkdir /home/$UserName/GNS3_labs/.capture_files

chown $UserName /home/$UserName/GNS3_labs/.capture_files

# Copying Laucher to the Desktop

mkdir /home/$UserName/Desktop

chown $UserName /home/$UserName/Desktop

cp /home/user/Desktop/GNS3.desktop /home/$UserName/Desktop/GNS3.desktop

chown $UserName /home/$UserName/Desktop/GNS3.desktop

###### Creating gns3.ini file #######

./new_GNS3_ini.sh $HV_port $HV_base_UDP $HV_base_console $UserName >> /home/$UserName/.gns3/gns3.ini

# Correct rights to gns3.ini

chown $UserName /home/$UserName/.gns3/gns3.ini

Page 6: GNS3 Multiuser Environment Tutorial v1.1

new_GNS3_ini.sh

# This script creates gns3.ini file content

### HV_port=$1 HV_base_UDP=$2 HV_base_console=$3 UserName=$4

###### Creating gns3.ini file #######echo "[GNS3]"echo "project_directory=/home/$UserName/GNS3_labs"echo "ios_directory=/usr/local/GNS3-0.6-src/images"

echo "[Dynamips]"echo "hypervisor_path=/usr/local/GNS3-0.6-src/dynamips-0.2.8-RC2-x86.bin"echo "hypervisor_port=$HV_port"echo "hypervisor_baseUDP=$HV_base_UDP"echo "hypervisor_baseConsole=$HV_base_console"echo "hypervisor_udp_incrementation=100"echo "hypervisor_working_directory=/home/$UserName/GNS3_labs/.dynamips_wd"

echo "[IOS.images]"echo "4\filename=/usr/local/GNS3-0.6-src/images/c7200-a3jk9s-mz.124-21a.bin" echo "4\chassis=7200"echo "4\platform=c7200"echo "4\hypervisors=" echo "4\default_ram=256"echo "4\idlepc=0x60659264"echo "4\default=true"

echo "[Capture]"echo "working_directory=/home/$UserName/GNS3_labs/.capture_files"

One IOS is added here. You should replace this with your IOS image and place your image to this folder.

• Change permissions of script files to executable

Page 7: GNS3 Multiuser Environment Tutorial v1.1

• You have to manually make text file where port numbers are allocated.

• When you want to add new user run new_gns3_user.sh as root

• Try to login and greate lab! (Connect VNC session to port 5901)

• You may have to change session settings when logging in VNC first time. Select gnome session from settings menu in standard ubuntun login screen.

6 Impovements in the future• Script for adding new IOS image to all users after installation

• Enhanced new_gns3_user.sh sricpt witch keep table of portnumbers for all users and automatically allocates ports for new user.

User Hypervisor base port UDP NIO base port BaseConsole

------- -------------------- ---------------- -----------

test1 7210 11000 2000

test2 7220 12000 2100

test3 7230 13000 2200