Данная статья рассчитана на пользователя, имеющего домашний роутер производства MikroTik, поэтому моменты, связанные непосредственно с компиляцией и сборкой, опущены, а примеры по MikroTik'у в картинках.
Итак, вкратце, постановка задачи следующая: поднять в качестве виртуальной машины (гостя) на MetaROUTER урезанную версию OpenWRT и уже на нем поднять связку DNS + DNSCrypt, которую использовать для шифрованного обмена данными с внешними DNS серверами.
Решить данную задачу стандартным способом, взяв исходники LEDE(OpenWRT) с поддержкой DNSCrypt, пропатчить
Решить задачу удалось методом последовательных приближений – взяв готовую, старую, но стабильную сборку OpenWRT АА 31411, часть пакетов доставить из репозитария, часть скомпилировать отдельно и немного доработать конфиги напильником.
Итак, берем готовый комплект (отдельно сборку OpenWRT можно взять здесь), разархивируем, по FTP или через буфер обмена (в проводнике скопировать, на роутере Files->Paste) заливаем на MikroTik файлы openwrt-mr-mips-rootfs-31411-basic.tar.gz и files.tar.gz
Создаем нового гостя, импортируя сборку в MetaROUTER (MetaROUTER->Import Image):
Добавляем новый eth интерфейс для гостя:
Чтобы максимально упростить запуск 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
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)
VecH
01.05.2018 05:14Зачем этот MetaROUTER добавили если они его не поддерживают должныи образом.
Так же как и OpenVPN, который вроде бы есть, но при использовании в качестве клиента Микротик, на сервере приходится вносить изменения из за которых отваливаются остальные уже существующие клиенты
vviz Автор
01.05.2018 08:44Думется, потому что, на данном изделии в качестве протокола используется TCP, который более «удобен» на нестабильных каналах. Кто мешает поднять два демона на разных протоколах и портах? У меня два — тот, что висит на TCP:443 я рекомендую тем пользователям, что используею канал WiFi/мобильных операторов для доступа к сети.
VecH
01.05.2018 09:50Да, у меня сейчас как раз два демона работают на одном и том же порту, только TCP и UDP, но это же все равно костыль ради одной овцы
AkaZLOY
01.05.2018 05:38Мне MetaRouter показался сверх нестабильной штукой, попытки поднять на нём OpenWRT с OpenVPN серверов периодически заканчивались зависанием виртуалки и ребутом Mikrotik'а.
vviz Автор
01.05.2018 08:47Да, к сожалению это так. Но, более менее приемлимой стабильности можно добится используя связку — стабильная сборка OpenWRT/Netwatch. Или решать задачу внешним ресурсом. Тут, как говорится — цена вопроса.
VecH
01.05.2018 09:42Если бы, у меня RB2011 тупо зависает целиком, а каждый раз перезагружать железяку в моем случае не подходит, дешевле вышло просто поставить какой то древний TP-Link рядом с OpenWRT прошивкой
vviz Автор
02.05.2018 16:37Еще раз повторюсь — нужно перебрать сборки инайти наиболее стабильнуюю При сборке большое кол-во патчей, и как следствие разная стабильность при работе. Сам искал готовые, компилировал из сырцов. По ссылке наиболее стабильная, ИМХО
fdroid
01.05.2018 06:35Вот сколько юзаю свой RB951Ui-2HnD, столько психую нередко, ища заковыристые мануалы на, казалось бы, тривиальные вещи типа проброса портов, настройки IPTV и т.д., которые в «гражданских» моделях делаются в одну галочку. ROS оставляет впечатление злой, щетинистой системы, в которой безграничный простор для случайного выстрела в ногу, и сидишь потом думаешь — как же так получилось-то, а?! Но вот когда приходится сталкиваться со специфическими потребностями — тут-то вам и пожалуйста. Только начал раздумывать, в связи с ковровыми блокировками IP о прозрачном методе их обхода, так тут вам пожалуйста — Настройка BGP для обхода блокировок, или «Как я перестал бояться и полюбил РКН» — настроил, работает. Начал курить тему о DNS Crypt и как бы это прикрутить посредством метароутера — вжух! — и уже статься на хабре на эту тему. Ну вот как тут переходить на бытовой роутер? Да, я в курсе про *WRT, использовал, вещь хорошая, по сравнению с штатными прошивками, но как-то всё разрозненно, не всегда стабильно и, по большей части, консольно — наглядные кнопочки в винбоксе не потыкать.
vviz Автор
01.05.2018 08:56Думается, потому что, Микротик что-то вроде швейцарского ножа (Cisco, например — шикарный кейс с кучей инструмента). Если у Асусов/Зикселей/Длинков/Нетгиров/ТПлинков либо есть нужная галочка, либо нет, то здесь ситуация несколько иная — скорее всего возможность реализовать нужную галочку самому есть, но нужно понимать сущность сетей и уметь выбрать нужный тулл. Я админ, много в пользовании всякого железа — основная линейка — Cisco (есть конечно GUI, но с консолью не сравнить). Так вот — когда мне в первый раз в руки попался Микротик с WinBox я просто пис*л кипятком от связки — цена/функционал/удобство настройки, ИМХО. Один режим «Safe Mode» чего стоит при удаленном управлении.
willyd
01.05.2018 09:02Вот думаю себе микротик взять. По цене вроде как TPlink выходит, но возможностей больше и нормальные апдейты. Насколько они стабильны?
Из специфического нужно поднять l2tp over ipsec с маршрутизацией только на определенные подсети через этот туннель и поднять отдельную гостевую wifi точку, которая будет только в интернет смотреть: изоляция от локальной сети и вышеописанного туннеля.kprohorow
01.05.2018 09:52Все это запросто делается. Апдейты стабильны. Главное читать ченжлог и иметь золотые руки (и не важно откуда они растут).
AkaZLOY
01.05.2018 13:24Это тривиальные задачи для Микротика.
В плане апдейтов, вы должны учитывать, что покупая ихнюю железку, срок который она будет поддерживаться = ~?. Я на своей памяти не встречал обновлений, которые ломают Микротик, но если есть утилита (NetInstall), вытягивающая из состояния кирпича, то прецеденты есть. Но даже в этом случае у Микротика есть несколько веток обновлений, в одной из них обновы выходят реже и добавляют новый функционал только после определённого времени.willyd
01.05.2018 14:32Это тривиальные задачи для Микротика.
Поэтому на него и смотрю. Маленький параноик во мне не любит, когда гости со своими девайсами висят у меня в сети.
Я немного криво написал. Интересовала стабильность самих роутеров.
Сейчас что-то пропали из продажи hp ac2, вот думаю заказывать ли hp ac lite или подождать пока подвезут.Andrusha
01.05.2018 19:57Стабильность отличная, но лайт, если хочется экспериментировать, я бы не стал брать — как минимум из-за 100 Мбит портов и малого объёма памяти. Имеет смысл выбирать между ac и ac?: у ac есть PoE-out и SFP, а также вайфай MIMO 3x3 против 2x2 у ac?; у ac? выше производительность на IPsec и на него можно поставить микротиковский сервер мониторинга The Dude.
willyd
02.05.2018 03:26Я как бэ работал с кисками и 64 для дома мне кажутся нормальным пределом… А вот 1 гб уже более интересен, хотя я второй день пытаюсь найти ему применение и не нахожу…
skymal4ik
01.05.2018 15:01Из своего опыта — никаких проблем с обновлениями, и по функционалу для дома за глаза. Говорю как админ, который немного в сети.
Из проблем что встречал — не любят PPPoE: сильно нагружаются и не очень стабильно держат линк. Как старые, так и новые.VecH
01.05.2018 15:04по части PPPoE, работаю две железки уже по несколько лет
RB2011UiAS-2HnD
CRS125-24G-1S
Обе подключены к провайдеру через PPPoE, проблем не было ни разу по вине микротика, да и нагрузки на железо не вижу на тарифах 80 мбит (выше попросту провайдер в местности не дает)
vviz Автор
02.05.2018 16:41С моей точки зрения — стабильны.
При этом я следую нескольким несложным правилам (по субъективным причинам):
Не ставить прошивку, если ей не исполнился месяц.
При подключении через Winbox стразу активировать Safe Mode
Не пользоваться в Winbox кнопкой Redo
kolu4iy
01.05.2018 15:16Zyxel из списка выкиньте: сетевой слой в mikrotik может и сильнее, но прикладной в zyxel не одолеть. Из коробки на нем есть чудесный пакетный менеджер с миллионами пакетов. Например, понадобилось мне подключиться к cisco vpn — пожалуйста, один пакет. Понадобилось сделать сканер на мфу hp сетевым — пожалуйста, вот вам sane daemon. Понадобился сервер openvpn — пожалуйста, стандартный пакет, без извращений с tcp/udp — делай как тебе надо, а не как решил производитель.
kolu4iy
01.05.2018 15:17Да, 2011 у меня тоже был. Сейчас он кормит дачу интернетом, а дома его уже не хватает.
MAXXL
01.05.2018 16:43Но бывают интересные глюки. Есть Zyxel Keenetic. Через него подключены к интернету небольшая сетка. На компах со свежей версией MacOS подключения по L2TP отключаются через секунд 30. С PPTP такого не наблюдалось. Компы с Win такого эффекта не дают.
fdroid
02.05.2018 04:23Могу констатировать, что в моём случае не взлетел метароутер. Вся любовь заканчивается после установки уже внутри openwrt dnscrypt, после команды
куищщеreboot сначала перезагружается openwrt, потом полностью виснет и перезагружается микротик.vviz Автор
02.05.2018 17:15К сожалению, при использовании консоли к OpenWRT команда reboot иногда вызывает перезагрузку Микротика, причина мне неизвестна, но по опыту — с OpenWRT случился частичный «крах». Могу посоветовать «убить» гостя и создать заново.
fdroid
02.05.2018 18:21«Убивал», пересоздавал — то же самое. Возможно, связано с версией ROS — у меня 6.42.1 (stable), у вас, похоже, более старая.
vviz Автор
02.05.2018 18:56В данный момент сижу на 6.41. Попробуйте вместо reboot сделать disable/enable гостя.
И обнаружил неоднозначность с стартовых скриптах — dnscrypt стартует раньше чем rngd. Попробуйте по новой скачать комплект и создать нового гостя (существующих лучше удалить).
vdemon
Интересно, название производителя роутера, Вы специально пишете с ошибкой или это случайная оплошность?
rionnagel
Не, это ок. Когда используешь микротики, то вероятно на конторе и сервера в стойке супермикро) Отсюда и взаимные ошибки в названиях. Это именно тот ценовой сегмент.