AdGuard Home на своём сервере: блокировка рекламы для всей сети
Блокировщик в браузере закрывает рекламу только в браузере и только на том устройстве, где установлен. Телевизор, телефон с приложениями, планшет ребёнка и умная колонка остаются со своей рекламой и своей телеметрией. AdGuard Home решает это иначе: фильтрация происходит на уровне DNS, то есть до того, как устройство вообще соединится с рекламным сервером.
Разберём, как это работает, зачем ставить его на сервер, а не на роутер, сколько нужно ресурсов, как подключить устройства и почему при неправильной настройке ваш сервер станет участником чужих атак.
Как это работает
Любое обращение к сайту начинается с вопроса к DNS: какой адрес у этого имени. Обычно этот вопрос уходит к серверу провайдера. AdGuard Home встаёт на это место: устройства спрашивают его, а он сверяет имя со списками.
- Домен в списке рекламы или трекеров - ответ пустой, соединение не состоится.
- Домен обычный - запрос уходит дальше к вышестоящему серверу, ответ возвращается устройству.
Отсюда главное преимущество: фильтрация работает для всех устройств сразу, включая те, куда расширение не поставить. И реклама не скачивается вовсе, а не прячется после загрузки, что заметно на медленном мобильном интернете.
Есть и ограничение, о котором честно стоит сказать: реклама, которую сайт отдаёт со своего же домена, через DNS не блокируется. Разделить полезный контент и рекламу на одном адресе невозможно. Поэтому связка с браузерным блокировщиком работает лучше, чем каждый инструмент по отдельности.
Зачем на сервере, а не на роутере
AdGuard Home ставится и на домашний роутер, и на одноплатный компьютер, но у отдельного сервера есть свои резоны.
- Работает вне дома. Телефон в поездке пользуется тем же фильтром, если указать сервер как DNS.
- Не зависит от домашнего интернета. Отключили свет в квартире - фильтр продолжает работать для всех остальных устройств.
- Ресурсов заведомо хватает. Роутеры с этой задачей справляются по-разному, особенно при больших списках.
- Есть статистика. Видно, какие домены запрашивают устройства и сколько запросов отсекается. Иногда это открытие.
Если все устройства дома и роутер не жалуется, отдельный сервер избыточен. Смысл появляется, когда нужен доступ извне или когда роутер уже не тянет.
Сколько нужно ресурсов
Это одна из самых лёгких задач для сервера. Достаточно младшего тарифа: одного ядра и гигабайта памяти хватает с запасом на десятки устройств, потому что нагрузка сводится к проверке имени по спискам и кешированию ответов.
Диск нужен только под логи запросов: чем дольше срок хранения, тем больше места. Для дома счёт идёт на сотни мегабайт. Как соотносить ресурсы с задачей в целом, разобрано в статье про конфигурацию сервера.
Локацию выбирают по задержке: DNS-запрос предшествует каждому соединению, поэтому чем ближе сервер к вам, тем отзывчивее интернет. Для пользователей в России логичен российский сервер.
Установка
Ставится двумя способами, оба несложные.
Официальный скрипт - разворачивает сервис и настраивает автозапуск. Подходит, если на сервере больше ничего не планируется.
Docker - удобнее, когда на машине живут и другие сервисы: конфигурация и данные лежат в примонтированных каталогах, обновление сводится к смене образа. Общий подход к контейнерам разобран в статье про Docker на VPS.
После установки открывается веб-интерфейс мастера первичной настройки, где задаётся администратор и выбираются вышестоящие DNS-серверы. Дальше вся работа идёт через браузер.
Безопасность: главный момент
Здесь находится ошибка, которая превращает полезный сервис в проблему, и допускают её почти все новички.
Нельзя оставлять DNS открытым для всего интернета. Сервер, который отвечает на DNS-запросы от кого угодно, называется открытым резолвером. Его находят сканеры за считанные часы и используют для атак с усилением: злоумышленник отправляет маленький запрос, подставив чужой адрес отправителя, а ваш сервер шлёт жертве большой ответ. В результате ваш адрес участвует в атаке, попадает в чёрные списки, а канал забивается чужим трафиком.
Правильных вариантов два:
- Ограничить доступ по адресам. В файрволе разрешить 53-й порт только с ваших адресов. Подходит, когда адрес статический.
- Использовать шифрованный DNS. AdGuard Home умеет принимать запросы по защищённым протоколам поверх HTTPS или TLS, где клиенты идентифицируются, а посторонние отсекаются. Для этого понадобится домен и сертификат.
И в любом случае: веб-интерфейс администратора наружу не выставляют, а пароль ставят сильный. Как открывать порты аккуратно, разобрано в статье про порты на сервере.
Как подключить устройства
Два подхода, и они комбинируются.
Через роутер. В настройках сети указывается адрес вашего сервера как DNS. Все устройства в доме подхватывают его автоматически, настраивать каждое не нужно. Самый удобный вариант для дома.
На каждом устройстве отдельно. Нужен, когда устройство работает вне домашней сети: телефон в поездке, ноутбук в кафе. В современных системах это настройка приватного или защищённого DNS.
Проверить, что всё заработало, проще всего по статистике в интерфейсе: если запросы появились, устройства ходят через ваш сервер.
Что настроить после запуска
- Списки фильтров. Базовых, включённых по умолчанию, хватает большинству. Добавлять всё подряд не стоит: чем длиннее списки, тем чаще ломаются обычные сайты.
- Исключения. Что-нибудь обязательно сломается: не отправится форма, не откроется банковское приложение. Домен добавляется в исключения из журнала запросов в два клика.
- Родительский контроль. Отдельные правила для устройств ребёнка, включая блокировку категорий.
- Срок хранения логов. Журнал запросов - это история посещений всех устройств. Стоит осознанно решить, сколько её хранить.
- Резервная копия конфигурации. Настройки и списки исключений собираются месяцами, а восстанавливать их с нуля обидно, см. резервное копирование.
Частые ошибки
Оставляют DNS доступным всему интернету. Главная ошибка: сервер становится открытым резолвером и участвует в чужих атаках.
Указывают только один DNS в настройках устройств. Сервер недоступен - интернет пропадает целиком. Второй адрес про запас снимает эту проблему.
Включают все доступные списки фильтров. Сайты начинают ломаться, а причину искать долго.
Выставляют панель администратора наружу. Веб-интерфейс с доступом ко всей истории запросов не должен смотреть в интернет.
Забывают про журнал. По умолчанию хранится история всех запросов со всех устройств, включая чужие. Срок хранения стоит выставить осознанно.
Ждут блокировки рекламы в видеосервисах. Реклама, которую сервис отдаёт со своего домена, через DNS не отсекается.
Частые вопросы
Что делает AdGuard Home? Работает как ваш DNS-сервер и не отвечает на запросы к рекламным и следящим доменам. Реклама не загружается вовсе, и это работает для всех устройств в сети, а не только в браузере.
Сколько ресурсов нужно? Минимум: одного ядра и гигабайта памяти достаточно на десятки устройств. Диск нужен в основном под журнал запросов.
Чем это лучше блокировщика в браузере? Работает на всех устройствах, включая телевизоры и приложения, куда расширение не поставить, и экономит трафик. Слабое место обратное: рекламу с домена самого сайта DNS не отличит, поэтому инструменты дополняют друг друга.
Можно ли пользоваться вне дома? Да, если указать сервер как DNS на самом устройстве. Именно поэтому его и ставят на VPS, а не только на роутер.
Опасно ли держать свой DNS на сервере? Опасно оставлять его доступным всем: такой сервер используют для атак с усилением, а его адрес попадает в чёрные списки. Доступ ограничивают по адресам или переходят на шифрованный DNS.
Что делать, если сайт перестал работать? Найти домен в журнале запросов и добавить в исключения. Чаще всего это следствие слишком агрессивных списков фильтров.
Нужен сервер под свой DNS? VPS на NVMe от 459 руб в месяц - младшего тарифа хватает с запасом, площадки в Москве, Казани и Амстердаме. Активация за 3 минуты, первые 7 дней - тестовый период с возвратом средств.