AdGuard Home — это DNS-сервер с фильтрацией рекламы и трекеров, который работает внутри домашней сети. Клиенты обращаются к нему за именами, а он отсекает запросы к рекламным доменам по спискам и ведёт журнал. В отличие от браузерного расширения, фильтр действует на все устройства сразу: телевизор, телефон, приставку и умную колонку, где расширение не поставить. Ниже — установка на собственный сервер, настройка фильтров, DHCP и диагностика.

Как устроен фильтр

AdGuard Home — рекурсивный резолвер. Он принимает запрос по UDP или TCP на порт 53, проверяет имя по спискам блокировки, при совпадении возвращает пустой ответ или адрес 0.0.0.0, а остальное передаёт вышестоящему серверу. Ответы кэшируются, поэтому повторные запросы не уходят в интернет. Всё, что прошло через сервер, попадает в журнал: время, клиент, имя, тип записи и решение фильтра.

Настройки хранятся в одном файле AdGuardHome.yaml, статистика — в data/stats.db. Это упрощает резервное копирование. Веб-интерфейс по умолчанию слушает порт 3000, DNS — 53, панель после мастера можно перенести на 80 или 443.

Установка на сервер

Официальных пакетов в репозиториях Debian и Ubuntu нет, проект распространяет статический бинарник и образ Docker. Для дома удобен бинарник: он не тянет зависимостей и обновляется заменой файла. Скачайте архив с последним релизом, распакуйте в /opt и запустите установщик службы.

wget -O /tmp/adguard.tar.gz https://github.com/AdguardTeam/AdGuardHome/releases/latest/download/AdGuardHome_linux_amd64.tar.gz
sudo tar -xzf /tmp/adguard.tar.gz -C /opt
cd /opt/AdGuardHome
sudo ./AdGuardHome -s install

Команда -s install создаёт unit AdGuardHome.service и включает автозапуск. Перед первым стартом освободите порт 53: на Debian и Ubuntu его занимает заглушка systemd-resolved. Отключите её через drop-in и замените файл /etc/resolv.conf обычным файлом с адресом сервера — символическая ссылка на stub-resolv.conf после такой правки уже не работает.

sudo mkdir -p /etc/systemd/resolved.conf.d
printf '[Resolve]\nDNSStubListener=no\n' | sudo tee /etc/systemd/resolved.conf.d/adguard.conf
sudo systemctl restart systemd-resolved
sudo rm -f /etc/resolv.conf && echo 'nameserver 127.0.0.1' | sudo tee /etc/resolv.conf
sudo systemctl enable --now AdGuardHome

Если файлом управляет NetworkManager, добавьте в /etc/NetworkManager/conf.d/dns.conf строку dns=none и перезапустите службу, иначе настройка вернётся после переподключения. Проверьте, что порт слушается:

sudo ss -lunp | grep ':53'
sudo systemctl status AdGuardHome --no-pager
dig @127.0.0.1 example.org +short

Мастер настройки и вышестоящие серверы

Откройте http://192.168.1.10:3000, задайте логин и пароль администратора, укажите порт DNS 53 и интерфейс. На шаге вышестоящих серверов выберите шифрованный транспорт: https://dns.quad9.net/dns-query или tls://dns.google. Ответы по открытому UDP провайдер может подменять, а DoH и DoT защищают канал.

Bootstrap-серверы нужны, чтобы разрешить имя самого DoH-сервера. Укажите два обычных адреса, например 9.9.9.9 и 1.1.1.1.

Списки блокировки

В разделе «Фильтры» включите AdGuard DNS filter и одну сводную подписку, например OISD. Для русскоязычных сайтов добавьте AdGuard Russian filter. Не подключайте десяток пересекающихся списков: рост памяти и ложные срабатывания заметны уже на трёх-четырёх подписках. Начните с двух, неделю смотрите журнал, затем добавляйте точечные правила.

Своё правило пишется в синтаксисе AdBlock: ||ads.example.com^ блокирует домен и поддомены, @@||shop.example.com^ создаёт исключение. Правило применяется сразу, перезапуск не нужен.

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

Клиенты, расписания и DHCP

Раздел «Клиенты» позволяет задать устройству постоянный идентификатор по MAC или IP и отдельную политику. Телевизору можно включить фильтр и безопасный поиск, рабочему ноутбуку — только базовый список, а гостевой сети — собственные правила. Для каждого клиента настраивается расписание: например, блокировка игровых доменов с 23:00 до 07:00.

AdGuard Home умеет работать DHCP-сервером. Включите его, задайте диапазон, шлюз и DNS, равный адресу самого сервера, и отключите DHCP на роутере. Тогда аренда и имена устройств видны в одном месте, а клиенты автоматически получают нужный резолвер. Если менять схему не хочется, оставьте DHCP на роутере, но выставите в нём DNS вручную.

Резервная копия и обновление

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

sudo systemctl stop AdGuardHome
sudo tar -czf /var/backups/adguard-$(date +%F).tar.gz -C /opt/AdGuardHome .
sudo systemctl start AdGuardHome
curl -s http://127.0.0.1:3000/control/status | head -c 200

Проверка /control/status требует авторизации, поэтому пустой ответ — нормально. Для мониторинга используйте endpoint /control/stats с логином или просто проверяйте, что порт 53 отвечает на запрос.

Шифрованный DNS для своих устройств

В разделе «Шифрование» включите DNS-over-TLS на 853 и DNS-over-HTTPS, если у вас есть сертификат для локального имени. Телефон и ноутбук в своей сети смогут ходить к серверу по TLS, и провайдер не увидит имена. Сертификат можно выпустить внутренним центром или через ACME с DNS-проверкой.

Чтобы устройство не обошло фильтр, прописав сторонний DNS, ограничьте исходящий трафик на 53-й порт на роутере. Правило nftables разрешает DNS только адресу сервера, остальное отбрасывает. Это защита собственной сети, а не обход чужих ограничений.

Диагностика

Если имя не разрешается, проверьте три вещи: слушается ли порт, отвечает ли сервер локально и не блокирует ли запрос фильтр. Журнал показывает решение по каждому запросу, а dig — что вернул резолвер.

dig @127.0.0.1 doubleclick.net +short
dig @127.0.0.1 example.org A +noall +answer
journalctl -u AdGuardHome -n 80 --no-pager
sudo ss -lunp | grep ':53'

Пустой ответ на рекламный домен — ожидаемое поведение. Если пусто и для обычного имени, смотрите журнал: чаще всего виноват недоступный вышестоящий сервер или неверный bootstrap. Ошибка «address already in use» означает, что порт занят другой службой — проверьте ss и остановите конфликтующий резолвер.

Чек-лист внедрения

  • Порт 53 освобождён, systemd-resolved не перехватывает запросы.
  • Пароль администратора сложный, панель недоступна из интернета.
  • Настроены DoH или DoT и bootstrap-серверы.
  • Подключены два-три списка без пересечений, проверены исключения.
  • DHCP выдаёт клиентам адрес фильтра, либо DNS на роутере указывает на него.
  • Есть ежедневная копия рабочего каталога и понятный порядок обновления.

Итог

AdGuard Home даёт домашней сети единую точку фильтрации и понятную статистику. Установка занимает полчаса, но основная работа — не в ней, а в аккуратной настройке списков и исключений. Начните с одного сервера и двух подписок, включите шифрованный DNS и ограничьте обходные пути на роутере. Тогда фильтр будет работать на всех устройствах, а не только в браузере, где стоит расширение.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Поделиться: Telegram ВКонтакте