Русский
Русский
English
Статистика
Реклама

Dnscrypt-proxy

Пошаговая стратегия или установка Entware и DNSCrypt на модемы Zyxel Keenetic

10.05.2021 02:20:41 | Автор: admin

Что понадобится и предварительные действия

  • ZyXEL Keenetic с USB-портом, любой кроме моделей 4GII/III - одна штука

  • Usb Flash - одна штука

Флешка может быть любой. В моем случае это поддельный Kingston, в котором из 8Гб реально нашлось только 256Мб

Проверяем версию прошивки в дешбоарде. Для установки Entware нужна версия прошивки NDMS v2.07 (2.08) и выше. Если у вас она такова - сразу переходите к пункту 2. Установка Entware

Мой опытный образец Zyxel Keenetic DSL с прошивкой 2.05. Без повышения версии прошивки установка Entware на нём преждевременно прекращается с сообщением Opkg::Manager: /opt/etc/init.d/doinstall: FATAL: kernel too old.

Поэтому

  1. Обновляем прошивку на версию 2.11 из канала legacy

    1. Соединяемся с роутером
      telnet your_router_ip
      вводим логин/пароль админ юзера

    2. Переключаем канал на legacy:
      components sync legacy - для прошивок до 2.06
      components list legacy - для прошивок 2.06 и выше

    3. В веб-интерфейсе идем System -> Update
      Проверяем, что в поле "Use" появилось значение "Debug version". Жмем кнопку "Update" и ждём.

    4. После установки модем ребутнётся. Проверяем в дешбоарде версию.
      NDMS version: 2.11.D.9.0-1 - Значит, всё получилось.

  2. Установка Entware

    1. Качаем установщик для Keenetic DSL, LTE, VOX, DSL (KN-2010), DUO (KN-2110) ( http://bin.entware.net/mipssf-k3.4/installer/mips-installer.tar.gz)
      для остальных интернет-центров Keenetic - mipsel-installer.tar.gz

    2. Берём любую чистую флешку. Я форматировал в FAT32. У флешки обязательно должна быть метка тома (любая, кроме пустой). Вставляем её в роутер.

    3. Проверяем что в System->Update установлены компоненты FTP и OPKG. Если нет - устанавливаем

    4. Если у вас еще не настроен FTP, то заходим в Applications->FTP, включаем FTP сервер, разрешаем анонимный доступ (или не разрешаем, тогда нужно указать, каким пользователям роутера разрешено пользоваться FTP)

    5. Заходим по FTP на роутер (анонимно или нет - см п 2.4), далее в каталог с именем метки нашей флешки (cм п 2.2)

    6. Создаём каталог install и заходим в него

    7. Копируем установщик из п 2.1 в каталог install

    8. Заходим в Applications->OPKG, Ставим галку "Enable", в "Use external storage" выбираем метку нашей флешки, жмём кнопку "Apply"

    9. Переходим в System->Log, ждём сообщения
      "installer[5/5] Установка системы пакетов "Entware" завершена! Не забудьте сменить пароль и номер порта!"
      Теперь можно логиниться на порт 22 или 222 с логином root и паролем keenetic
      Не забываем сменить пароль и номер порта ;)
      порт - в файле /opt/etc/config/dropbear.conf
      пароль - командой passwd

    10. Если FTP сервер не нужен - не забываем его выключить.
      Ну, по крайней мере, закрыть анонимный доступ :)

  3. Установка DNSCrypt2
    Проверяем DNS на утечку перед установкой (в данном случае утечка - это когда ваш браузер лазит к вашему провайдеру чтобы резолвить DNS. И это пока еще нормально, но скоро мы от этого вылечимся)
    https://dnsleaktest.com/
    https://browserleaks.com/dns
    https://whatleaks.com/
    или аналогичные

    1. Заходим в Entware по SSH

    2. Устанавливаем DNSCrypt2
      opkg update
      opkg install dnscrypt-proxy2

    3. Устанавливаем немного дополнительных пакетов
      opkg install ca-certificates cron iptables

    4. Редактируем /opt/etc/dnscrypt-proxy.toml
      нас интересует строка
      listen_addresses = ['127.0.0.1:53']
      разрешаем слушать любые адреса:
      listen_addresses = ['0.0.0.0:53']

    5. Стартуем DNSCrypt2
      /opt/etc/init.d/S09dnscrypt-proxy2 start

    6. Подменяем DNS резолвер прошивки
      ВНИМАНИЕ! Здесь мы подключаемся к роутеру через telnet (не в Entware по SSH) - см п 1.1 и там выполняем
      opkg dns-override
      system configuration save

    7. Идём в вебморду Home Network -> Segments
      Ищем сегмент со своим Wifi подключением, редактируем в секцию DHCP server: прописываем в
      DNS 1 IP роутера
      DNS 2 оставляем пустым

    8. Идем в вебморду Internet -> Connections Выбираем своё исходящее подключение: прописываем в
      DNS 1 IP роутера
      DNS 2 и 3 оставляем пустыми

    9. Идем в вебморду Internet -> Extra Проверяем, чтобы в секции DNS servers не было никаких других серверов кроме IP нашего роутера. Если есть - удаляем.

    10. Переподключаемся к роутеру (по WiFi или проводу) Заодно перепроверяем настройки подключения к роутеру своих устройств, чтобы в них не было принудительно установленных DNS-серверов

    11. Здесь всё (почти работает). Но утечки всё еще возможны. Поэтому мы сейчас запретим весь трафик, который уходит наружу через 53 порт.
      Для чего логинимся в Entware по ssh и создаем скрипт
      /opt/etc/ndm/netfilter.d/10-ClientDNS-Redirect.sh

      ВНИМАНИЕ!
      Замените 10.1.1.1 на IP вашего роутера

      #!/bin/sh
      [ "$type" == "ip6tables" ] && exit 0
      [ "$table" != "nat" ] && exit 0
      [ -z "$(iptables -nvL -t nat | grep "to:10.1.1.1:53")" ] && iptables -t nat -I PREROUTING -p udp --dport 53 -j DNAT --to-destination 10.1.1.1:53
      exit 0

      Это можно сделать, например, вот так:

      ВНИМАНИЕ! Замените 10.1.1.1 на IP вашего роутера

      echo -e '#!/bin/sh\n[ "$type" == "ip6tables" ] && exit 0\n[ "$table" != "nat" ] && exit 0\n[ -z "$(iptables -nvL -t nat | grep "to:10.1.1.1:53")" ] && iptables -t nat -I PREROUTING -p udp --dport 53 -j DNAT --to-destination 10.1.1.1:53\nexit 0' >> /opt/etc/ndm/netfilter.d/10-ClientDNS-Redirect.sh

    12. Делаем 10-ClientDNS-Redirect.sh исполняемым:
      chmod +x /opt/etc/ndm/netfilter.d/10-ClientDNS-Redirect.sh

    13. Ребутим роутер (без этого пункта https://browserleaks.com/dns периодически светил мои родные DNS сервера)

    14. Проверяемся на утечки.

Отныне используемые DNS сервера будут находится рандомно по всему миру, а трафик к ним будет шифроваться.

Ссылки по теме

https://forum.keenetic.net/announcement/5-где-взять-тестовые-сборки/ https://help.keenetic.com/hc/ru/articles/115002060049
https://forum.keenetic.net/topic/4299-entware/?do=findComment&comment=50640
https://forum.keenetic.net/topic/4755-защищаем-dns-запросы-с-помощью-dnscrypt-proxy2-бонусом-блокировка-рекламы/

Подробнее..

Дружим Docker и dnscrypt-proxy

30.07.2020 00:17:36 | Автор: admin

DNSCrypt довольно популярный вариант защиты обычно не шифруемого DNS-трафика от внешних лиц. Клиентский резолвер dnscrypt-proxy поддерживает в том числе протокол DNS-over-HTTPS, позволяя разрешать доменные имена через DoH.


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


TL;DR поста
  1. Создаем dummy-адаптер, вешаем ему IP из частного диапазона.
  2. Заставляем dnscrypt-proxy слушать на этом IP, меняем настройки DNS соответственно.
  3. PROFIT

Суть проблемы


Для настройки DNS Docker копирует настройки DNS с хоста, копируя файл /etc/resolv.conf с хостовой машины.


При использовании dnscrypt-proxy и других кастомных резолверов обычно их запускают на 127.0.0.1:53, записывая этот адрес как nameserver в resolv.conf, эта же настройка приходит контейнеру. Так как контейнер находится в другом сетевом пространстве имен, 127.0.0.1 у хоста и контейнера разные.


Как исправить


Самым простым вариантом решения является запуск dnscrypt-proxy на публичном адресе хоста и добавление этого же адреса в /etc/resolv.conf. Однако в таком случае мы выставляем в сеть DNS-резолвер, чего хочется избежать.


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


Создаем адаптер


Если в вашей системе не загружен модуль ядра dummy (lsmod | grep dummy не показывает этот модуль), загрузите его и включите его загрузку на постоянной основе:


# modprobe dummy# echo "dummy" >> /etc/modules-load.d/net_dummy.conf

Для того, чтобы создать и настроить dummy-адаптер, в современной Linux-системе с iproute2 достаточно выполнить две следующие команды:


# ip link add type dummy name dummy0# ip addr add dev dummy0 10.0.197.1/24

Создание адаптера для его использования на постоянной основе будет разниться в зависимости от используемого вами сетевого конфигуратора. Например, для systemd-networkd понадобятся два конфигурационных файла:


/etc/systemd/network/50-dummy0.netdev:


[NetDev]Name=dummy0Kind=dummyDescription=Dummy network for dnscrypt-proxy

/etc/systemd/network/50-dummy0.network:


[Match]Name=dummy0[Network]DHCP=noAddress=10.0.197.1/24DefaultRouteOnDevice=false

Изменяем настройки DNS


Для того, чтобы заставить dnscrypt-proxy слушать на новом адресе, потребуется отредактировать /etc/dnscrypt-proxy/dnscrypt-proxy.toml. Отредактируем директиву listen_addresses и приведем ее к следующему виду:


listen_addresses = ['127.0.0.1:53', '[::1]:53', '10.0.197.1:53']

Перезапустим dnscrypt-proxy, после чего в /etc/resolv.conf (либо где в вашем сетевом конфигураторе находятся настройки DNS) оставим в списке серверов имен один: nameserver 10.0.197.1.


Проверяем


Запускаем контейнер:


% docker run -it --rm alpine:3.12# cat /etc/resolv.confnameserver 10.0.197.1# ping -c 1 ya.ru

Дополнительно


Если вы используете файрволл, разрешите входящий трафик на 10.0.197.1:53 из подсетей, из которых Docker выдает адреса контейнерам.


В случае, если вы используете в качестве локального резолвера systemd-resolved, направленный на dnscrypt-proxy (например, для кэширования или для использования разных DNS-серверов для разных интерфейсов), тот факт, что systemd-resolved слушает исключительно на 127.0.0.53 и не позволяет изменение этого адреса, вас смущать не должен: Docker определяет использование systemd-resolved и вместо содержимого /etc/resolv.conf копирует содержимое /run/systemd/resolve/resolv.conf, генерируемое из настроек systemd-resolved.

Подробнее..

Категории

Последние комментарии

  • Имя: Макс
    24.08.2022 | 11:28
    Я разраб в IT компании, работаю на арбитражную команду. Мы работаем с приламы и сайтами, при работе замечаются постоянные баны и лаги. Пацаны посоветовали сервис по анализу исходного кода,https://app Подробнее..
  • Имя: 9055410337
    20.08.2022 | 17:41
    поможем пишите в телеграм Подробнее..
  • Имя: sabbat
    17.08.2022 | 20:42
    Охренеть.. это просто шикарная статья, феноменально круто. Большое спасибо за разбор! Надеюсь как-нибудь с тобой связаться для обсуждений чего-либо) Подробнее..
  • Имя: Мария
    09.08.2022 | 14:44
    Добрый день. Если обладаете такой информацией, то подскажите, пожалуйста, где можно найти много-много материала по Yggdrasil и его уязвимостях для написания диплома? Благодарю. Подробнее..
© 2006-2024, personeltest.ru