Cloud Hosted Router можно установить практически на любую виртуалку, но есть некоторые тонкости.
Профессиональная настройка MikroTik
Без предоплаты
Telegram: @Engineer_MikroTik
Установка поверх Ubuntu
Если хостинг VDS/VPS предоставляет только готовый образ, можно накатить CHR поверх него, заменив данные на диске:
Для RouterOS 7 подмените ссылку на https://download.mikrotik.com/routeros/7.15.2/chr-7.15.2.img.zip и название chr-7.15.2.img.zip
sudo -i #переходим в root
apt update #обновляем список пакетов
apt install unzip -y #ставим архиватор
wget --inet4-only --no-check-certificate https://download.mikrotik.com/routeros/6.48.5/chr-6.48.5.img.zip #скачиваем версию CHR
unzip chr-6.48.5.img.zip #распаковываем
fdisk -l #смотрим список устройств дисков
----
Disk /dev/loop1: 55,45 MiB, 58130432 bytes, 113536 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/loop2: 71,38 MiB, 74838016 bytes, 146168 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/loop3: 61,85 MiB, 64835584 bytes, 126632 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/loop4: 55,51 MiB, 58191872 bytes, 113656 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/loop5: 32,42 MiB, 33980416 bytes, 66368 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/loop6: 67,26 MiB, 70516736 bytes, 137728 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/loop7: 32,45 MiB, 34017280 bytes, 66440 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/vda: 10 GiB, 10737418240 bytes, 20971520 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x7800975b
Device Boot Start End Sectors Size Id Type
/dev/vda1 * 2048 20971486 20969439 10G 83 Linux
----
Нас интересует /dev/vda
dd if=chr-6.48.5.img of=/dev/vda bs=4M oflag=sync #поблочно записываем образ на диск
echo 1 > /proc/sys/kernel/sysrq
echo b > /proc/sysrq-trigger
После перезагрузки останется через консоль авторизоваться и поставить пароль, настроить сеть.
Установка поверх Ubuntu в Digital Ocean
Для DO процесс немного интересней
wget http://download2.mikrotik.com/routeros/6.48.5/chr-6.48.5.img.zip -O chr.img.zip && \
gunzip -c chr.img.zip > chr.img && \
mount -o loop,offset=33554944 chr.img /mnt && \
ADDRESS=`ip addr show eth0 | grep global | cut -d' ' -f 6 | head -n 1` && \
GATEWAY=`ip route list | grep default | cut -d' ' -f 3` && \
echo "/ip address add address=$ADDRESS interface=[/interface ethernet find where name=ether1]
/ip route add gateway=$GATEWAY
/ip service disable telnet
/user set 0 name=trololo password=PaSsW0rD
" > /mnt/rw/autorun.scr && \
umount /mnt && \
echo u > /proc/sysrq-trigger && \
dd if=chr.img bs=1024 of=/dev/vda && \
echo "sync disk" && \
echo s > /proc/sysrq-trigger && \
echo "Sleep 5 seconds" && \
sleep 5 && \
echo "Ok, reboot" && \
echo b > /proc/sysrq-trigger
Скрипт сам прочитает настройки сети и пропишет их, заодно сменит имя и пароль admin на name=trololo password=PaSsW0rD
Этот способ можно переписать под любого хостера, заранее посмотрев названия интерфейсов.
Установка на Proxmox
Установка на свой гипервизор является идеальным решением, так как CHR займет всего 64Мб, что позволит быстрее делать бэкап и перемещать между нодами без СХД
В используемом ниже Bash скрипте нужно при запуске указать версию CHR и свободный vmID
В случае ошибок проверьте, что установлен архиватор и ссылка на образ рабочая
#!/bin/bash
#vars
version="nil"
vmID="nil"
echo "############## Start of Script ##############
## Checking if temp dir is available..."
if [ -d /root/temp ]
then
echo "-- Directory exists!"
else
echo "-- Creating temp dir!"
mkdir /root/temp
fi
# Ask user for version
echo "## Preparing for image download and VM creation!"
read -p "Please input CHR version to deploy (6.38.2, 6.40.1, etc):" version
# Check if image is available and download if needed
if [ -f /root/temp/chr-$version.img ]
then
echo "-- CHR image is available."
else
echo "-- Downloading CHR $version image file."
cd /root/temp
echo "---------------------------------------------------------------------------"
wget https://download.mikrotik.com/routeros/$version/chr-$version.img.zip
unzip chr-$version.img.zip
echo "---------------------------------------------------------------------------"
fi
# List already existing VM's and ask for vmID
echo "== Printing list of VM's on this hypervisor!"
qm list
echo ""
read -p "Please Enter free vm ID to use:" vmID
echo ""
# Create storage dir for VM if needed.
if [ -d /var/lib/vz/images/$vmID ]
then
echo "-- VM Directory exists! Ideally try another vm ID!"
read -p "Please Enter free vm ID to use:" vmID
else
echo "-- Creating VM image dir!"
mkdir /var/lib/vz/images/$vmID
fi
# Creating qcow2 image for CHR.
echo "-- Converting image to qcow2 format "
qemu-img convert \
-f raw \
-O qcow2 \
/root/temp/chr-$version.img \
/var/lib/vz/images/$vmID/vm-$vmID-disk-1.qcow2
# Creating VM
echo "-- Creating new CHR VM"
qm create $vmID \
--name chr-$version \
--net0 virtio,bridge=vmbr0 \
--bootdisk virtio0 \
--ostype l26 \
--memory 256 \
--onboot no \
--sockets 1 \
--cores 1 \
--virtio0 local:$vmID/vm-$vmID-disk-1.qcow2
echo "############## End of Script ##############"
Если способ не работает (а он не работает для серверов в кластере), то нужно создать минимальную машину и подмонтировать к ней диск:
wget https://download.mikrotik.com/routeros/6.48.6/chr-6.48.6.img.zip
unzip chr-6.48.6.img.zip
qm create 1001 --memory 256 --net0 virtio,bridge=vmbr0
qm importdisk 1001 chr-6.48.6.img local-lvm
qm set 1001 --scsihw virtio-scsi-pci --scsi0 local-lvm:vm-1001-disk-0 --boot c --bootdisk scsi0
Установка на OpenStack
Установка аналогична замене данных диска на Ubuntu, но для работы маршрутизации и NAT нужно произвести манипуляции с LAN портами в CLI OpenStack
openstack port set —allowed-address ip-address=0.0.0.0/0 ID_LAN_Порта