Введение

(много букав, можно не читать, если не интересны душевные терзания автора).

Доброго времени суток, уважаемые хабровчане.

Сразу скажу, что в сфере IT я не очень давно и многие моменты "батям" системного администрирования могут показаться смешными и/или очевидными (как, к примеру, синтаксис в NIXовых ОС). Прошу сильно не кидаться в меня ссаными тряпками. Скорее всего, вам эта инструкция будет не интересна. Но если дадите какие-то советы, то всегда за них благодарен.

Данная статья сделана на основе инструкции пользователя Iliasla на форуме Mikrotik. Спасибо ему большое за нее. И да, если у кого хорошо с английским, то можно просто воспользоваться оригиналом. По сути, это перевод и чуть более удобное представление.

Информации про выбор хостера, думаю, достаточно и эту тему оставим за рамками данной статьи. Скажу лишь, что задачей было найти азиатского хостера (ну или минимально завязанного на западные страны, по понятным причинам) с азиатскими же локациями расположения серверов. Страна должна иметь максимально лояльное отношение к другим странам. Эти условия были выполнены частично, т.к. одним из владельцев хостинга является американская компания.

Стоит также отметить, что у данного хостера нет возможности залить образ ОС!!! на виртуальный сервер.

Кроме того, на Хабре уже была статья про установку Mikrotik CHR на VPS, но как следует из предыдущего тезиса, она не совсем подойдет в данном случае.

Инструкция по установке Mikrotik CHR на виртуальный сервер хостера vpsserver.

Регистрируемся на хостинге и создаем новый сервер.

На втором шаге выбираем тип операционной системы. Нам понадобится CentOS.

На этапе 3 выбираем минимальную конфигурацию. Много ресурсов для него нам не потребуется.

Никаких дополнительных опций в обязательном порядке подключать не требуется. В общем то, даже периодический бэкап не имеет смысла, т.к. есть возможность сделать бэкап в ручном режиме, частая смена конфигураций сервера нам не грозит, а сам микротик имеет великолепную функцию песочницы - включается безопасный режим и даже если что-то накосорезил, то он сам вернет всё как было если что-то пойдет не по плану.

И вот у нас запущен VPS со стандартной минимальной ОС.

Запускаем PuTTY, подключаемся к нашему серверу используя логин и пароль, заданные нами в веб-интерфейсе.

Дальше собственно начинается сама инструкция, что делать с сервером.

  1. Устанавливаем всё необходимое. Так как CentOS это один из самых легких и как следствие пустых дистрибутивов Linux, то и необходимые пакеты необходимо доустанавливать вручную. Везде добавлял ключ -y т.к. ленивая жопа и мне лень каждый раз соглашаться - он позволяет отвечать на все вопросы при установке "да".

Скорее всего, потребуется добавить репозиторий пакетов.

cd /etc/yum.repos.d/

sed -i 's/mirrorlist/#mirrorlist/g' /etc/yum.repos.d/CentOS-*

sed -i 's|#baseurl=http://mirror.centos.org|eurl=http://vault.centos.org|g' /etc/yum.repos.d/CentOS-*

Устанавливаем текстовый редактор nano.

yum install nano -y

Устанавливаем аналог Norton Commander (да, да, вот тут от линуксоидов сейчас в меня полетят ссаные тряпки, о которых говорил раньше, но через него реально удобно проверять, всё ли прошло успешно).

yum install mc -y

Устанавливаем архиватор.

yum install unzip -y

Обновляем всё, что только можно

yum update -y

yum upgrade -y

  1. Через веб-интерфейс перезагружаем сервер в режиме восстановления. Это обязательно!!! Если не сделать этого, то наш сервер превратится в тыкву и в конце концов нам его заблокируют т.к. CPU будет работать на 146%. Придется писать в техподдержку что бы разблокировали и запускать ребилд после чего начинать всё заново, т.к. ОС будет повреждена.

  1. Узнаем и записываем изначальные сетевые настройки своего сервера (нас интересует сетевой интерфейс (скорее всего он будет eth0), маска сети (скорее всего 255.255.255.0), адрес шлюза (скорее всего тот же, что и адрес сервера только с нулем на конце).

ifconfig

ip route

  1. Снова через PuTTY подключаемся к серверу и монтируем раздел tmp

mount -t tmpfs tmpfs /tmp/

  1. На сайте Микротика выбираем необходимый дистрибутив в формате RAW и копируем ссылку на него для последующей загрузки. На момент написания статьи стабильной версией является 7.1.3.

В командной строке переходим в смонтированную директорию и загружаем туда архив:

cd /tmp

wget https://download.mikrotik.com/routeros/7.1.3/chr-7.1.3.img.zip

Затем разархивируем

unzip chr-7.1.3.img.zip

  1. Необходимо определить имя диска.

fdisk -l

В нашем случае это диск /dev/vda

  1. Разворачиваем образ на диск.

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

  1. Проверяем, что теперь у нас два диска (vda1 и vda2)

fdisk -l | grep da

  1. Запускаем Midnight Commander (олдфаги вытирают слезы ностальгии о Norton Commander).

mc

  1. Монтируем развернутый образ

mount /dev/vda1 /media/vda1

  1. Переходим в папку /media/vda1 и создаем папку boot и внутри папку grub2. В результате должна получиться следующая структура папок:

/media/vda1/boot/grub2/

  1. Внутри получившейся папки запускаем текстовый редактор nano (в нижней строке Midnight Commander есть командная строка):

nano

В открывшийся текстовый файл копируем следующие три строчки:

setparams 'Grub 2'

set root=(hd0,msdos1)

chainloader +1

Нажимаем Ctrl+X, соглашаемся, что файл будет записан (Y + Enter) и даем название файлу grub2.cfg

В папке должен появиться файл с конфигурацией загрузчика grub2.cfg

Выходим из всех папок в Midnight Commander в корневой каталог и затем выходим из Midnight Commander.

  1. Записываем все данные из памяти и размонтируем образ

sync

umount /dev/vda1

  1. (не обязательно) Проверяем, что диск размонтирован. Запускаем Midnight Commander, переходим в папку /media/vda1. Она должна быть пустой.

  2. Закрываем Midnight Commander и через командную строку перезагружаем сервер:

echo 1 > /proc/sys/kernel/sysrq

echo b > /proc/sysrq-trigger

После выполнения второй команды связь оборвется.

  1. В веб-интерфейсе хостера перезагружаем сервер уже в нормальном режиме (т.к. после перезапуска он снова будет запущен в режиме восстановления):

Ждем, когда сервер закончит перезагружаться (вместо статуса Pending должен появиться статус Running).

  1. Там же в веб-интерфейсе открываем консоль и назначаем пароль.

  1. Осталось прописать сетевые настройки для последующего подключения через winbox. В командной строке после авторизации пишем (да, она показалась какой-то кривой и копипастить у меня не получилось - вероятно, придется писать ручками):

/ip address add address=YOUR.IP.ADD.RESS/MASK

Эти данные мы получили в пункте 3.

/ip route add gateway=YOUR.GATE.WAY.IP

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

Можно проверить в той же командной строке, прописался ли проброс маршрута командой ip route

Если настроено всё правильно, то отправив, к примеру, ping 8.8.8.8 мы увидим, что пакеты отправляются. Если они теряются, то что-то настроено неправильно.

  1. Всё, можно подключаться через winbox (ссылка на скачивание).

  2. (не обязательно, но очень рекомендуется) Так как практически вся настройка Микротика выполняется через winbox, то в целях безопасности лучше всё лишнее отключить.

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

Данная же статья написана лишь потому, что сам потратил много времени (по большей части в силу своей неопытности) и что бы другие могли пройти мимо всех граблей, по которым я в течении недели устраивал забеги.

Дополнительный дисклеймер:

Эту статью писал "по свежим следам", но для ее написания повторно проходить все шаги не готов. Поэтому, где-то могут быть неточности (но по идее не должно быть). Если что - пишите в комментарии вопросы, где случились "затыки". Постараюсь вспомнить и подсказать.

Всем удачи.

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


  1. m1skam
    21.03.2022 19:26

    Было бы здорово видеть описание проблемы которую вы хотели решить этим способом и почему выбрали именно его.


    1. Sarymian
      22.03.2022 01:38

      Это перевод. так что проблема "мало кармы", решение именно такое потому, что "этого тут ещё не было".

      На правах рекламы (хотя не аффилирован и материально не заинтересован) - для "простых граждан" сейчас вполне хватает Amnezia VPN (без ссылок, всё легко гуглится).


      1. green_worm Автор
        23.03.2022 16:53

        Спасибо за Ваше мнение. Но оно оказалось со старта неверным, т.к. поднимать "карму" тут мне нет необходимости. =) Просто потому, что мне не нужны "плюшки", которые она дает. На Хабре бываю не так часто теперь, и в основном по вопросам как раз инструкций.

        Если же интересует мотивация, для чего была написана статья, то отметил это в конце (для меня не было очевидным, что мотивация играет важную роль в прочтении статьи, но вероятно это было моей ошибкой).

        Данная же статья написана лишь потому, что сам потратил много времени (по большей части в силу своей неопытности) и что бы другие могли пройти мимо всех граблей, по которым я в течении недели устраивал забеги.

        Вопрос же о необходимости собственного VPN-сервера лично для меня это вопрос безопасности. Так как VPN и безопасность это отдельные и весьма обширные темы, здесь я решил, что будет лишним их описывать да и вряд ли это будет нести какую-то ценность сообществу.


    1. green_worm Автор
      23.03.2022 16:41

      Проблема в том, что был выбран и оплачен хостинг с головняком в виде PXE. Я понимаю, что абсолютно точно есть более простые пути. Но на просторах рунета не удалось найти, что с этим делать. Поэтому, решил поделиться.

      Очевидно, что для людей, кто более-менее "шарит" в никсах, это всё детский сад. Но для человека, который гуглил, чем отличается yum от apt-get, разобраться в вышеописанном оказалось не совсем очевидным.

      Что касается задачи, то на на базе CHR планируется сделать собственный VPN-сервер.


  1. oller
    21.03.2022 19:38
    +1

    Основная проблема CHR и микротик в целом в том, что он производится в Латвии, думаю в текущей ситуации вы почувствуете уровень приближения опасности, и в CHR банально могут отрубить активации(не так болезненно как циско или альтополло, но все же), про переодические взломы микротов вообще молчим


    1. lokkiuni
      21.03.2022 20:18
      +3

      А можно про периодические взломы? А то я пока кроме эксплуатации одних и тех же дыр, закрытых много лет назад, ничего больше не видел. Или вы про «я поставил пароль админ и меня сломали»?


    1. Phil_itch
      22.03.2022 08:59

      По секрету: если отзовут лицензию микротик chr (я в это верю с трудом, но, допустим), то все продолжит работать на том же уровне лицензии, только возможность обновления потеряется. Но это тоже можно обойти: сделав триал на левый аккаунт ;).


    1. haga777
      22.03.2022 11:48

      Port knoging решает проблемы ,но тогда, чтобы пользоватся тем или иным впн, например, вг , нужно постучпостучать


  1. algerka
    21.03.2022 19:42

    Не пойму, если это не анти-реклама хостинга, то зачем так все усложнять?
    Выбирайте VPS c Ubuntu 16 и далее достаточно всего несколько команд:
    sudo -i
    wget https://download.mikrotik.com/routeros/6.48.6/chr-6.48.6.img.zip -O chr.img.zip

    lsblk
    echo u > /proc/sysrq-trigger && gunzip -c chr.img.zip | dd of=/dev/vda
    или в зависимости что покажет lsblk
    echo u > /proc/sysrq-trigger && gunzip -c chr.img.zip | dd of=/dev/sda

    Выключаем/включаем сервер через панель управления, и логинимся через консоль.

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

    И, конечно, не забываем про лицензию, если не хотим иметь безумные задержки.


    1. mefer
      22.03.2022 11:51

      Вот тоже думаю. Сверх замороченный мануал. Совершенно бесполезный. Есть куча мануалов проще и на русском без перевода.


    1. green_worm Автор
      23.03.2022 16:33

      Действительно, насколько понял, в большинстве случаев так всё и происходит. Но в случае данного хостера всё оказалось чуть сложнее. Вероятно, всё дело в том, что загрузка происходит через PXE и так как CHR переделывает файловую систему, то крашится загрузчик grub2 и микротику не удается загрузиться (это насколько я смог понять, что происходило и на истину не претендую).

      А можно уточнить, что с лицензией? Насколько смог понять с вики, свободная лицензия режет скорость только для некоторых функций? Или я что-то недопонял?


  1. nikkadim
    21.03.2022 20:14

    но ведь WireGuard намного проще/быстрее?


    1. nevzorofff
      21.03.2022 21:51

      Проще то, что уже есть у клиентов. А у всех клиентов есть IPsec, и работает на уровне ядра.


      1. Evengard
        21.03.2022 21:55

        А ещё у 90% клиентов есть SSTP, который проходит сквозь почти любые фильтры и вообще не отличается от HTTPS для внешнего наблюдателя...

        Но там конечно всё не так просто. Хоть и не сверхсложно.


        1. nevzorofff
          21.03.2022 23:16

          В Андроиде нет, в айфонах тоже нет. Отккуда 90%?


          1. BigD
            21.03.2022 23:42
            +1

            Есть клиенты в сторе


            1. Evengard
              22.03.2022 00:19

              Для Андроида даже оупенсоурс есть.

              Даже для Айфона бесплатный есть.


      1. nikkadim
        21.03.2022 22:29

        начиная с Linux 5.6 он в ядре,  and backported to earlier Linux kernels in some Linux distributions.


    1. green_worm Автор
      23.03.2022 16:28

      Спасибо, погуглил, почитал про WireGuard. Штука интересная... но в моем случае необходимо было обкатанное решение с большим количеством информации по проблеме.

      Когда-нибудь обязательно попробую разобраться и с WireGuard... но пока что мне бы осилить L2TP через IPsec X-D


  1. erley
    21.03.2022 20:35
    +1

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

    Сам делал похожий деплой, только разворачивал FreeBSD и на geli-разделе (т.е. зашифрованный раздел), до кучи сверху сделал ZFS с компрессией. Таким образом наскрёб чуть больше по объёму диска (у хостера NVMe-массив, всё шустро работает) - использую VPS ещё и для хранения бэкапов.
    Для подготовки такой конфигурации собирал образ диска руками дома и заливал на виртуалку. Уже пару лет использую, полёт стабильный :-)


    1. green_worm Автор
      23.03.2022 16:25

      Большое спасибо. Вероятно, когда-нибудь озабочусь шифрованием диска. Вполне очевидно, что в случае хранения бэкапов оно необходимо. Но при развертывании собственного VPN-сервера не уверен, что в этом есть какая-то потребность (могу и ошибаться просто по неопытности в вопросе).

      Опять же, объем в 20 Гб смысла нет никакого компрессить (если я правильно понял идею после поверхностого гугленья непонятных слов =) ).


      1. erley
        23.03.2022 17:24

        Навскидку, удалось наскрести примерно 2-3 гига дискового пространства, но это конечно сильно зависит от данных которые будут храниться на VPS.

        Согласен, что это необязательно, я сделал просто чтобы выжать из этого хостинга по максимуму, возможно немного погорячился :-)

        А шифрование как-то помогает спокойнее относиться к данным, ведь там ssh-ключи, логи, всякие другие штуковины, зная которые можно вскрыть многое...


        1. green_worm Автор
          23.03.2022 17:31

          А 2-3 Гб с какого объема?

          Вероятно, после того, как разберусь с микротиком, подумаю о том, что бы добавить малюсенький раздел в качестве файлохранилки. В этом случае действительно шифрование будет не лишним.


          1. erley
            23.03.2022 17:44

            С 20 Гб свободен только 1, так что компрессия тут спасает, но мне больше места и не надо - бэкапы с ротацией и purge, объём более-менее постоянный.


            1. green_worm Автор
              23.03.2022 17:53
              +1

              Вернусь к комментарию для дальнейшего поиска информации когда озабочусь хранилкой. Большое спасибо за информацию.


  1. Olegun
    21.03.2022 21:59

    А чем платить-то за vpsserver.com?


    1. green_worm Автор
      23.03.2022 16:21

      Успел заплатить пока еще была возможность. Пока пытаюсь разобраться с настройкой микротика. Когда возникнет проблема - буду решать. К сожалению, на данный момент не знаю, в каком состоянии находится оплата их услуг. Могу предположить, что как и с любыми оплатами за границу.


  1. dinisoft
    22.03.2022 07:43

    Придирка конечно, но...

    Зачем до сих пор putty? Православный OpenSSH Client завезли в состав винды ещё в билде 1809, в более ранних, если есть кто такими пользуется, ставится одной командой.


    1. green_worm Автор
      23.03.2022 16:18

      Спасибо, про встроенный ssh не знал. Очевидно, по неопытности. =)

      Теперь буду в курсе... но чем не нравится putty? Не смотря на то, что это мой первый и единственный на данный момент ssh-клиент, каких-то серьезных минусов или неудобств не заметил.


  1. kurvimetr
    22.03.2022 08:19

    Хмм, а не проще сразу нарыть хостинг с установкой из iso? А на AWS есть free tier и готовая сборка chr в ami, правда, шестой версии, но ее можно обновить на семерку. Уже год таким образом работает личный vpn. Подвязал к микротику, прокинул маршрут и создал лист ресурсов, запросы на которые отправляются на маршрут до CHR. Хотя можно отсылать траффик и по другим критериям.


    1. green_worm Автор
      23.03.2022 16:16

      Скорее всего проще. Но по неопытности подписался на данный конкретный хостинг. А потом уже было интересно "допинать" проблему.


  1. matherfucker01
    22.03.2022 11:56
    -1

    Как-то мудрёно. 2 недели назад купил американский vps на justhost т.к. он принимает оплату в битках и накатил туда openvpn, все развертывание было гораздо проще и скорость в 25mbit/s в браузере оказалась приятной неожиданностью. А главное все удовольствие стоит 300р/месяц.


    1. fshp
      23.03.2022 04:34

      скорость в 25mbit/s в браузере

      У меня wg выдаёт 300 мегабит на роутере, где openvpn только те же 20 может. Рекомендую попробовать.


    1. green_worm Автор
      23.03.2022 16:14

      Как отметил, по ряду соображений (не претендую на то, что они абсолютно верны), была задача на азиатском хостинге развернуть VPS.


  1. hbrsck
    22.03.2022 12:01

    Прежде чем выбрать редакцию - v7.


  1. ppsascha
    23.03.2022 07:04

    Очень сложно. Из центоса chr ставится двумя командами. Зачем вот это вот все - непонятно.


    1. green_worm Автор
      23.03.2022 16:13

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


      1. ppsascha
        23.03.2022 16:21

        Я думал, это зависит от ОС, а не от хостера. Сам я два месяца назад решил уничтожить центос и перейти на CHR. У меня это свелось к 3 командам:

        # wget https://download.mikrotik.com/routeros/6.49.5/chr-6.49.5.img.zip

        # echo u > /proc/sysrq-trigger && gunzip -c chr-6.49.5.img.zip | dd of=/dev/vda

        # reboot


        1. green_worm Автор
          23.03.2022 17:29

          Насколько смог понять, зависит от первичного загрузчика через сетевую карту PXE. А это особенность хостера. В общем случае и (как уже потом узнал), в большинстве случаев действительно сводится всё к нескольким командам. Но так как общие случаи смысла нет описывать, то появилась вот такая статейка. =)


          1. ppsascha
            23.03.2022 21:26

            В любом случае не помешает, да :)