Многие облачные провайдеры не позволяют загружать ISO-файлы и не предоставляют никакой возможности для установки ОС отличных от тех что предусмотрены самим облаком.


В этой статье я расскажу вам как избежать данное ограничение и как просто в 5 шагов можно установить Mikrotik Cloud Hosted Router на любой облачной виртуалке.


Как правильно заметили в комментариях, на данный момент CHR не поддерживает SATA и SCSI-диски, но с VIRTIO и IDE работает без проблем. Другими словами, диск вашей виртуальной машины должен определяться как /dev/vda или /dev/hda, но никак не /dev/sda.

  1. Создаем новую виртуалку (Ubuntu или Debian особо не имеет значения)
  2. Загружаемся, и монтируем tmpfs в /tmp

mount -t tmpfs tmpfs /tmp/

  1. Теперь переходим по ссылке и скачиваем "Cloud Hosted Router" raw-образ.

cd /tmp
wget https://download2.mikrotik.com/routeros/6.39.3/chr-6.39.3.img.zip

  1. Следующим шагом извлечем образ и запишем его на диск виртуальной машины:

unzip chr-6.39.3.img.zip
dd if=chr-6.39.3.img of=/dev/vda bs=4M
sync

  1. Теперь нам нужно инициализировать жесткую перезагрузку:

echo 1 > /proc/sys/kernel/sysrq 
echo b > /proc/sysrq-trigger

После перезагрузки Mikrotik RouterOS подготовит жесткий диск автоматически и вы увидите приглашение для входа.

Англоязычная версия статьи

Комментарии (12)


  1. bravosierrasierra
    01.04.2018 15:12
    +1

    а для чего его нужно ставить в облако? Облака и так умеют и в маршрутизацию и в фильтрацию. А ещё там линукс со всеми его LARTC


    1. kvaps Автор
      01.04.2018 15:27
      +2

      Я рассказал как, но зачем — это уже другой вопрос :)
      В основном этот гайд пригодится тем кто имел дело и привык работать с RouterOS.

      Ну например если у вас вся инфраструктура построенна на микротиках, вы наверняка захотите иметь единый и стандартизированный интерфейс на всех устройвах, ну или если вы просто захотите сделать выходной узел для вашего домашнего mikrotik-роутера.

      Так же RouterOS из коробки поддерживает кучу полезных функций и единый интерфейс к ним, которые сразу же можно использовать не углубляясь в тонкости настройки аналогичных демонов под linux.


    1. Mystray
      01.04.2018 16:35
      +2

      Затем же, зачем продают Juniper vSRX и vMX, и Cisco CSR 1000v и ISRv, и HPE VSR, и еще множество, множество других: перенос всей инфраструктуры в «облака», включая привычное сетевое окружение.
      Практически любой сетевой вендор сейчас предоставляет свои решения в виртуализированном виде (при чем, во многих случаях, НЕ дешевле аналогичного по х-кам железного устройства).
      К примеру, те же корпоративные VPN, завязанные на внутренние каталоги юзеров. Далеко не всегда эту часть взять и перенести на то, что предоставляется провайдером облака.


    1. chelaxe
      01.04.2018 17:41

      Как вариант, у меня стоит для The Dude. Лицензию L4 получил на последнем MUM в Екатеринбурге. Образ прикрутил в LVM под Centos 7 для QEMU

      Как я это делал
      Собственно ставим пакеты, запускаем демона, качаем и создаем образ в LVM, настраиваем сеть и создаем виртуальную машину. Виртуальная машины будет запускаться автоматически.

      sudo yum install -y qemu-kvm libvirt libvirt-python python-virtinst libguestfs-tools virt-install
      sudo systemctl enable libvirtd
      sudo systemctl start libvirtd
      sudo reboot
      
      sudo mkdir /mnt/storage/mikrotik
      cd /mnt/storage/mikrotik
      sudo wget https://download.mikrotik.com/routeros/6.41.3/chr-6.41.3.img.zip
      sudo unzip chr-*.img.zip
      ls -la chr-*.img
      	-rw-r--r--. 1 root root 134217728 мар 12 12:54 chr-6.41.3.img
      sudo lvcreate -L134217728b ba_server -n dude
      sudo dd if=/mnt/storage/mikrotik/chr-6.41.3.img of=/dev/ba_server/dude bs=2M
      
      sudo cp /etc/sysconfig/network-scripts/ifcfg-{enp2s0,br0}
      sudo vim  /etc/sysconfig/network-scripts/ifcfg-enp2s0
      	DEVICE=enp2s0
      	ONBOOT=yes
      	BRIDGE=br0
      sudo vim  /etc/sysconfig/network-scripts/ifcfg-br0
      	TYPE=Bridge
      	BOOTPROTO=static
      	IPADDR=192.168.133.280
      	NETMASK=255.255.255.0
      	GATEWAY=192.168.133.1
      	DNS1=192.168.133.1
      	DEVICE=br0
      	ONBOOT=yes
      	ZONE=public
      sudo systemctl restart network
      
      sudo virt-install --connect qemu:///system --name='dude' --description='dude' --ram=512 --vcpus=1 --network bridge=br0,model=e1000 --disk path=/dev/ba_server/dude,bus=ide --os-type='other' --os-variant='generic' --nographics --hvm --boot hd --autostart
      


      1. Chugumoto
        02.04.2018 11:30

        эм… это точно? про L4
        https://wiki.mikrotik.com/wiki/Manual:CHR#CHR_Licencing
        тут вот пишут, что CHR совсем по другому лицензируются…


        1. madghost
          02.04.2018 15:00

          лицензии обратно совместимы
          License L4/P1 License L5/P10 License L6/PU
          и продают их так же


          1. Chugumoto
            02.04.2018 15:35

            хм… не знал…
            лицензии просто до этого юзал только что с железом шли…
            а тут фряшная с ограничением в 1 мегабит… как-то совсем мало… ну хоть бы 10 сделали чтоли :)


    1. POPSuL
      03.04.2018 05:58

      У меня вот есть два CHR в Германии и Японии, через них я маршрутизирую свой домашний трафик по нужным мне правилам (например, до Кореи у меня трафик по умолчанию бегает через Америку, а до Японии — напрямую, поэтому я завернул трафик в Корею через CHR который в Японии).
      Я конечно понимаю что все можно сделать на какой-нибудь чистой убунте/дебиане/центоси, но лично мне привычнее и удобнее поднять EoIP туннели парой кликов, ну и просто отсутствие зоопарка разных осей на маршрутизаторах (дома у меня Mikrotik).


      P/S/

      Я не говорю что все должны так делать, это может быть очень не правильно и за это может быть мне стоит оторвать руки =)


  1. dimsoft
    01.04.2018 18:44
    +2

    С одной стороны баян страшный, но мысль про tmpfs здравая
    С другой стороны, например я перед ребутом, но после раскатки образа еще и прописываю внутрь скрипт, который меняет пароль администратора и прописывает правильные IP адреса и шлюзы, иначе можно потом и не подключиться, а не все облака дают доступ к консоли


  1. dimsoft
    01.04.2018 18:48
    +2

    например так (примем что сеть это eth0)
    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=root password=пароль
    " > /mnt/rw/autorun.scr && \
    umount /mnt


  1. krokokot
    03.04.2018 15:42
    +1

    При всем уважении к топикстартеру — не «на любой облачной виртуалке». CHR не умеет грузиться с дисков, представленных в виртуальной машине через виртуальный контролер scsi или sata. Только ide. Причем именно грузиться, работать после загрузки, например, со вторым диском — может. Пруф: «SCSI controller Hyper-V and ESX is usable just for secondary disks, system image must be used with IDE controller!», источник. А т.к. многие провайдеры vps по умолчанию предоставляют виртуалки именно с контроллерами scsi — на таких виртуалках после вышеописанных процедур вы увидите в консоли сообщение о начале загрузки RouterOS, а затем ошибку «Disk not found!». Ну или ничего не увидите — как [не]повезет. :) Лечение — просим техподдержку изменить виртуальный контроллер на ide. Или делаем это сами, если интерфейс управления виртуалкой это позволяет. Информация актуальна для релизов CHR до 6.41.1. Позднее — не проверял.


    1. kvaps Автор
      03.04.2018 16:33
      +1

      Важное замечание, сейчас проверил: SATA и правда не поддерживается.
      Но совершенно точно работает с VIRTIO и IDE.