Главная » Хабрахабр » [Из песочницы] MicroTik & OpenWRT & DNSCrypt

[Из песочницы] MicroTik & OpenWRT & DNSCrypt

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

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

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

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

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

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

image

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

image

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

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

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 адрес Microtik)
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 ping statistics — 3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 12. 8. 816/15. 756/13. 22-1) to root…
Downloading openwrt.wk.cz/trunk/mr-mips/packages/libcap_2. 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. 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. 0. 6p5-1_mr-mips.ipk.
Configuring ntpdate.
Installing libsodium (1. Using latest.
Installing libpthread (0. 16-1) to root…
Multiple packages (libc and libc) providing same name marked HOLD or PREFER. 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. 9. 9. Using latest.
Configuring dnscrypt-proxy-resolvers.
Installing dnscrypt-proxy (1. Using latest.
Configuring dnscrypt-proxy.
Installing rng-tools (5-1) to root…
Multiple packages (libc and libc) providing same name marked HOLD or PREFER. 5-8) to root…
Multiple packages (libc and libc) providing same name marked HOLD or PREFER. 203. Using latest.
Configuring rng-tools.
24 Apr 11:22:24 ntpdate[2321]: adjust time server 91. 2 offset -0. 172. 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 моделях.


Оставить комментарий

Ваш email нигде не будет показан
Обязательные для заполнения поля помечены *

*

x

Ещё Hi-Tech Интересное!

[recovery mode] .NET гуру Дино Эспозито: «Не будь пассажиром поезда, идущего под откос»

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

Рассылай и властвуй: инструменты для создания и тестирования рассылки

Верстать и тестировать адаптивные письма с интерактивом (например, с формами и слайдерами) — боль в квадрате. Верстать электронные письма — это боль. В статье расскажу об email-фреймворках — MJML и Foundation for Emails — и моих любимых ресурсах для тестирования ...