- PVSM.RU - https://www.pvsm.ru -
Решение данного квеста навеяно этой статьей [1].
Данная статья рассчитана на пользователя, имеющего домашний роутер производства MicroTik, поэтому моменты, связанные непосредственно с компиляцией и сборкой, опущены, а примеры по MicroTik'у в картинках.
Итак, вкратце, постановка задачи следующая: поднять в качестве виртуальной машины (гостя) на MetaROUTER урезанную версию OpenWRT и уже на нем поднять связку DNS + DNSCrypt, которую использовать для шифрованного обмена данными с внешними DNS серверами.
Решить данную задачу стандартным способом, взяв исходники LEDE(OpenWRT) с поддержкой DNSCrypt, пропатчить KDE под FreeBSD под Microtik MetaROUTER и скомпилировать не удалось, поскольку либо ошибки при накладывании патча, либо при компиляции, либо сборка ведет себя не стабильно, ИМХО.
Решить задачу удалось методом последовательных приближений – взяв готовую, старую, но стабильную сборку OpenWRT АА 31411, часть пакетов доставить из репозитария, часть скомпилировать отдельно и немного доработать конфиги напильником.
Итак, берем готовый комплект [2] (отдельно сборку OpenWRT можно взять здесь [3]), разархивируем, по FTP или через буфер обмена (в проводнике скопировать, на роутере Files->Paste) заливаем на MicroTik файлы openwrt-mr-mips-rootfs-31411-basic.tar.gz и files.tar.gz
Создаем нового гостя, импортируя сборку в MetaROUTER (MetaROUTER->Import Image):
Добавляем новый eth интерфейс для гостя:
Чтобы максимально упростить запуск OpenWRT IP он получает по DHCP от MicroTik, для этого указываем добавлять гостевой инт. (у меня это 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 адрес Microtik)
root@metarouter:/tmp# tar xzf files.tar.gz
root@metarouter:/tmp cd files
root@metarouter:/tmp/files# ./install.sh
— 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 [4].
Inflating openwrt.wk.cz/trunk/mr-mips/packages/Packages.gz [4].
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 [5].
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 [6].
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 [7].
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 моделях.
Автор: vviz
Источник [8]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/informatsionnaya-bezopasnost/279193
Ссылки в тексте:
[1] статьей: https://habr.com/post/353878/
[2] комплект: https://cloud.mail.ru/public/9gtn/wx1QC72Nm
[3] здесь: http://openwrt.wk.cz/trunk/mr-mips/
[4] openwrt.wk.cz/trunk/mr-mips/packages/Packages.gz: http://openwrt.wk.cz/trunk/mr-mips/packages/Packages.gz
[5] openwrt.wk.cz/trunk/mr-mips/packages/libcap_2.22-1_mr-mips.ipk: http://openwrt.wk.cz/trunk/mr-mips/packages/libcap_2.22-1_mr-mips.ipk
[6] openwrt.wk.cz/trunk/mr-mips/packages/ntpdate_4.2.6p5-1_mr-mips.ipk: http://openwrt.wk.cz/trunk/mr-mips/packages/ntpdate_4.2.6p5-1_mr-mips.ipk
[7] openwrt.wk.cz/trunk/mr-mips/packages/libpthread_0.9.33-104_mr-mips.ipk: http://openwrt.wk.cz/trunk/mr-mips/packages/libpthread_0.9.33-104_mr-mips.ipk
[8] Источник: https://habr.com/post/354710/?utm_source=habrahabr&utm_medium=rss&utm_campaign=354710
Нажмите здесь для печати.