Свой приватный DNS на Tailscale: без рекламы и утечек данных
Собственный DNS: блокировка рекламы на уровне сети
Если у вас уже работает self-hosted Tailscale через Headscale, то приватное шифрованное соединение между устройствами — в кармане. Но мало кто думает о следующем шаге: блокировка рекламы и трекеров прямо в DNS. И это сработает на всех гаджетах — смартфоне, ноутбуке, планшете, ПК — без лишних телодвижений.
Забудьте про старый способ с публичными resolver'ами вроде Cloudflare или Quad9. Да, это просто. Но вы упускаете кучу плюсов.
Зачем нужен внутренний DNS
Headscale берет на себя DNS-разрешение для всего tailnet. И вот магия: каждое устройство получает отфильтрованные ответы без установки софта. Никаких приложений, списков блокировок на каждом девайсе или разных инструментов.
Практическая выгода очевидна:
- Реклама исчезает везде. Трекеры с сомнительных сетей даже не доходят до ваших устройств.
- Внутренние имена работают сразу. Сервер дома по адресу
homeserver.tailnet.localрезолвится на любом подключении. - Единая политика безопасности. Вы решаете, что разрешать, а что нет. Без лазеек.
Почему Blocky — выбор для self-хостеров
Pi-hole и AdGuard Home — проверенные варианты. Но у них веб-панели, базы данных и тонны настроек. Для простых задач это лишнее.
Blocky — совсем другое. DNS-прокси для тех, кто хочет фильтрацию без наворотов. Один YAML-файл с конфигом. Запускается где угодно. Делает ровно то, что нужно: блокирует вредные запросы.
Минус? Нет красивого интерфейса. Зато для devs и админов, привыкших к CLI, это плюс.
Что выделяет Blocky:
- Простая настройка. Без баз данных, веб-морды или обновлений дашборда.
- Поддержка блоклистов. Берет списки из сообщества или свои.
- Легковесный. Идеален для Raspberry Pi, маленького VPS или сервера с Headscale.
- Шифрование upstream. Работает с DNS-over-TLS для выбранного публичного resolver'а.
Подводные камни с Private DNS на Android
Частая проблема: на Android стоит "Private DNS" с DoT от AdGuard или подобного — все ок. Добавляете Tailscale, и DNS ломается.
Что происходит: Headscale пушит свои DNS-настройки на телефон. Android переключается на внутренний resolver Tailscale (100.100.100.100). Но он не поддерживает DoT — просто релей. Проверка Private DNS падает, ничего не резолвится.
Решение: отдайте DNS полностью Tailscale. Выключите Private DNS на Android. Запустите Blocky в tailnet, укажите его в Headscale. Blocky сам шифрует трафик к публичным resolver'ам. Никаких конфликтов.
Что ставим в приоритет при развертывании
Перед запуском Blocky определитесь с задачами:
Цель 1: Блокировка рекламы и трекеров повсеместно. Все устройства в tailnet получают чистый DNS автоматически. Пользователям нечего настраивать.
Цель 2: Шифрованный upstream. Трафик от Blocky к публичному resolver'у идет по DoT. WireGuard уже защищает от устройств до Blocky, но последний участок тоже зашифруем.
Цель 3: Разрешение внутренних имен. Приватные сервисы с именами вроде homeserver.ts.internal работают везде в сети.
Цель 4: Без настройки на устройствах. Headscale раздает настройки, клиенты подхватывают сами.
Как это устроено
Схема простая:
- Устройства коннектятся к Tailscale через Headscale.
- Headscale пушит IP Blocky как DNS для tailnet.
- Запрос от устройства попадает в Blocky.
- Blocky сверяет с блоклистами. Блокирует — NXDOMAIN. Чистые — форвардит upstream.
- Upstream по DoT к Cloudflare, Quad9 или вашему resolver'у.
- Ответ кэшируется в Blocky и летит обратно.
- Все под WireGuard. Вы контролируете фильтры и инфраструктуру.
Почему это актуально прямо сейчас
В 2024 году приватность и блокировка рекламы — база. Но обычно это приложения на каждом устройстве. Сетевой подход масштабируется. Новый телефон в tailnet? Реклама заблокирована сразу. У друга в гостях? Защита на месте.
Для разработчиков и инженеров — еще и про безопасность. Вы управляете DNS, проверяете списки, выбираете resolver'ы. Это self-hosted подход к DNS в чистом виде.
Что делать дальше
Headscale уже крутится? Добавьте Blocky — логичный шаг. Хотите другой DNS-сервер (Unbound, Bind, Coredns)? Легко. Но Blocky выигрывает простотой.
Плюс: не привязаны. Передумали — меняете resolver. Headscale и Tailscale не мешают. DNS слишком важен, чтобы слепо отдавать чужим. Берите контроль. Чистите сеть от мусора. Данные остаются у вас. Self-hosted мечта сбывается.