diff --git a/pnet.md b/pnet.md new file mode 100644 index 0000000..cd8630d --- /dev/null +++ b/pnet.md @@ -0,0 +1,377 @@ +# Заметки по 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 +```