Затрекай меня полностью

 Публичный пост
6 августа 2022  2320

После очередного вируса, словленного моими родителями на их компьютер, я задумался про фильтр, который бы был доступен везде и при этом не давал открывать подозрительные ссылки ни моей девушке, ни моим родителям. О итоговом решении, которым мы пользуемся сейчас, и паре промежуточных вариантов я хочу рассказать.

DNS себе заблокируй!

Мягким способом контроля за тем, чтобы твои близкие не открыли фишинговую ссылку или не зашли на подозрительный веб сайт, являются контроль за DNS запросами и их фильтрация. Именно это предлагают под оболочкой фильтров для детей от опасного контента. Какой DNS используется у вас сейчас, вы можете узнать тут

Есть несколько решений, которые можно использовать для DNS-фильтрации: как платные так и бесплатные. Но для вторых понадобится уже выделенный сервер. И самое главное, чтобы что-то блокировать, нужно вначале понять что. И тут мы окунаемся в мир листов блокировок. Это отдельный мир, где неравнодушные составляют списки доменов или правил для их блокировок. Такие как все домены отдельных назойливых компаний , или даже список порно сайтов

Первые версии

Вначале я просто поднял один из DNS серверов в облаке и написал скрипт, чтобы он выкачивал один из блок листов и добавлял в правила фильтрации так, чтобы на адреса в листе отдавался не IP адрес, а 0.0.0.0. Работало стабильно, но гибкости не хватало, да и было в виде открытого всему миру публичного DNS сервера.

Потом я поставил PiHole (пожалуй, самое известное решение для этой задачи) и получил больше гибкости в настройке фильтров. Но мне хотелось приватности, чтобы перехватить мои запросы было сложнее. Так запросы от домашних роутеров к серверу были защищены VPN туннелем, а запросы от PiHole до публичных DNS серверов были открыты. Поэтому я написал docker-compose с тем, чтобы PiHole ходил в публичные DNS тоже по защищенным протоколам. Итоговое решение можно посмотреть тут. Какое-то время оно меня устраивало, но все же это сложная связка из нескольких сервисов, а хотелось все в одном. И такой я нашел.

Швейцарский нож

Мой выбор пал на AdguardHome Это функционально более богатое решение, чем PiHole. Оно не только умеет обращаться к другим DNS серверам по всем возможным протоколам

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

Более того AdguardHome позволил настроить DNS на мобильных устройствах благодаря поддержке DNS over HTTPS протокола. В итоге, путешествуя по миру, я всегда уверен, что мобильный оператор не знает какие сайты я посещаю.

Сервисы аналоги

Есть несколько сервисов, которые вам за деньги (или почти бесплатно) сделают аналогичное моему решение. Только имейте ввиду, что информацию обо всех адресах вы отдаете этим сервисам. И они, ровно как VPN провайдеры, видят все, что вы посещаете.

  • Adguard - компания разработчик, которая создала сервис, где вы можете настроить свой фильтр и пользоваться этим бесплатно до определенного объема запросов
  • NextDNS - это аналог решения от Adguard c похожими тарифами и достаточно большим выбором блок листов
  • RethinkDNS - запуск DNS на Serverless архитектуре. Так как есть лимит беспатного обслуживания, то я бы рассматривал его как тоже платное решение.

Как это носить?

Windows/Mac/Linux в обычных компьютерах задать обычный DNS сервер достаточно легко. Есть масса инструкций в интернете, например вот Сложнее, когда нужно задать DNS с шифрованием по типу DNS over HTTPS.

IOS/Android

  • Для IOS устройств поможет тот же генератор, что и для Mac
  • Android с 9-ой версии умеет в DNS over TLS и с 11 в DNS over HTTPS из коробки

IoT/Routers

  • Чтобы члены "Дом дурачок" ходили в интернет, используя фильтрацию, и не стучали о тебе разработчику, нужно перехватывать все запросы к стандартным портам 53 TCP/UDP и направлять их на свой сервер. В Mokrotik это делается вот так

P.S.

На нынешнем сервере больше половины запросов отфильтровываются. По топам отфильрованных запросов на моем сервере могу сказать, что в болшей степени сейчас там разного рода трекеры, а не какие-то фишинговые ссылки или подозрительные веб сайты.

Поэтому и информационный след в интернете мои близкие оставляют намного меньший, чем могли бы 😎

Полезные ссылки

10 комментариев 👇

В копилочку: есть еще проект Blocky https://github.com/0xERR0R/blocky
Сам долгое время сидел на Pi-Hole, но с годик назад перешел на blocky. Много что умеет, легкий и быстрый.

  Развернуть 1 комментарий

@rtzra, спасибо за наводку, доступные из коробки Prometheus метрики это плюс по сравнению с AdguardHome так что я посмотрю на blocky обязательтно. Я тоже уходил на AdguardHome в том числе из-за его легкости и функционала, но вот отсутствие интерфейса это минус для меня, так как иногда приходится искать по какой причине сейчас не открывается какая-нибудь ссылка. Чтобы потом добавить нужный домен в белый список.

  Развернуть 1 комментарий

@AlexeyBelaytzev, меня вначале тоже смутило что нет веб-интерфейса, но по факту он совсем и не нужен. Графики о состоянии можно смотреть через Grafana: https://grafana.com/grafana/dashboards/13768
А логи пишутся в лог-файл, его можно парсить по какому-то условию.

  Развернуть 1 комментарий

@rtzra, согласен можно, но в UI это делать приятнее все же)

  Развернуть 1 комментарий

@rtzra, К своему стыду я не знал что Prometheus метрики есть и у AdguardHome к тому же есть мобильное приложение и пару интеграций с прошивками роутеров и умного дома) https://github.com/AdguardTeam/AdGuardHome/blob/9b3adac1451aa271605a6d7a174b796f0e0990e6/README.md#projects-that-use-adguard-home

  Развернуть 1 комментарий

Спасибо за пост.

Чтобы члены "Дом дурачок" ходили в интернет, используя фильтрацию, и не стучали о тебе разработчику, нужно перехватывать все запросы к стандартным портам 53 TCP/UDP и направлять их на свой сервер.

Почему бы просто не раздавать клиентам в локальной сети IP adguard как сервер dns через dhcp? Кмк получается чуть проще.

  Развернуть 1 комментарий

@prianichnikov, значительно проще, но у некоторых ДНС зашит и они игнорируют то, что раздали по DHCP.

  Развернуть 1 комментарий

@TiraelSedai прав, DNS зашиты, в том же chromecast зашиты Google Public DNS адреса

  Развернуть 1 комментарий
  Развернуть 1 комментарий

@TopTuK, как и с regexp установка антивируса означает что у тебя теперь не одна а целых две проблемы) ну или точнее 1+количество устройств на которое установлен антивирус

  Развернуть 1 комментарий

😎

Автор поста открыл его для большого интернета, но комментирование и движухи доступны только участникам Клуба

Что вообще здесь происходит?


Войти  или  Вступить в Клуб