
AdGuard Home это DNS-блокировщик рекламы и трекеров, который ставится один раз на свой сервер и отсекает рекламу на уровне сети для всех устройств сразу. Браузерное расширение работает внутри одной программы и ничего не знает о телевизоре, приставке или телефоне гостя.
Устройство перед загрузкой страницы спрашивает у DNS-сервера адрес рекламной площадки, и AdGuard Home сверяет имя со списками блокировки. На запрещённый домен сервер отвечает пустым адресом, поэтому рекламный скрипт не успевает загрузиться. Расширение режет готовую страницу, а DNS-фильтр вмешивается до первого байта контента.
Установка занимает меньше получаса: контейнер в Docker, мастер настройки, пара списков и проверка на живом запросе. Этого достаточно, чтобы фильтр заработал для всей сети; дальше останутся шифрование и диагностика.
Что такое AdGuard Home и как он блокирует рекламу
Это открытый DNS-сервер с фильтрацией, который работает как сетевой блокировщик рекламы и трекеров. Проект написан на Go, распространяется по лицензии GPLv3 и живёт на GitHub, где у репозитория около 38 тысяч звёзд.
Механика называется DNS sinkhole. Устройство перед загрузкой страницы спрашивает адрес домена, сервер сверяет имя со списками и возвращает 0.0.0.0 или пустой ответ. Дальше браузеру некуда идти, поэтому баннер не появляется.
Телевизор, приставка, консоль, телефон гостя и умная колонка получают фильтрацию без установки чего-либо: они уже используют DNS от роутера. Расширение видит только свой браузер, но до приложений и Smart TV оно не достаёт. Сам DNS-фильтр не убирает пустое место от баннера и не различает рекламу и полезный контент на одном домене, о чём пишет сам проект.
Чем AdGuard Home отличается от Pi-hole
Оба проекта гасят рекламные домены на уровне DNS. Разница видна в комплектации и в том, сколько времени уходит на старт.
- Установка. AdGuard Home это один бинарник или контейнер, Pi-hole ставится скриптом под конкретный дистрибутив.
- Веб-интерфейс. У обоих встроен и появляется вместе с сервером, отдельная панель не нужна.
- Списки фильтров. AdGuard Home принимает Adblock, hosts и список доменов, Pi-hole работает с hosts и Adblock через FTL.
- Шифрование DoH и DoT. У AdGuard Home из коробки, и как сервер, и как клиент. У Pi-hole нужен внешний клиент, например
cloudflared. - DHCP-сервер встроен в оба проекта.
- Статистика. AdGuard Home показывает графики по клиентам и доменам, Pi-hole хранит более длинную историю.
Pi-hole появился раньше и оброс инструкциями, форками и скриптами. Если нужен готовый набор инструментов, он остаётся разумным выбором, и гайд по Pi-hole на сайте уже есть. AdGuard Home стартует быстрее: шифрованные апстримы и DoH-сервер уже внутри. У Pi-hole шифрование делается внешней программой, а гайд по cloudflared помечен как устаревший: Cloudflare закрыл используемую функцию.
AdGuard Home умеет фильтровать по CNAME-цепочкам и привязывать правила к устройству через модификатор $client.
Какой сервер нужен для AdGuard Home
Официальных требований к железу проект не публикует, поэтому ориентир берут из практики. Для квартиры или небольшого офиса на пару десятков устройств хватает 1 ядра, 512 МБ памяти и 200 МБ диска.
Память расходуется на списки блокировки: чем больше правил, тем больше памяти занимает индекс, и на слабом железе разница видна сразу.
Raspberry Pi 3 или 4 справляется с домашней сетью и потребляет несколько ватт. Мини-ПК на N100 держит запас на годы. Домашний сервер подходит, если он уже работает круглосуточно: отдельная железка ради DNS обычно не нужна.
Есть два ограничения. Порт 53 на Unix требует прав суперпользователя, поэтому без setcap или запуска от root сервер не поднимется. На многих дистрибутивах порт уже занят службой systemd-resolved с адресом 127.0.0.53:53, и контейнер падает с ошибкой bind: address already in use.
Публичный резолвер в интернет выставлять нельзя: открытый DNS усиливает атаки, потому что злоумышленник получает ответ в разы больше запроса. Об этом есть отдельная страница в документации.
AdGuard Home на роутере и раздача DNS через DHCP
Роутер обходится дешевле всего: отдельной железки не нужно, ведь DNS-запросы и так идут через него. На OpenWrt ставят пакет из репозитория, на Keenetic используют Entware. Ограничение здесь жёсткое, потому что памяти у роутера мало. Списки на пару миллионов доменов и журнал запросов съедают от 128 до 256 МБ, после чего устройство роняет соединения.
Клиенты узнают DNS-сервер из DHCP-ответа, поэтому достаточно, чтобы роутер выдавал свой адрес как DNS. Тогда фильтрация включается на всех устройствах, включая те, где настройки не поменять. Порядок обновления прошивки описан в материале про OpenWrt.
Установка AdGuard Home через Docker
Контейнер это самый быстрый путь: зависимости не нужны, обновление ограничивается заменой образа, конфиг лежит в двух каталогах.
docker run -d \
--name adguardhome \
--restart unless-stopped \
-p 53:53/tcp -p 53:53/udp \
-p 3000:3000/tcp \
-p 80:80/tcp \
-v /opt/adguardhome/work:/opt/adguardhome/work \
-v /opt/adguardhome/conf:/opt/adguardhome/conf \
adguard/adguardhome
Каталог /opt/adguardhome/work хранит статистику и журналы, /opt/adguardhome/conf содержит AdGuardHome.yaml. Оба тома обязательны: без них настройки исчезнут вместе с контейнером.
Порты 53/tcp и 53/udp отдают обычный DNS, 3000 нужен на время мастера, 80 становится админкой. Для шифрования добавляют -p 443:443/tcp под DoH и -p 853:853/tcp -p 853:853/udp под DoT и DoQ. Если у сервера есть публичный адрес, лишние порты закрывают брандмауэром: открытый рекурсивный DNS используют для усиленных атак.
Запуск проверяют командой docker logs adguardhome. В логе появится строка с адресом вида http://127.0.0.1:3000, значит контейнер ждёт настройки. Ошибка про порт 53 означает, что его занял systemd-resolved или другой резолвер.
Для DHCP и корректных адресов клиентов нужен --network host: в мостовой сети AdGuard Home видит шлюз Docker вместо реальных устройств. На Linux режим работает полноценно, в Docker Desktop он появился с ограничениями, поэтому для DHCP надёжнее Linux-хост.
Админку на порту 3000 в интернет не открывают. Её оставляют в локальной сети или ставят перед ней Nginx с сертификатом, как в гайде по Nginx Proxy Manager. Если управлять контейнерами удобнее из графики, подойдёт Portainer.
Первичная настройка AdGuard Home и порт 3000
Мастер открывается по адресу http://IP-сервера:3000 и спрашивает про интерфейсы, порт DNS и логин с паролем.
После сохранения AdGuard Home переезжает на порт 80 и показывает дашборд. Сменить адрес можно позже через http.address в AdGuardHome.yaml, он принимает вид 0.0.0.0:8080 или 127.0.0.1:0. Правку делают при остановленном сервисе, иначе процесс перезапишет файл.
DHCP-сервер включают не всегда: он нужен, если роутер не умеет раздавать свой DNS. В квартире проще оставить DHCP на роутере и прописать там адрес AdGuard Home: два DHCP-сервера в одной сети конфликтуют.
Дальше адрес фильтра прописывают в DHCP-настройках роутера, чтобы клиенты получали его сами, и обновляют аренду на устройствах. Проверка простая: запрос с телефона должен появиться в журнале AdGuard Home.
Пароль хранится в конфиге в виде хеша, восстановить его нельзя, только заменить. Логин и пароль стоит записать сразу.
Мощные VPS для ваших Docker-контейнеров
Идеально подходит для Nginx Proxy Manager, Portainer и Nextcloud. Высокая производительность (NVMe), защита от DDoS и скидка 5% по промокоду.
Списки блокировки для AdGuard Home
Из коробки AdGuard Home предлагает один список, AdGuard DNS filter. Он собирается из базового фильтра AdGuard, EasyList и EasyPrivacy и заточен под DNS-уровень. Ссылка на файл лежит в репозитории фильтра.
Многие предпочитают список OISD. Автор собирает список так, чтобы ничего не ломать: реклама, трекеры и малварь отсекаются, а магазины, банки и соцсети остаются рабочими. Основная ссылка это https://big.oisd.nl, её и добавляют в раздел «DNS blocklists» по URL.
Третий сценарий связан с реестром Роскомнадзора. В организациях иногда добавляют выгрузку из реестра нарушителей, но это меняет назначение сервера и требует отдельного регламента.
Пользовательские правила пишутся в разделе «Custom filtering rules». Синтаксис короткий:
||example.com^блокирует домен и все поддомены;example.orgблокирует только точное имя,www.example.orgостаётся доступным;@@||example.com^возвращает домен в белый список;! текстэто комментарий.
Правило ||doubleclick.net^ закрывает рекламную сеть Google целиком. Если сайт перестал открываться, смотрят журнал, находят заблокированное имя и добавляют исключение через @@.
Команда nslookup doubleclick.net 192.168.1.10 должна вернуть 0.0.0.0 или сообщение об отсутствии ответа, а в журнале строка помечена как заблокированная.
Отдельно работает CNAME-фильтрация. AdGuard Home проверяет не только запрос, но и цепочку ответов: если домен из списка прячется за CNAME-записью, ответ блокируется, а в журнале появляется пометка «Blocked by CNAME or IP».
Шифрование DNS и клиенты
Обычный DNS идёт открытым текстом: провайдер и любой узел по пути видит, какие сайты открывает устройство. DoH и DoT закрывают канал TLS. AdGuard Home поддерживает DoH, DoT и DoQ из коробки, отдельные пакеты не нужны.
Для шифрования нужен домен и валидный сертификат. Сертификат Let’s Encrypt получают, подтверждая домен через TXT-запись, и указывают в разделе «Encryption» вместе с ключом. AdGuard Home перечитывает файлы сам, поэтому продление проходит без перезапуска.
DoH работает на 443, DoT на 853/tcp, DoQ на 853/udp. Если сервер стоит за Nginx, в конфиг добавляют trusted_proxies с адресом Nginx, иначе AdGuard Home видит адрес Nginx вместо адресов клиентов.
Клиенты настраиваются по-разному. На компьютере прописывают IP сервера в настройках сети, и это даёт обычный DNS без шифрования. DoH настраивают отдельно, указав адрес сервиса, а не IP. На Android 9 и новее есть «Private DNS»: туда вписывают имя хоста, например dns.example.com, и телефон шифрует запросы сам. IP-адрес не принимается, потому что сертификат выписан на домен.
На iOS и macOS AdGuard Home генерирует профиль конфигурации в разделе «Setup Guide», его остаётся установить. Windows 11 умеет DoH в настройках сети, но включает его вручную.
Если адрес выдан только домашним DHCP, вне дома фильтрации не будет. Android с Private DNS ведёт себя иначе: он обращается к указанному домену из любой сети, а если сервер недоступен, имена перестанут разрешаться.
Обновление, бэкап и диагностика
В Docker обновление идёт в таком порядке: docker pull adguard/adguardhome, затем docker stop adguardhome и docker rm adguardhome, затем запуск контейнера той же командой. Автообновление внутри контейнера отключено, кнопка «Update now» для Docker не работает.
Для бэкапа хватает двух каталогов. В conf лежит AdGuardHome.yaml со всеми настройками, списками и правилами. В work лежат база статистики и журналы. Копии хватает раз в неделю, а перед обновлением образа её делают обязательно.
Диагностика начинается с проверки, какой DNS использует устройство. Команда nslookup example.org покажет адрес сервера в первой строке. Если там роутер, проверяют его вышестоящий DNS: он может пересылать запросы в AdGuard Home, а может и нет. Адрес 8.8.8.8 означает, что фильтр обойдён.
Вторая причина связана с кэшем. Браузер и система держат ответы DNS от нескольких минут до нескольких часов, поэтому после включения списка реклама может остаться на открытых страницах.
Третью причину создаёт сам список. Если домен не попал в базу, он не блокируется. Проверка простая: добавить ||имя-домена^ в правила и посмотреть, что изменилось.
Четвёртая причина связана с собственным DoH в браузере. Chrome и Firefox умеют включать шифрование поверх системы, и тогда запросы уходят мимо локального фильтра.
Частые вопросы
Нужен ли отдельный сервер для AdGuard Home
Отдельный сервер не обязателен. AdGuard Home ставится на то, что уже работает круглосуточно: роутер, NAS, домашний сервер или Raspberry Pi. Отдельная железка оправдана, когда важна предсказуемость: DNS не должен падать вместе с экспериментами на основном хосте.
Блокирует ли AdGuard Home рекламу в YouTube
Реклама в самом YouTube почти не блокируется. Ролик и рекламная вставка приходят с одних доменов, поэтому блокировка убила бы и видео. В официальном FAQ проекта YouTube и Twitch названы примерами того, что DNS-фильтр не берёт. Нужен блокировщик уровня контента, который разбирает страницу или приложение.
Разница между AdGuard Home и AdGuard DNS
Публичный AdGuard DNS работает без аккаунта: адреса известны, настроек минимум, статистики нет. Персональный AdGuard DNS даёт аккаунт, свои правила и статистику, но остаётся чужим сервисом. AdGuard Home это свой сервер, где видны запросы каждого устройства, работают собственные правила и списки, а данные не уходят третьей стороне. Платой становится администрирование.
Сколько ресурсов ест AdGuard Home
На домашней сети из нескольких десятков устройств хватает 512 МБ памяти и одного ядра. Память уходит на списки: миллион правил это заметный объём. На роутере со 128 МБ списки лучше держать умеренными.
AdGuard Home стоит ставить, если в сети больше двух-трёх устройств и есть чем заняться кроме рекламы на каждом из них. Один сервер, один список, полчаса на настройку, и реклама пропадает там, куда не достаёт ни одно расширение. Если вся жизнь проходит в одном браузере на одном ноутбуке, расширения хватит, а DNS-сервер добавит лишнюю точку отказа.