# Заметки по PNET Lab - [Заметки по PNET Lab](#заметки-по-pnet-lab) - [Установка PNET Lab](#установка-pnet-lab) - [Установка Ubuntu 20.04](#установка-ubuntu-2004) - [Установка ishare2](#установка-ishare2) - [Установка платформы PNET Lab](#установка-платформы-pnet-lab) - [Загрузка образов устройств](#загрузка-образов-устройств) - [Добавление своего qemu образа](#добавление-своего-qemu-образа) - [Добавление образа Mikrotik](#добавление-образа-mikrotik) - [Права файлов](#права-файлов) - [Добавление образов Cisco IOL](#добавление-образов-cisco-iol) PNETLab (Packet Network Emulator Tool Lab, ) - форк EVE-NG платформы виртуализации для построения различных сетевых топологий и эмуляции сетевых устройств. Кроме этого, PNETLab это платформа, которая позволяет создавать и делиться с сообществом своими лабораторными стендами с целью обучения сетевым технолгиям и тестирования. Платформа состоит из двух основных элементов - PNETLab Box и PNETLab store PNETLab Box (с 2-мя режимами работы: Offline и Online) - это виртальная машина, которая устаналивается на гипервизор и позволяет создавать и загружать лабораторные стенды. PNETLab Store - web платформа с большим количеством бесплатных лабораторных стендов. Платформа позволяет эмулировать сетевые устройства Cisco (IOS, Dynapimps), контейнеры Docker, образы устройств в формате Qemu. ## Установка PNET Lab Установка платформы состоит из трёх основных этапов: - установка серверной Ubuntu 20.04 (на момент написания заметки поддерживается только эта версия) - установка утилиты ishare2. Утилита позволяет скачивать лабораторные стенды, образы устройств и обновления для платформы - установка платформы PNET Lab ### Установка Ubuntu 20.04 Необходимо выполнить установку серверной версии ОС без обновлений в процессе установки. ### Установка ishare2 ishare2 - это инструмент, который позволяет загружать образы устройств для сетевых эмуляторов и управлять ими. ishare2 может загружать образы qemu, dynamips, bin/iol и docker. Он также может автоматически загружать образы, необходимые для лабораторий. Репозиторий утилиты расположен по адресу: Установка производится от рута командой ```shell wget -O /usr/sbin/ishare2 https://raw.githubusercontent.com/ishare2-org/ishare2-cli/main/ishare2 && chmod +x /usr/sbin/ishare2 && ishare2 ``` В процессе установки будет задано несколько вопросов, нажатие Enter применит значения по-умолчанию. ### Установка платформы PNET Lab После установки ishare2 можно приступать к установке платформы ```shell root@pnet:~# ishare2 upgrade 1) Upgrade ishare2 2) Upgrade PNETLab 3) Upgrade ishare2 GUI 4) Exit Please, select an option: 2 1) Upgrade PNETLab v5 STABLE 2) Upgrade PNETLab v5 BETA 3) Upgrade PNETLab v6 BETA 4) Exit ``` - PNETLab v5 STABLE не подходит, т.к. поддерживает только Ubuntu 18.04 - Upgrade PNETLab v6 BETA - на момент написания заметки имела ограниченный функционал Стоит выбрать `2) Upgrade PNETLab v5 BETA` Установка занимает 15-20 минут, после чего консоль вернётся в меню `ishare2`, где нужно выбрать пнукт 4 для выхода и перезагрузить сервер. ## Загрузка образов устройств Для загрузки образов используется утилита `ishare2` ```shell root@pnetlab:~# ishare2 --help Syntax ishare2 [action] [param1] [param2] [--overwrite] action: search : Search for images available on LabHub mirrors. pull : Download an image by specifying the type and id. installed : Shows images installed on the server. labs : Shows available labs and downloads the images for the selected lab. mylabs : Same as labs command but you can use a customized path. relicense : Generates an iourc license for iol images. upgrade : Shows a menu to upgrade ishare2 or PNETLab. test : Test internet connectivity to required sites. help : Shows full help information. param1: type = all, iol, qemu, dynamips, docker or name. param2: id = This can be obtained using ishare2 search --overwrite: Used to overwrite an existing image if it already exists on your system. Try: ishare2 help for more information. ``` Для поиска доступных образов ```shell root@pnetlab:~# ishare2 search Usage: ishare2 search [keyword] ishare2 search all Types: qemu, iol, dynamips ``` Показать все доступные образы формата `qemu` ```shell root@pnetlab:~# ishare2 search qemu ============================= Available QEMU images ============================= ID NAME SIZE -- ---- ---- 1 128T-522 2.5 GiB 2 6wind-cgnat-ee-x86_64-2.2.6 528.6 MiB 3 6wind-router-ee-x86_64-2.2.6 528.3 MiB ... 1248 zabbix-3.0 3.6 GiB 1249 zabbix-3.4 683.3 MiB 1249 QEMU images found ``` При поиске можно использовать уточняющие критерии ```shell root@pnetlab:~# ishare2 search qemu debian ============================= Available QEMU images ============================= ID NAME SIZE -- ---- ---- 597 linux-debian-10 1.3 GiB 598 linux-debian-10 1.3 GiB 599 linux-debian-10 1.3 GiB 600 linux-debian-10.3.0 581.3 MiB 4 QEMU images found for the term: "debian" root@pnetlab:~# root@pnetlab:~# root@pnetlab:~# ishare2 search qemu pfsense ============================= Available QEMU images ============================= ID NAME SIZE -- ---- ---- 764 pfsense-2.3.3 555.5 MiB 765 pfsense-CE-2.4.4 452.7 MiB 766 pfsense-CE-2.4.5 521.5 MiB 767 pfsense-CE-2.4.5-p1 531.0 MiB 768 pfsense-CE-2.5.0-RELEASE 742.6 MiB 769 pfsense-CE-2.5.1-RELEASE 742.9 MiB 770 pfsense-CE-2.5.2 1.5 GiB 771 pfsense-CE-2.5.2-RELEASE 785.2 MiB 772 pfsense-CE-2.6 2.3 GiB 773 pfsense-pfs-2.6.0 832.4 MiB 774 pfsense-pfs-2.7.0 442.3 MiB 11 QEMU images found for the term: "pfsense" ``` Для установки конкретного образа достаточно указать его ID. Например, для скачивания образа `linux-debian-10.3.0` с идентификатором 600 ```shell root@pnetlab:~# ishare2 pull qemu 600 [!] IMAGE INFO - Image Name : linux-debian-10.3.0 - Image Size : 581.3 MiB - Image Type : QEMU - Image ID : 600 - Image path : /opt/unetlab/addons/qemu/linux-debian-10.3.0 - Using host : https://labhub.eu.org [!] DOWNLOADING IMAGE /opt/unetlab/addons/qemu/linux-debian-10.3.0 100%[=============================================================================================>] 581.33M 10.5MB/s in 69s [+] DOWNLOAD COMPLETED! [-] Extracting: linux-debian-10.3.0.tgz file... [+] Extracted: /opt/unetlab/addons/qemu/linux-debian-10.3.0. Image ready to use. [-] Fixing permissions... [+] Fix permissions command has been executed correctly ``` ## Добавление своего qemu образа ### Добавление образа Mikrotik В репозитории `ishare2` есть несколько версий Mikrotik OS, последняя из доступных на момент написания заметки - 7.6, хотя на официальном сайте уже есть 7.16.2. ```shell root@pnetlab:~# ishare2 search qemu mikrotik ============================= Available QEMU images ============================= ID NAME SIZE -- ---- ---- 635 mikrotik-6.39 45.6 MiB ... 662 mikrotik-7.5 37.2 MiB 663 mikrotik-7.6 39.1 MiB 29 QEMU images found for the term: "mikrotik" ``` Чтобы проще разобраться с форматом и именованием образов, скачаем образ 7.6 из репозитория ```shell root@pnetlab:~# ishare2 pull qemu 663 [!] IMAGE INFO - Image Name : mikrotik-7.6 - Image Size : 39.1 MiB - Image Type : QEMU - Image ID : 663 - Image path : /opt/unetlab/addons/qemu/mikrotik-7.6 - Using host : https://drive.labhub.eu.org [!] DOWNLOADING IMAGE /opt/unetlab/addons/qemu/mikrotik-7.6/hda.qc 100%[==================================>] 39.06M 42.0MB/s in 0.9s [+] DOWNLOAD COMPLETED! [-] Fixing permissions... [+] Fix permissions command has been executed correctly ``` Образы сохраняются в зависимости от формата, в соответствующей директории ```shell root@pnetlab:~# ls /opt/unetlab/addons/ docker dynamips iol qemu ``` т.к. образ mikrotik имеет формат qemu, соответственно он и сохранился в ```shell root@pnetlab:~# tree /opt/unetlab/addons/qemu/ /opt/unetlab/addons/qemu/ ├── linux-debian-10.3.0 │   └── virtioa.qcow2 └── mikrotik-7.6 └── hda.qcow2 2 directories, 2 files ``` в этой же директории сохранился ранее скачанный образ Debian. Теперь, чтобы скачать поледний доступный образ mikrotik 7.16.2 создадим соответсвтующую директорию и скачаем VMDK образ Mikrotik Cloud Hosted Router ```shell root@pnetlab:~# cd /opt/unetlab/addons/qemu/ root@pnetlab:/opt/unetlab/addons/qemu# mkdir mikrotik-7.16.2 && cd mikrotik-7.16.2 root@pnetlab:/opt/unetlab/addons/qemu/mikrotik-7.16.2# wget https://download.mikrotik.com/routeros/7.16.2/chr-7.16.2.vmdk.zip ``` Теперь скачанный образ необходимо разархивировать и конвертировать в формат QCOW2 ```shell root@pnetlab:/opt/unetlab/addons/qemu/mikrotik-7.16.2# ls chr-7.16.2.vmdk.zip root@pnetlab:/opt/unetlab/addons/qemu/mikrotik-7.16.2# unzip chr-7.16.2.vmdk.zip Archive: chr-7.16.2.vmdk.zip inflating: chr-7.16.2.vmdk root@pnetlab:/opt/unetlab/addons/qemu/mikrotik-7.16.2# ls -l total 80044 -rw-r--r-- 1 root root 41746432 Nov 26 13:16 chr-7.16.2.vmdk -rw-r--r-- 1 root root 40216509 Nov 27 08:24 chr-7.16.2.vmdk.zip ``` Для конвертации в формат QCOW2 необходима утилита `qemu-img`, которая в Ubuntu входит в состав пакета `qemu-utils`. ```shell root@pnetlab:/opt/unetlab/addons/qemu/mikrotik-7.16.2# apt search qemu-img Sorting... Done Full Text Search... Done qemu-block-extra/now 1:4.2-3ubuntu6.30 amd64 [installed,local] extra block backend modules for qemu-system and qemu-utils qemu-utils/now 1:4.2-3ubuntu6.30 amd64 [installed,local] QEMU utilities ``` В состав PNET Lab на основе Ubuntu этот пакет уже входит. Для конвертации VMDK в QCOW2 ```shell root@pnetlab:/opt/unetlab/addons/qemu/mikrotik-7.16.2# qemu-img convert -f vmdk -O qcow2 chr-7.16.2.vmdk hda.qcow2 ``` **!! стоит обратить внимание - имя файла после конвертации должно быть `hda.qcow2`** Скачанный архив и VMDK образ больше не нужны, их необходимо удалить. ### Права файлов Все скачанные образы должны иметь определённые права - 755. Изменить права можно вручную для файла или через web-интерфейс в разделе `System` => `System Settings` => `Fix Permissions` Кроме этого есть специальный wrapper, изменить права можно также ```shell /opt/unetlab/wrappers/unl_wrapper -a fixpermissions ``` Теперь при добавлении новой ноды в лабораторный стенд в выпадающем списке будет доступен образ Mikrotik 7.16.2 ## Добавление образов Cisco IOL С помощью `ishare2` скачал 2 образа Cisco IOL ```shell root@pnetlab:~# ishare2 installed iol ==================================== Showing installed IOL images ==================================== /opt/unetlab/addons/iol/bin/ ├── [-rwxr-xr-x 1.5K] CiscoIOUKeygen.py ├── [-rwxr-xr-x 120M] i86bi_LinuxL2-AdvEnterpriseK9-M_152_May_2018.bin ├── [-rwxr-xr-x 176M] i86bi_LinuxL3-AdvEnterpriseK9-M2_157_3_May_2018.bin ├── [-rwxr-xr-x 38] iourc └── [-rwxr-xr-x 1.7K] keepalive.pl 0 directories, 5 files ``` НО, скачать образы недостаточно, необходимо ещё сгенерировать лицензионный ключ, который хранится в файле `iourc`. Для генерации ключа необходимо запустить python скрипт `CiscoIOUKeygen.py` Пример работы скрипта: ```shell root@pnetlab:~# /opt/unetlab/addons/iol/bin/CiscoIOUKeygen.py ********************************************************************* Cisco IOU License Generator - Kal 2011, python port of 2006 C version hostid=007f0101, hostname=pnetlab, ioukey=7f03e7 ********************************************************************* Create the license file $HOME/.iourc with this command: The command adds the following text to $HOME/.iourc: [license] pnetlab = b126e08dae13e962; ********************************************************************* 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 ********************************************************************* ``` В файл `iourc` необходимо заменить лицензионный ключ на тот, который сгенерирован скриптом. В конце необходимо поправить права к файлам: - через web-интерфейс в разделе `System` => `System Settings` => `Fix Permissions` - или командой ```shell /opt/unetlab/wrappers/unl_wrapper -a fixpermissions ```