Четверг, 15.04.2021 08:00

Установка GNS3 в Debian 10 Buster

Установка GNS3 в Debian 10 Buster

В предыдущих статьях мы рассматривали установку уже готовых образов GNS3 на виртуальные машины Hyper-V и VMWare. Но это не единственный способ установки GNS3, вы можете установить его на уже существующий физический сервер.

Сегодня мы рассмотрим установку GNS3 на операционную систему Debian 10, установленную в виртуальной машине Hyper-V в Windows 10, но вы можете устанавливать GNS3 на физический сервер.

Далее я подразумеваю, что у вас уже установлен Hyper-V на ПК с Windows 10.

 

Создание виртуальной машины

Создадим новую. Виртуальную машину и выделим ей не менее 4 Gb памяти установив использование динамической памяти.

Назовите виртуальную машину GNS3

Запустите виртуальную машину и установите на нее Debian 10.

Включение вложенной виртуализации

Так как в работе GNS3 использует вложенную виртуализацию проверим что она активирована.

Выключите виртуальную машину.

Откройте PowerShell от имени администратора и введите:

Set-VMProcessor -VMName GNS3 -ExposeVirtualizationExtensions $true

Запустим виртуальную машину и в консоль введем

egrep --color -i "svm|vmx" /proc/cpuinfo

flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology cpuid pni pclmulqdq vmx ssse3 cx16 pcid sse4_1 sse4_2 movbe popcnt aes xsave rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single pti ssbd ibrs ibpb stibp tpr_shadow vnmi ept vpid ept_ad fsgsbase smep erms invpcid rdseed smap clflushopt xsaveopt xsavec xgetbv1 xsaves flush_l1d arch_capabilities

В результате красным цветом будет выделено VMX – на процессорах Intel или SVM на процессорах AMD.

Это проверка показывает, что мы можем запустить гипервизор внутри нашей виртуальной машины.

Установка необходимых пакетов

Добавим nonfree репозиторий в apt

nano /etc/apt/sources.list

Изменим строку:

deb http://deb.debian.org/debian/ buster main

на строку

deb http://deb.debian.org/debian/ buster main contrib non-free

Обновим apt

apt update

Установим необходимые пакеты

sudo apt install -y python3-pip python3-pyqt5 python3-pyqt5.qtsvg python3-pyqt5.qtwebsockets qemu qemu-kvm qemu-utils libvirt-clients libvirt-daemon-system virtinst wireshark xtightvncviewer apt-transport-https ca-certificates curl gnupg2 software-properties-common dynamips mc

На запрос при установке Wireshark-common ответим No

Установка VPCS

Для работы с GNS3 нам потребуется версия VPCS - 0.8

Скачаем rpm пакет

wget  http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus/x86_64/RPMS.classic/vpcs-0.8-alt3.20171012.x86_64.rpm

Установим alien

sudo apt install alien

Преобразуем пакет в deb:

alien vpcs-0.8-alt3.20171012.x86_64.rpm

Установим в систему:

sudo dpkg -i vpcs_0.8-1_amd64.deb

Проверим:

vpcs

Welcome to Virtual PC Simulator, version 0.8c
Dedicated to Daling.
Build time: Dec 10 2020 13:54:33
Copyright (c) 2007-2015, Paul Meng (mirnshi@gmail.com)
All rights reserved.

VPCS is free software, distributed under the terms of the "BSD" licence.
Source code and license can be found at vpcs.sf.net.
For more information, please visit wiki.freecode.com.cn.

Press '?' to get help.

VPCS[1]>

Установка ubridge

Скачаем rpm пакет

wget http://ftp.altlinux.org/pub/distributions/ALTLinux/Sisyphus/x86_64/RPMS.classic/ubridge-0.9.18-alt1.x86_64.rpm

Преобразуем в deb 

alien --scripts ubridge-0.9.18-alt1.x86_64.rpm

Установим:

sudo dpkg -i ubridge_0.9.18-1_amd64.deb

Проверим:

ubridge
uBridge version 0.9.18 running with libpcap version 1.8.1

Установка GNS3

Установку производить мы будем через pip:

pip3 install gns3-server

Дождитесь появления надписи:

Successfully installed Jinja2-2.11.3 MarkupSafe-1.1.1 aiofiles-0.6.0 aiohttp-3.7.4.post0 aiohttp-cors-0.7.0 async-timeout-3.0.1 attrs-20.3.0 distro-1.5.0 gns3-server-2.2.20 importlib-metadata-3.10.1 jsonschema-3.2.0 multidict-5.1.0 psutil-5.8.0 py-cpuinfo-7.0.0 pyrsistent-0.17.3 sentry-sdk-1.0.0 typing-extensions-3.7.4.3 yarl-1.6.3 zipp-3.4.1

Сервер GNS3 установлен.

Запуск GNS3 сервера

Чтобы проверить, что всё установилось без проблем, запустим сервер:

gns3server
No configuration file could be found or read

2021-04-13 19:06:40 INFO run.py:219 GNS3 server version 2.2.20

2021-04-13 19:06:40 INFO run.py:221 Copyright (c) 2007-2021 GNS3 Technologies Inc.

2021-04-13 19:06:40 INFO run.py:244 Running with Python 3.7.3 and has PID 16759

2021-04-13 19:06:40 INFO run.py:79 Current locale is en_US.UTF-8

2021-04-13 19:06:40 INFO web_server.py:318 Starting server on 0.0.0.0:3080

2021-04-13 19:06:40 INFO __init__.py:63 Load controller configuration file /root/.config/GNS3/2.2/gns3_controller.conf

2021-04-13 19:06:40 INFO __init__.py:67 Controller is starting

2021-04-13 19:06:40 INFO compute.py:64 Create compute local

2021-04-13 19:06:40 INFO compute.py:364 Connecting to compute 'local'

2021-04-13 19:06:40 INFO web_log.py:206 127.0.0.1 [13/Apr/2021:23:06:40 +0000http://127.0.0.1:3080/v2/compute/notifications/ws'

Сервер запускается и работает.

Нажмем Ctrl+Z чтобы остановить сервер.

Настройка автозапуска GNS3 сервера

Настроим автозапуск GNS3  в качестве службы, для этого создадим файл:

sudo mcedit /lib/systemd/system/gns3.service

С содержимым:

[Unit]
Description=GNS3 server
Wants=network-online.target
After=network.target network-online.target

[Service]
Type=forking
User=gns3
Group=gns3
PermissionsStartOnly=true
ExecStartPre=/bin/mkdir -p /var/log/gns3 /run/gns3
ExecStartPre=/bin/chown -R gns3:gns3 /var/log/gns3 /run/gns3
ExecStart=/usr/local/bin/gns3server --log /var/log/gns3/gns3.log --pid /run/gns3/gns3.pid --daemon
ExecReload=/bin/kill -s HUP $MAINPID
Restart=on-abort
PIDFile=/run/gns3/gns3.pid

[Install]
WantedBy=multi-user.target

Создадим символическую ссылку(симлинк):

sudo ln -s /lib/systemd/system/gns3.service /etc/systemd/system/ sudo chmod 664 /lib/systemd/system/gns3.service

Добавим пользователя для запуска сервиса:

sudo adduser gns3

Установите любой сложный пароль.

Добавим пользователя в группы:

sudo usermod gns3 -a -G kvm,gns3,libvirt

Перезапустим systemd:

sudo systemctl daemon-reload

Запустим GNS3:

sudo systemctl start gns3

Проверим статус :

sudo systemctl status gns3.service

 

Created symlink /etc/systemd/system/multi-user.target.wants/gns3.service → /lib/systemd/system/gns3.service.
● gns3.service - GNS3 server
   Loaded: loaded (/lib/systemd/system/gns3.service; linked; vendor preset: enabled)
   Active: active (running) since Tue 2021-04-13 21:00:19 EDT; 1s ago
  Process: 21140 ExecStartPre=/bin/mkdir -p /var/log/gns3 /run/gns3 (code=exited, status=0/SUCCESS)
  Process: 21141 ExecStartPre=/bin/chown -R gns3:gns3 /var/log/gns3 /run/gns3 (code=exited, status=0/SUCCESS)
  Process: 21142 ExecStart=/usr/local/bin/gns3server --log /var/log/gns3/gns3.log --pid /run/gns3/gns3.pid --daemon (code=exited, status=0/SUCCESS)
 Main PID: 21144 (gns3server)
    Tasks: 1 (limit: 1072)
   Memory: 35.7M
   CGroup: /system.slice/gns3.service
           └─21144 /usr/bin/python3 /usr/local/bin/gns3server --log /var/log/gns3/gns3.log --pid /run/gns3/gns3.pid –daemon

Добавим сервис в автозагрузку:

sudo systemctl enable gns3
Created symlink /etc/systemd/system/multi-user.target.wants/gns3.service → /lib/systemd/system/gns3.service.

Файл конфигурации

Создадим файл конфигурации, если его нет, для GNS3:

mcedit /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 = True
; 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

Перезапустим сервер

sudo service gns3 restart

Проверка работоспособности сервера

В браузере откроем

http://192.168.0.1:3080/

Где 192.168.0.1 ip адрес вашего сервера.

Логин/пароль: gns3/gns3

Должна открыться страница:

2021-04-14_10-11-59.png

Сервер запущен и готов к работе.

Установка графического интерфейса (GUI) для GNS3

Скачайте с Github проекта GNS3 файл:

https://github.com/GNS3/gns3-gui/releases

GNS3-2.2.20-all-in-one.exe

Обратите внимание, версия сервера и клиента должны совпадать! На момент написания статьи это версия 2.2.20.

Установите все по умолчанию.

Подробно установка GUI GNS3 была описана в этой статье

При подключении вместо пользователя admin указываем:

Логин: gns3

Пароль: gns3 

Проверка работоспособности

Добавим на него пару VPCS. Соединим их через Ethernet switch.

Установим для них ip адреса: 

Подробно этот процесс описан в статье

PC1

ip 172.16.100.1 255.255.255.0

PC2 

ip 172.16.100.2 255.255.255.0

Проверим пинг между ними:

PC1> ping 172.16.100.2 

84 bytes from 172.16.100.2 icmp_seq=1 ttl=64 time=0.155 ms
84 bytes from 172.16.100.2 icmp_seq=2 ttl=64 time=0.282 ms
84 bytes from 172.16.100.2 icmp_seq=3 ttl=64 time=0.455 ms
84 bytes from 172.16.100.2 icmp_seq=4 ttl=64 time=0.447 ms
PC1> ping 172.16.100.2 

84 bytes from 172.16.100.2 icmp_seq=1 ttl=64 time=0.155 ms
84 bytes from 172.16.100.2 icmp_seq=2 ttl=64 time=0.282 ms
84 bytes from 172.16.100.2 icmp_seq=3 ttl=64 time=0.455 ms
84 bytes from 172.16.100.2 icmp_seq=4 ttl=64 time=0.447 ms

Все работает.

Добавим Mikrotik, подробно этот процесс описан в статье

Соединим маршрутизатор через порт ether1 к Switch1

Запустим Mikrotik и зайдем в его консоль.

Логин: admin

Пароль по умолчанию – пустой, просто нажмите Enter

Настроим ему ip адрес

/ip address add address=172.16.100.254/24 interface=ether1

Проверим пинг до микротика с PC1

PC1> ping 172.16.100.254 

84 bytes from 172.16.100.254 icmp_seq=1 ttl=64 time=0.430 ms
84 bytes from 172.16.100.254 icmp_seq=2 ttl=64 time=0.543 ms
84 bytes from 172.16.100.254 icmp_seq=3 ttl=64 time=0.743 ms

Всё работает!

Изменяем пароль доступа к серверу по умолчанию

В файле конфигурации мы казали, что для подключения требуется авторизация, по умолчанию логин и пароль у нас gns3.

Давайте изменим его на что-то более сложное.

Откроем файл конфигурации:

mcedit /home/gns3/.config/GNS3/2.2/gns3_server.conf

В нем найдем строки:

; Option to enable HTTP authentication.
auth = True

; Username for HTTP authentication.
user = gns3

; Password for HTTP authentication.
password = gns3

Измените user и password по желанию, чтобы предотвратить неавторизованный доступ к серверу из ЛВС.

Сохраните файл и перезапустите сервер. Теперь в GUI нам нужно поменять пароль.

Для этого откроем меню Edit -> Preferences

Перейдем в раздел Server

Введите новый пароль в поле Password

2021-04-14_14-34-13_2.png

Нажмите Ок и перезапустите GUI.

Заключение

Сегодня мы рассмотрели установку GNS3 на сервер Debian 10 в виртуальной машине Hyper-V.

Мы включили вложенную виртуализацию на нашей виртуальной машине и проверили наличие виртуализации внутри самой виртуальной машины.

Были установлены все пакеты, которые требуются для установки сервера GNS3.

Был установлен сервер GNS3 и проведен тестовый запуск.

Настроен автозапуск сервера как службы.

Создан тестовый проект для проверки работоспособности GNS3.

Был изменен пароль доступа серверу.

Категория GNS3
Теги GNS3 Debian

Добавить комментарий

Простой текст

  • HTML-теги не обрабатываются и показываются как обычный текст
  • Строки и абзацы переносятся автоматически.
  • Адреса веб-страниц и email-адреса преобразовываются в ссылки автоматически.
Просмотров: 94