Простой способ установить Mikrotik RouterOS в любом облаке

  • Tutorial

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


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



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


    mount -t tmpfs tmpfs /tmp/

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


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

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


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

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


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

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

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


Поделиться публикацией
Комментарии 16
    +1
    а для чего его нужно ставить в облако? Облака и так умеют и в маршрутизацию и в фильтрацию. А ещё там линукс со всеми его LARTC
      +2
      Я рассказал как, но зачем — это уже другой вопрос :)
      В основном этот гайд пригодится тем кто имел дело и привык работать с RouterOS.

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

      Так же RouterOS из коробки поддерживает кучу полезных функций и единый интерфейс к ним, которые сразу же можно использовать не углубляясь в тонкости настройки аналогичных демонов под linux.
        +2
        Затем же, зачем продают Juniper vSRX и vMX, и Cisco CSR 1000v и ISRv, и HPE VSR, и еще множество, множество других: перенос всей инфраструктуры в «облака», включая привычное сетевое окружение.
        Практически любой сетевой вендор сейчас предоставляет свои решения в виртуализированном виде (при чем, во многих случаях, НЕ дешевле аналогичного по х-кам железного устройства).
        К примеру, те же корпоративные VPN, завязанные на внутренние каталоги юзеров. Далеко не всегда эту часть взять и перенести на то, что предоставляется провайдером облака.
          0
          Как вариант, у меня стоит для 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
            эм… это точно? про L4
            https://wiki.mikrotik.com/wiki/Manual:CHR#CHR_Licencing
            тут вот пишут, что CHR совсем по другому лицензируются…
              +1
              лицензии обратно совместимы
              License L4/P1 License L5/P10 License L6/PU
              и продают их так же
                +1
                хм… не знал…
                лицензии просто до этого юзал только что с железом шли…
                а тут фряшная с ограничением в 1 мегабит… как-то совсем мало… ну хоть бы 10 сделали чтоли :)
            +2

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


            P/S/

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

            +2

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

              +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

                +2
                При всем уважении к топикстартеру — не «на любой облачной виртуалке». 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. Позднее — не проверял.
                  +2
                  Важное замечание, сейчас проверил: SATA и правда не поддерживается.
                  Но совершенно точно работает с VIRTIO и IDE.
                    +1
                    только что загрузил образ RouterOS chr-6.39.3.img на SDA. перезагрузился — все работает. попробовал еще раз — все норм. Aruba. виртуализация вроде esxi…
                  0

                  Хорошая первоапарельская шутка. Особенно sync в конце, который записывает данные старой файловой системы поверх новой. Частично.

                    0

                    Ок, заменил команду sync на флагoflag=sync для dd, спасибо за замечание.

                    0
                    В принципе сработать может, но пропущены важные детали. Сначала, перед всем этим, надо рут имеющейся виртуалки перемонтировать в read-only. А во-вторых, что делать с загрузчиком? Он же окажется не на прежнем месте.

                    Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                    Самое читаемое