Запуск Mikrotik CHR в виртуальной машине KVM

Эта статья для тех, кто хочет запустить Cloud Hosted Router в виртуальной машине под линуксом с виртуализацией KVM.

Установка KVM

Если у вас уже установлена KVM, то этот шаг можно пропустить.

Выполняем команду:

sudo apt-get install qemu qemu-kvm libvirt-daemon-system virtinst libosinfo-bin bridge-utils

Включаем автозапуск:

sudo systemctl enable libvirtd

Добавляем мост. Он понадобится для включения виртуальной машины в локальную сеть.

sudo brctl addbr br0

Теперь нужно отредактировать сетевые настройки в файле /etc/network/interfaces (да, я не люблю netplan). У меня они выглядят так:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eno1
iface eno1 inet manual

auto br0
iface br0 inet static
        address 192.168.1.2
        network 192.168.1.0
        netmask 255.255.255.0
        broadcast 192.168.1.255
        gateway 192.168.1.1
        bridge_ports eno1
        bridge_stp off
        bridge_fd 0
        bridge_maxwait 0

После этого перезапускаем сеть:

sudo systemctl restart networking

Устанавливаем CHR

Создаём каталог для виртуальной машины:

sudo mkdir /kvm/chr -p
sudo chmod 777 /kvm/chr

Качаем RAW образ Mikrotik CHR с официального сайта и помещаем его в каталог виртуальной машины, предварительно распаковав из архива.

Либо то же самое, но в консоли (только поправьте номер версии на последнюю):

cd /kvm/chr
wget https://download.mikrotik.com/routeros/6.48.4/chr-6.48.4.img.zip
unzip ./chr-6.48.4.img.zip

Увеличиваем размер диска. Иначе стандартных 64 мегабайт может не хватить при скачивании обновлений или использовании Dude.

qemu-img resize /kvm/chr/chr-6.48.4.img 512M

Создаём виртуальную машину с именем chr, паролем для VNC подключения и 128 мегабайтами оперативной памяти:

virt-install -n chr \
--autostart \
--noautoconsole \
--network=bridge:br0 \
--ram 128 --arch=x86_64 \
--vcpus=1 --cpu host --check-cpu \
--disk path=/kvm/chr/chr-6.48.4.img \
--graphics vnc,listen=0.0.0.0,password=vncvncvnc \
--os-type linux --os-variant=debian2.0 --boot hd

Если всё хорошо, то мы должны увидеть надпись «Domain creation completed.«. Теперь мы можем подцепиться по VNC на порт 5900 (или 5901 и выше, если есть уже другие виртуалки) хоста и увидеть загрузку RouterOS, по итогу которой увидеть приглашение для ввода логина и пароля (по-умолчанию admin без пароля):

Но удобнее всего настраивать через winbox:

Далее выполняем все остальные действия как и на обычном микротике: устанавливаем пароль на админа, настраиваем IP, фаервол, маршрутизацию и т.д.