notes/pnet.md

378 lines
16 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# Заметки по 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, <https://pnetlab.com>) - форк 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. Он также может автоматически загружать образы, необходимые для лабораторий.
Репозиторий утилиты расположен по адресу: <https://github.com/ishare2-org/ishare2-cli>
Установка производится от рута командой
```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 <type>
--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 <type> [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
```