gns3 - xxooxxooxx/xxooxxooxx.github.io GitHub Wiki

install

  • ubuntu 20.04
add-apt-repository ppa:gns3/ppa
apt update
apt install gns3-server gns3-gui
apt install tigervnc-viewer
apt install konsole 

#IOU Support
dpkg --add-architecture i386
apt update
apt install gns3-iou

curl -sSLf https://get.docker.com | sh
apt install -qy python3 python3-pip
pip3 install --upgrade pip
pip3 install docker-compose
for i in ubridge libvirt kvm wireshark docker; do
  sudo usermod -aG $i $(whoami)
done

#check
virt-host-validate

template

  • debian11
vi /etc/default/grub
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX="console=tty0 console=ttyS0,115200 earlyprintk=ttyS0,115200 consoleblank=0 net.ifnames=0"
GRUB_TERMINAL="console serial"
GRUB_SERIAL_COMMAND="serial --speed=115200"
apt install wget curl net-tools hping3 iperf3 tcpdump socat dnsutils bridge-utils ethtool frr bird2 mtr vnstat bmon

Remote Server (Debian10)

apt update
apt install locales
dpkg-reconfigure locales

apt install -y python3-pip apt-transport-https ca-certificates curl gnupg2 \
qemu qemu-kvm qemu-utils libvirt-clients libvirt-daemon-system virtinst libguestfs-tools bridge-utils

apt install dynamips
pip3 install gns3-server
curl -sSLf https://get.docker.com | sh
useradd -s /usr/sbin/nologin -m gns3
usermod -aG libvirt gns3
usermod -aG kvm gns3
usermod -aG docker gns3
  • IOU Support
dpkg --add-architecture i386
apt update
apt install gcc-8-base:i386 lib32z1 libc6:i386 libc6-i386 libgcc1:i386 libidn2-0:i386 libssl1.1:i386 libunistring2:i386
ln -s /lib/i386-linux-gnu/libcrypto.so.1.1 /usr/lib/libcrypto.so.4
  • CiscoIOUKeygen3f.py
    md5input=iouPad1 + iouPad2 + struct.pack('!i', ioukey) + iouPad1
md5input=iouPad1 + iouPad2 + struct.pack('!L', ioukey) + iouPad1
  • ubridge
groupadd -r ubridge
usermod -aG ubridge gns3
apt install build-essential libpcap-dev git 
git clone https://github.com/GNS3/ubridge
cd ubridge
make
make install
chmod 754 /usr/local/bin/ubridge
chown root:ubridge /usr/local/bin/ubridge
setcap cap_net_admin,cap_net_raw=ep /usr/local/bin/ubridge
  • vpsc
git clone https://github.com/GNS3/vpcs
cd vpcs/src
./mk.sh
mv vpsc /usr/local/bin/
  • /lib/systemd/system/gns3.service
[Unit]
Description=GNS3 server
Wants=network-online.target
After=network.target network-online.target

[Service]
User=gns3
Group=gns3
ExecStart=/usr/local/bin/gns3server

[Install]
WantedBy=multi-user.target
  • /home/gns3/.config/GNS3/2.2/gns3_server.conf
[Server]
; IP where the server listen for connections
host = 0.0.0.0
; HTTP port for controlling the servers
port = 3080

; Option to enable SSL encryption
ssl = False
certfile=/home/gns3/.config/GNS3/ssl/server.cert
certkey=/home/gns3/.config/GNS3/ssl/server.key

; Path where devices images are stored
images_path = /home/gns3/GNS3/images

; Path where user projects are stored
projects_path = /home/gns3/GNS3/projects

; Path where user appliances are stored
appliances_path = /home/gns3/GNS3/appliances

; Path where custom device symbols are stored
symbols_path = /home/gns3/GNS3/symbols

; Option to automatically send crash reports to the GNS3 team
report_errors = True

; First console port of the range allocated to devices
console_start_port_range = 5000
; Last console port of the range allocated to devices
console_end_port_range = 10000

; First VNC console port of the range allocated to devices.
; The value MUST BE >= 5900 and <= 65535
vnc_console_start_port_range = 5900
; Last VNC console port of the range allocated to devices
; The value MUST BE >= 5900 and <= 65535
vnc_console_end_port_range = 10000

; First port of the range allocated for inter-device communication. Two ports are allocated per link.
udp_start_port_range = 20000
; Last port of the range allocated for inter-device communication. Two ports are allocated per link
udp_end_port_range = 30000

; uBridge executable location, default: search in PATH
;ubridge_path = ubridge

; Option to enable HTTP authentication.
auth = False
; Username for HTTP authentication.
user = gns3
; Password for HTTP authentication.
password = gns3

; Only allow these interfaces to be used by GNS3, for the Cloud node for example (Linux/OSX only)
; Do not forget to allow virbr0 in order for the NAT node to work
; allowed_interfaces = eth0,eth1,virbr0

; Specify the NAT interface to be used by the NAT node
; Default is virbr0 on Linux (requires libvirt) and vmnet8 for other platforms (requires VMware)
; default_nat_interface = vmnet10

[VPCS]
; VPCS executable location, default: search in PATH
;vpcs_path = vpcs

[Dynamips]
; Enable auxiliary console ports on IOS routers
allocate_aux_console_ports = False
mmap_support = True
; Dynamips executable path, default: search in PATH
;dynamips_path = dynamips
sparse_memory_support = True
ghost_ios_support = True

[IOU]
; Path of your .iourc file. If not provided, the file is searched in $HOME/.iourc
iourc_path = /home/gns3/.iourc
; Validate if the iourc license file is correct. If you turn this off and your licence is invalid IOU will not start and no errors will be shown.
license_check = True

[Qemu]
; !! Remember to add the gns3 user to the KVM group, otherwise you will not have read / write permissions to /dev/kvm !! (Linux only, has priority over enable_hardware_acceleration)
enable_kvm = True
; Require KVM to be installed in order to start VMs (Linux only, has priority over require_hardware_acceleration)
require_kvm = True
; Enable hardware acceleration (all platforms)
enable_hardware_acceleration = True
; Require hardware acceleration in order to start VMs (all platforms)
require_hardware_acceleration = False
systemctl enable gns3.service
systemctl start gns3.service
systemctl status gns3.service