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

[[https://cdimage.debian.org/debian-cd/current/amd64/bt-cd/|Скачиваем]] образ с официального сайта.

Создаем виртуальную машину, для этих целей будет использоваться VMware Workstation. В процессе настройки ВМ на этапе указания объема диска **обязательно** выбрать **Store virtual disk as a single file**.

Т.к. необходим наиболее минимальный образ, то объем диска указываем 3-4 Гб, этого достаточно.

Также, для удобства, на заключительном этапе установки делаем настройку сетевой карты мостом, для этого выбираем **Customize Hardware…**, выбираем **Network adapter** -> **Bridged**, как на изображении ниже.

{{ :eve-ng:vmware-bridge.png?direct&600 |}}

После этого запускаем ВМ и устанавливаем операционную систему.

На этапе установки стоит обратить внимание на то, что графическое окружение устанавливать **не нужно**, поэтому на шаге **software selection** оставляем отмеченными только пункты **SSH server** и **standart system utilities**.

После установки ОС добавим возможность подключения по ssh, для удобства конфигурации. Для этого в файле **/etc/ssh/ssdh_config** в секцию **Authentication** добавим строку **PermitRootLogin yes**, перезапустим сервис ssh <code bash>systemctl restart ssh</code>.

===== Установка ПО на виртуальную машину =====

Подключаемся по ssh к ВМ для установки и настройки необходимых сервисов:

  - Обновляем ОС <code bash>apt update && apt upgrade</code>
  - Для дальнейшего подключения к роутеру в EVE-NG необходимо:
      * Установить telnet <code bash>apt install telnetd</code>
      * Проверить, что сервис включен и запущен (после установки он самостоятельно включается): <code bash>systemctl status inetd.service</code> <code bash>inetd.service - Internet superserver
Loaded: loaded (/lib/systemd/system/inetd.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2022-09-15 17:11:40 MSK; 1min 4s ago</code>
      * Также необходимо включить доступ по консольному интерфейсу (т.к. EVE-NG использует его, при отсутствии VNC): <code bash>systemctl start serial-getty@ttyS0.service </code> <code bash>systemctl enable serial-getty@ttyS0.service</code>
  - Установим программы для работы с сетью:
      * FRR - набор утилит для работы с протоколами маршрутизации <code bash>apt install frr</code>
      * Strongswan - для работы с IPSec <code bash>apt install strongswan</code>
      * Программы для диагностики: <code bash>apt install traceroute tcpdump dnsutils</code>
  - Выключаем виртуальную машину.

===== Добавление образа в EVE-NG1 =====

Созданный ранее образ загружаем на виртуальную машину с EVE-NG, для этого:
  - Заходим по ssh на сервер с EVE-NG и создаем там директорию для образа: <code bash>mkdir /opt/unetlab/addons/qemu/linuxrouter-1.0</code> Необходимо учитывать [[https://www.eve-ng.net/index.php/documentation/qemu-image-namings/|схему именования qemu устройств]], сначала название папки с образом, а через дефис название образа и версия, либо просто версия. Это имя будет использоваться в шаблоне, для создания устройства.
  - На машине, где создавали образ, переходим в директорию с ним и загружаем .vmdk файл на сервер: <code bash>scp linuxrouter.vmdk root@192.168.22.71:/opt/unetlab/addons/qemu/linuxrouter-1.0/</code>
  - На сервере с EVE-NG перейдем в директорию, куда копировали образ, переконвертируем его в формат .qcow2, после чего удалим .vmdk файл: <code bash>cd /opt/unetlab/addons/qemu/linuxrouter-1.0/  
/opt/qemu/bin/qemu-img convert -f vmdk -O qcow2 linuxrouter.vmdk hda.qcow2  
rm linuxrouter.vmdk
/opt/unetlab/wrappers/unl_wrapper -a fixpermissions</code>
  - Создадим шаблон для образа, для этого:
      * Перейдем в директорию /opt/unetlab/html/templates/{тип процессора} <code bash>cd /opt/unetlab/html/templates/amd</code>
      * Скопируем существующий шаблон linux.yml в новый linuxrouter.yml <code bash>cp linux.yml linuxrouter.yml</code>
      * Отредактируем файл linuxrouter.yml и приведем его к следующему виду: <code bash>---
type: qemu
description: LinuxRouter
name: LinuxRouter
cpulimit: 1
icon: Router.png
cpu: 1
ram: 1024
ethernet: 4
console: telnet
shutdown: 1
qemu_arch: x86_64
qemu_nic: virtio-net-pci
qemu_options: -machine type=pc,accel=kvm -serial mon:stdio -nographic -boot order=c
...</code>

Здесь мы указали: описание, имя, количество CPU и RAM, количество портов, telnet в качестве консоли и в параметрах qemu использование serial интерфейса

===== Проверка работы образа =====

Теперь при добавлении новой Node появляется выбор образа

{{ :eve-ng:5d138f665fa3b6b4c6cfb.png?direct&600 |}}

Также видно, что параметры по умолчанию используются те, которые задавали ранее в шаблоне 

{{ :eve-ng:435ad9a07dd07e1eef943.png?direct&600 |}}

Соберем простую топологию, с первое устройство будет роутер Cisco, второе - роутер на Linux 

{{ :eve-ng:947f7804a99d850ce4611.png?direct&600 |}}

Настроим ip-адреса на обоих устройствах и сделаем ping друг до друга

  - Конфиг Cisco <code bash>Router>enable
Router#conf t
Router(config)#hostname CiscoRouter
CiscoRouter(config)#int e0/0
CiscoRouter(config-if)#no sh
CiscoRouter(config-if)#ip add 1.1.1.1 255.255.255.0</code>
  - Конфиг роутера на Linux <code bash>root@linuxrouter:~# vtysh
linuxrouter# configure terminal
linuxrouter(config)# interface ens3
linuxrouter(config-if)# ip address 1.1.1.2/24</code>
  - Проверим ping с двух сторон <code bash>CiscoRouter#ping 1.1.1.2
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 1.1.1.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms
linuxrouter# ping 1.1.1.1
PING 1.1.1.1 (1.1.1.1) 56(84) bytes of data.
64 bytes from 1.1.1.1: icmp_seq=1 ttl=255 time=0.940 ms
64 bytes from 1.1.1.1: icmp_seq=2 ttl=255 time=0.655 ms
64 bytes from 1.1.1.1: icmp_seq=3 ttl=255 time=0.954 ms
--- 1.1.1.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 0.655/0.849/0.954/0.137 ms</code>

Как видим образ работает.