После очередного вируса, словленного моими родителями на их компьютер, я задумался про фильтр, который бы был доступен везде и при этом не давал открывать подозрительные ссылки ни моей девушке, ни моим родителям. О итоговом решении, которым мы пользуемся сейчас, и паре промежуточных вариантов я хочу рассказать.
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.
- Windows c 11-ой версии поддерживает DNS с шифрованием
- Для Mac есть отличный генератор DNS
- Пользователям Linux советую воспользоваться systemd-resolved
IOS/Android
- Для IOS устройств поможет тот же генератор, что и для Mac
- Android с 9-ой версии умеет в DNS over TLS и с 11 в DNS over HTTPS из коробки
IoT/Routers
- Чтобы члены "Дом дурачок" ходили в интернет, используя фильтрацию, и не стучали о тебе разработчику, нужно перехватывать все запросы к стандартным портам 53 TCP/UDP и направлять их на свой сервер. В Mokrotik это делается вот так
P.S.
На нынешнем сервере больше половины запросов отфильтровываются. По топам отфильрованных запросов на моем сервере могу сказать, что в болшей степени сейчас там разного рода трекеры, а не какие-то фишинговые ссылки или подозрительные веб сайты. Поэтому и информационный след в интернете мои близкие оставляют намного меньший, чем могли бы 😎
В копилочку: есть еще проект Blocky https://github.com/0xERR0R/blocky
Сам долгое время сидел на Pi-Hole, но с годик назад перешел на blocky. Много что умеет, легкий и быстрый.
Спасибо за пост.
Почему бы просто не раздавать клиентам в локальной сети IP adguard как сервер dns через dhcp? Кмк получается чуть проще.
Коммент проплачен!
https://www.kaspersky.com