Решение данного квеста навеяно этой статьей.

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

Итак, вкратце, постановка задачи следующая: поднять в качестве виртуальной машины (гостя) на MetaROUTER урезанную версию OpenWRT и уже на нем поднять связку DNS + DNSCrypt, которую использовать для шифрованного обмена данными с внешними DNS серверами.

Решить данную задачу стандартным способом, взяв исходники LEDE(OpenWRT) с поддержкой DNSCrypt, пропатчить KDE под FreeBSD под Mikrotik MetaROUTER и скомпилировать не удалось, поскольку либо ошибки при накладывании патча, либо при компиляции, либо сборка ведет себя не стабильно, ИМХО.

Решить задачу удалось методом последовательных приближений – взяв готовую, старую, но стабильную сборку OpenWRT АА 31411, часть пакетов доставить из репозитария, часть скомпилировать отдельно и немного доработать конфиги напильником.

Итак, берем готовый комплект (отдельно сборку OpenWRT можно взять здесь), разархивируем, по FTP или через буфер обмена (в проводнике скопировать, на роутере Files->Paste) заливаем на MikroTik файлы openwrt-mr-mips-rootfs-31411-basic.tar.gz и files.tar.gz

Создаем нового гостя, импортируя сборку в MetaROUTER (MetaROUTER->Import Image):

image

Добавляем новый eth интерфейс для гостя:

image

Чтобы максимально упростить запуск OpenWRT IP он получает по DHCP от MikroTik, для этого указываем добавлять гостевой инт. (у меня это vif19) в бридж (у меня это – bridge1), в котором также находится внутренний мастер инт. роутера (на моем примере немного иначе, но сути не меняет). Когда OpenWRT получит адрес, делаем его статическим в настройках DHCP сервера роутера и данный адрес указываем в настройках DHCP сервера как адрес DNS сервера для компьютеров (IP->DHCP server->Networks->DNS servers).

После создания гостя он в Disable. Делаем Enable, открываем Console (правой кнопкой на госте), ждем примерно 75 сек, периодически запуская ifconfig, чтобы отловить момент подъема сетевого интерфейса и получения адреса (примерно так):

root@metarouter:/# ifconfig
eth0      Link encap:Ethernet  HWaddr 02:8D:A2:1D:9D:73 
              inet addr:172.16.1.247  Bcast:172.16.1.255  Mask:255.255.255.255
…

Прежде чем двигаться дальше рекомендую потестить OpenWRT – подключиться телнетом, позапускать что-нибудь — ping, netstat и т.д. что бы убедится, что OpenWRT не падает в kernel panic.

Если все хорошо — приступаем к 'допиливанию' (в консоли):

root@metarouter:/# cd /tmp
root@metarouter:/tmp# wget ftp://admin:passwd@router/files.tar.gz (где, router - IP адрес Mikrotik)
root@metarouter:/tmp# tar xzf files.tar.gz
root@metarouter:/tmp cd files
root@metarouter:/tmp/files# ./install.sh

Результат работы install.sh (на отсутствие ошибок)
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: seq=0 ttl=56 time=13.374 ms
64 bytes from 8.8.8.8: seq=1 ttl=56 time=15.320 ms
64 bytes from 8.8.8.8: seq=2 ttl=56 time=12.756 ms

— 8.8.8.8 ping statistics — 3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 12.756/13.816/15.320 ms
Downloading openwrt.wk.cz/trunk/mr-mips/packages/Packages.gz.
Inflating openwrt.wk.cz/trunk/mr-mips/packages/Packages.gz.
Updated list of available packages in /var/opkg-lists/snapshots.
Installing libcap (2.22-1) to root…
Downloading openwrt.wk.cz/trunk/mr-mips/packages/libcap_2.22-1_mr-mips.ipk.
Configuring libcap.
Installing ntpdate (4.2.6p5-1) to root…
Downloading openwrt.wk.cz/trunk/mr-mips/packages/ntpdate_4.2.6p5-1_mr-mips.ipk.
Configuring ntpdate.
Installing libsodium (1.0.16-1) to root…
Multiple packages (libc and libc) providing same name marked HOLD or PREFER. Using latest.
Installing libpthread (0.9.33-104) to root…
Downloading openwrt.wk.cz/trunk/mr-mips/packages/libpthread_0.9.33-104_mr-mips.ipk.
Configuring libpthread.
Configuring libsodium.
Installing dnscrypt-proxy-resolvers (1.9.5+git-20171001-2d43be3-8) to root…
Multiple packages (libc and libc) providing same name marked HOLD or PREFER. Using latest.
Configuring dnscrypt-proxy-resolvers.
Installing dnscrypt-proxy (1.9.5-8) to root…
Multiple packages (libc and libc) providing same name marked HOLD or PREFER. Using latest.
Configuring dnscrypt-proxy.
Installing rng-tools (5-1) to root…
Multiple packages (libc and libc) providing same name marked HOLD or PREFER. Using latest.
Configuring rng-tools.
24 Apr 11:22:24 ntpdate[2321]: adjust time server 91.203.172.2 offset -0.010429 sec
cp: omitting directory 'etc/config'

Если ошибок не было перегружаем OpenWRT:

root@metarouter:/tmp/files# reboot

После перезагрузки OpenWRT (~75 сек) заходим в консоль и проверяем, что dnscrypt-proxy запустился:

root@metarouter:/# netstat -anp
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:5353          0.0.0.0:*               LISTEN      2150/dnscrypt-proxy
…

Проверяем работу DNSCrypt, например, что-нибудь разрезольвим:

root@metarouter:/# nslookup ya.ru
Server:    127.0.0.1
Address 1: 127.0.0.1 localhost

Name:      ya.ru
Address 1: 2a02:6b8::2:242 ya.ru
Address 2: 87.250.250.242 ya.ru

На компьютере перезапускаем сетевой инт., смотрим в его настройки, убеждаемся, что в качестве адреса DNS сервера получен адрес нашего OpenWRT.

Если это так, задачу можно считать завершенной.

Работоспособность решения проверялась на 951/2011 моделях.

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


  1. vdemon
    01.05.2018 00:26

    Интересно, название производителя роутера, Вы специально пишете с ошибкой или это случайная оплошность?


    1. rionnagel
      02.05.2018 16:41

      Не, это ок. Когда используешь микротики, то вероятно на конторе и сервера в стойке супермикро) Отсюда и взаимные ошибки в названиях. Это именно тот ценовой сегмент.


  1. VecH
    01.05.2018 05:14

    Зачем этот MetaROUTER добавили если они его не поддерживают должныи образом.


    Так же как и OpenVPN, который вроде бы есть, но при использовании в качестве клиента Микротик, на сервере приходится вносить изменения из за которых отваливаются остальные уже существующие клиенты


    1. vviz Автор
      01.05.2018 08:44

      Думется, потому что, на данном изделии в качестве протокола используется TCP, который более «удобен» на нестабильных каналах. Кто мешает поднять два демона на разных протоколах и портах? У меня два — тот, что висит на TCP:443 я рекомендую тем пользователям, что используею канал WiFi/мобильных операторов для доступа к сети.


      1. VecH
        01.05.2018 09:50

        Да, у меня сейчас как раз два демона работают на одном и том же порту, только TCP и UDP, но это же все равно костыль ради одной овцы


  1. AkaZLOY
    01.05.2018 05:38

    Мне MetaRouter показался сверх нестабильной штукой, попытки поднять на нём OpenWRT с OpenVPN серверов периодически заканчивались зависанием виртуалки и ребутом Mikrotik'а.


    1. vviz Автор
      01.05.2018 08:47

      Да, к сожалению это так. Но, более менее приемлимой стабильности можно добится используя связку — стабильная сборка OpenWRT/Netwatch. Или решать задачу внешним ресурсом. Тут, как говорится — цена вопроса.


      1. VecH
        01.05.2018 09:42

        Если бы, у меня RB2011 тупо зависает целиком, а каждый раз перезагружать железяку в моем случае не подходит, дешевле вышло просто поставить какой то древний TP-Link рядом с OpenWRT прошивкой


        1. vviz Автор
          02.05.2018 16:37

          Еще раз повторюсь — нужно перебрать сборки инайти наиболее стабильнуюю При сборке большое кол-во патчей, и как следствие разная стабильность при работе. Сам искал готовые, компилировал из сырцов. По ссылке наиболее стабильная, ИМХО


  1. fdroid
    01.05.2018 06:35

    Вот сколько юзаю свой RB951Ui-2HnD, столько психую нередко, ища заковыристые мануалы на, казалось бы, тривиальные вещи типа проброса портов, настройки IPTV и т.д., которые в «гражданских» моделях делаются в одну галочку. ROS оставляет впечатление злой, щетинистой системы, в которой безграничный простор для случайного выстрела в ногу, и сидишь потом думаешь — как же так получилось-то, а?! Но вот когда приходится сталкиваться со специфическими потребностями — тут-то вам и пожалуйста. Только начал раздумывать, в связи с ковровыми блокировками IP о прозрачном методе их обхода, так тут вам пожалуйста — Настройка BGP для обхода блокировок, или «Как я перестал бояться и полюбил РКН» — настроил, работает. Начал курить тему о DNS Crypt и как бы это прикрутить посредством метароутера — вжух! — и уже статься на хабре на эту тему. Ну вот как тут переходить на бытовой роутер? Да, я в курсе про *WRT, использовал, вещь хорошая, по сравнению с штатными прошивками, но как-то всё разрозненно, не всегда стабильно и, по большей части, консольно — наглядные кнопочки в винбоксе не потыкать.


    1. vviz Автор
      01.05.2018 08:56

      Думается, потому что, Микротик что-то вроде швейцарского ножа (Cisco, например — шикарный кейс с кучей инструмента). Если у Асусов/Зикселей/Длинков/Нетгиров/ТПлинков либо есть нужная галочка, либо нет, то здесь ситуация несколько иная — скорее всего возможность реализовать нужную галочку самому есть, но нужно понимать сущность сетей и уметь выбрать нужный тулл. Я админ, много в пользовании всякого железа — основная линейка — Cisco (есть конечно GUI, но с консолью не сравнить). Так вот — когда мне в первый раз в руки попался Микротик с WinBox я просто пис*л кипятком от связки — цена/функционал/удобство настройки, ИМХО. Один режим «Safe Mode» чего стоит при удаленном управлении.


      1. willyd
        01.05.2018 09:02

        Вот думаю себе микротик взять. По цене вроде как TPlink выходит, но возможностей больше и нормальные апдейты. Насколько они стабильны?
        Из специфического нужно поднять l2tp over ipsec с маршрутизацией только на определенные подсети через этот туннель и поднять отдельную гостевую wifi точку, которая будет только в интернет смотреть: изоляция от локальной сети и вышеописанного туннеля.


        1. kprohorow
          01.05.2018 09:52

          Все это запросто делается. Апдейты стабильны. Главное читать ченжлог и иметь золотые руки (и не важно откуда они растут).


        1. AkaZLOY
          01.05.2018 13:24

          Это тривиальные задачи для Микротика.
          В плане апдейтов, вы должны учитывать, что покупая ихнюю железку, срок который она будет поддерживаться = ~?. Я на своей памяти не встречал обновлений, которые ломают Микротик, но если есть утилита (NetInstall), вытягивающая из состояния кирпича, то прецеденты есть. Но даже в этом случае у Микротика есть несколько веток обновлений, в одной из них обновы выходят реже и добавляют новый функционал только после определённого времени.


          1. willyd
            01.05.2018 14:32

            Это тривиальные задачи для Микротика.
            Поэтому на него и смотрю. Маленький параноик во мне не любит, когда гости со своими девайсами висят у меня в сети.
            Я немного криво написал. Интересовала стабильность самих роутеров.
            Сейчас что-то пропали из продажи hp ac2, вот думаю заказывать ли hp ac lite или подождать пока подвезут.


            1. AkaZLOY
              01.05.2018 15:43

              Я бы взял обычный hAp Ac, т.к. hAp Ac^2 это улучшенная вариация hAp Ac Lite.


              1. Andrusha
                01.05.2018 19:49

                hAP ac? — это отдельная железка на ARM, а не на MIPS. Её как бы позиционируют между ac lite и ac, но по производительности она точно не хуже "старшей".


            1. Andrusha
              01.05.2018 19:57

              Стабильность отличная, но лайт, если хочется экспериментировать, я бы не стал брать — как минимум из-за 100 Мбит портов и малого объёма памяти. Имеет смысл выбирать между ac и ac?: у ac есть PoE-out и SFP, а также вайфай MIMO 3x3 против 2x2 у ac?; у ac? выше производительность на IPsec и на него можно поставить микротиковский сервер мониторинга The Dude.


              1. willyd
                02.05.2018 03:26

                Я как бэ работал с кисками и 64 для дома мне кажутся нормальным пределом… А вот 1 гб уже более интересен, хотя я второй день пытаюсь найти ему применение и не нахожу…


          1. avelor
            01.05.2018 21:54

            netinstall спасает любителей RC-прошивок:)


            1. willyd
              02.05.2018 03:32

              null modem из загрузчика решит все.
              главное в него попасть… но думаю, что это решается цисковской консолью.


        1. skymal4ik
          01.05.2018 15:01

          Из своего опыта — никаких проблем с обновлениями, и по функционалу для дома за глаза. Говорю как админ, который немного в сети.

          Из проблем что встречал — не любят PPPoE: сильно нагружаются и не очень стабильно держат линк. Как старые, так и новые.


          1. VecH
            01.05.2018 15:04

            по части PPPoE, работаю две железки уже по несколько лет
            RB2011UiAS-2HnD
            CRS125-24G-1S
            Обе подключены к провайдеру через PPPoE, проблем не было ни разу по вине микротика, да и нагрузки на железо не вижу на тарифах 80 мбит (выше попросту провайдер в местности не дает)


            1. willyd
              02.05.2018 04:00

              deleted


        1. vviz Автор
          02.05.2018 16:41

          С моей точки зрения — стабильны.
          При этом я следую нескольким несложным правилам (по субъективным причинам):
          Не ставить прошивку, если ей не исполнился месяц.
          При подключении через Winbox стразу активировать Safe Mode
          Не пользоваться в Winbox кнопкой Redo


      1. kolu4iy
        01.05.2018 15:16

        Zyxel из списка выкиньте: сетевой слой в mikrotik может и сильнее, но прикладной в zyxel не одолеть. Из коробки на нем есть чудесный пакетный менеджер с миллионами пакетов. Например, понадобилось мне подключиться к cisco vpn — пожалуйста, один пакет. Понадобилось сделать сканер на мфу hp сетевым — пожалуйста, вот вам sane daemon. Понадобился сервер openvpn — пожалуйста, стандартный пакет, без извращений с tcp/udp — делай как тебе надо, а не как решил производитель.


        1. kolu4iy
          01.05.2018 15:17

          Да, 2011 у меня тоже был. Сейчас он кормит дачу интернетом, а дома его уже не хватает.


        1. MAXXL
          01.05.2018 16:43

          Но бывают интересные глюки. Есть Zyxel Keenetic. Через него подключены к интернету небольшая сетка. На компах со свежей версией MacOS подключения по L2TP отключаются через секунд 30. С PPTP такого не наблюдалось. Компы с Win такого эффекта не дают.


  1. kolu4iy
    01.05.2018 16:51

    Вы же знаете, что нет ничего идеального )


  1. fdroid
    02.05.2018 04:23

    Могу констатировать, что в моём случае не взлетел метароутер. Вся любовь заканчивается после установки уже внутри openwrt dnscrypt, после команды куищще reboot сначала перезагружается openwrt, потом полностью виснет и перезагружается микротик.


    1. vviz Автор
      02.05.2018 17:15

      К сожалению, при использовании консоли к OpenWRT команда reboot иногда вызывает перезагрузку Микротика, причина мне неизвестна, но по опыту — с OpenWRT случился частичный «крах». Могу посоветовать «убить» гостя и создать заново.


      1. fdroid
        02.05.2018 18:21

        «Убивал», пересоздавал — то же самое. Возможно, связано с версией ROS — у меня 6.42.1 (stable), у вас, похоже, более старая.


        1. vviz Автор
          02.05.2018 18:56

          В данный момент сижу на 6.41. Попробуйте вместо reboot сделать disable/enable гостя.
          И обнаружил неоднозначность с стартовых скриптах — dnscrypt стартует раньше чем rngd. Попробуйте по новой скачать комплект и создать нового гостя (существующих лучше удалить).