Как развернуть и настроить виртуальную лабораторию GNS3-Server на ProxmoxVE с включенной вложенной виртуализацией (Nested Virtualization) или Desktop-Gui на Windows 10 для построения сетей с использованием MikroTik CHR.
Ссылки на документацию:
Стенд:
Все это настраивалось на следующих версиях ПО:
- ProxmoxVE: 7.3-6;
- Debian: Bullseye;
- GNS3: 2.2.37;
- CHR: Raw disk image;
- Windows 10 21H1;
GNS3: Server [link]
Для GNS3 в ProxmoxVE у меня создана отдельная сеть, которая сидит в своем VLAN. Если хост, с которого мы подключаемся к CHR, находится в той же сети, то подключиться можно будет только по MAC-адресу. Все это дело так-же можно провернуть и на Oracle VM VirtualBox я изначально так и сделал. В типе сети указывал - сетевой мост. Для работы GNS3 в режиме Клиент/Сервер необходимо наличие одной и той же версии.
ProxmoxVE: Nested Virtualization
Перед настройкой выполнить выключение всех VM. Если на Proxmox есть и другие VM, то их необходимо будет тоже перенастроить. Иначе не включатся без флага "args: -cpu host".
- Проверка:
# egrep '(vmx|svm)' --color=always /proc/cpuinfo
# cat /sys/module/kvm_intel/parameters/nested
- Включение:
# echo "options kvm-intel nested=Y" > /etc/modprobe.d/kvm-intel.conf
# modprobe -r kvm_intel
# modprobe kvm_intel
- Проверка:
# cat /sys/module/kvm_intel/parameters/nested
- Передаем параметры VM:
# nano /etc/pve/qemu-server/vm-id.conf
# args: -cpu host,-hypervisor
- у меня достаточно так:
args: -cpu host
Настройка VM в WebUI:
- Тип CPU: host
- Extra CPU Flags:
+hv-evmcs - Повышение производительности вложенной виртуализации;
VM:
Обновляем систему:
И устанавливаем необходимые пакеты.
# apt update
# apt install python3-pip qemu qemu-kvm qemu-utils libvirt-clients libvirt-daemon-system virtinst
Устанавливаем GNS3-Server:
# pip3 install gns3-server
- Для обновления:
# pip3 install --upgrade gns3-server
Установка зависимостей:
Импортируем новый репозиторий, скачаем и добавим ключ от него.
# cat <<EOFlist > /etc/apt/sources.list.d/gns3.list
deb http://ppa.launchpad.net/gns3/ppa/ubuntu bionic main
deb-src http://ppa.launchpad.net/gns3/ppa/ubuntu bionic main
EOFlist
- Зависимости:
# apt-key adv --keyserver keyserver.ubuntu.com --recv-keys F88F6D313016330404F710FC9A2FD067A2E3EF7B
# apt update && apt install dynamips ubridge vpcs
Чтобы в дальнейшем, предотвратить случайную установку:
Из добавленного репозитория, закомментируем.
# nano /etc/apt/sources.list.d/gns3.list
- И можно удалить ключ GPG:
# apt-key del F88F6D313016330404F710FC9A2FD067A2E3EF7B
Настройка GNS3-Server:
Создаем пользователя:
С отключенным шелом и одноименной группой:
# useradd gns3 -b /home/ -m -U -s /bin/false
- Задаем пароль пользователю gns3;
# passwd gns3
- Добавить пользователя gns3 к группе ubridge;
# usermod -aG ubridge gns3 - Добавить пользователя gns3 к группе ubridge.
# usermod -aG kvm gns3
# usermod -aG libvirt gns3
Systemd: [link]
# cat <<EOFsysd > /etc/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 /var/run/gns3
ExecStartPre=/bin/chown -R gns3:gns3 /var/log/gns3 /var/run/gns3
ExecStart=/usr/local/bin/gns3server --log /var/log/gns3/gns3.log --pid /var/run/gns3/gns3.pid --daemon
ExecReload=/bin/kill -s HUP $MAINPID
Restart=on-abort
PIDFile=/var/run/gns3/gns3.pid
[Install]
WantedBy=multi-user.target
EOFsysd
Включаем автозапуск:
# systemctl daemon-reload
# systemctl enable gns3.service
# systemctl start gns3.service
# systemctl status gns3.service
- Дополнительные проверки:
# systemctl check gns3
# ps -aux | grep gns3server
# gns3server --version
Настройка конфига сервера: [link]
# mkdir -p /etc/gns3
# cat <<EOFsrv > /etc/gns3/gns3_server.conf
[Server]
host = 172.16.5.226
port = 3080
#allowed_interfaces = eth0,eth1,virbr0
auth = True
user = MTv
password = pass
report_errors = False
images_path = /home/gns3/GNS3/images
projects_path = /home/gns3/GNS3/projects
appliances_path = /home/gns3/GNS3/appliances
configs_path = /home/gns3/GNS3/configs
symbols_path = /home/gns3/GNS3/symbols
[Qemu]
enable_kvm = True
require_kvm = True
EOFsrv
Для клиенского компьютера достаточно установить: "GNS3 Desktop". В GNS3-GUI при первом запуске,
указываем что будем использовать "Remote-Server", перезапускаем клиент. Далее добаляем "Qemu VMs" и загружаем образ CHR - RAW.
GNS3: Local [link]
Очень важно в настройках к VM для CHR указывать тип сетевого адаптера "virtio-net-pci", иначе после подключения линка к "ether1" он может подключиться к "ether5" и из-за этого возникнет путаница.
Необходимо установить:
- GNS3 Desktop
- GNS3 WebClient
Tools:
- WInPCAP
- Dynamips
- QUEMU
- Intel Hardware Acceleration
- VPCS
- Cpulimit
QUEMU:
Настройка для CHR.
[yes] Enable hardware acceleration
[yes] Enable hardware acceleration
- Qemu VMs
- HDD: virtio
- Network:
- Name format: e{port1}
- Type: virtio-net-pci
Не забываем в Windows создать "loopback-интерфейс" и подключить его к "Cloud nodes". Еще можно подключить локальный интерфейс Windows - Ethernet, который используется для выхода в Интернет.
Ошибки:
Отсутствие или невозможность записать в файл gns3_controller.conf:
Запустить в ручном режиме GNS3 для создания нового файла /etc/gns3/gns3_controller.conf.
# service gns3 stop
# gns3server
# ^C
- Применяем права:
# chown gns3:gns3 /etc/gns3/gns3_controller.conf
# service gns3 start