Начните бесплатный 3-дневный пробный период
Зарегистрируйтесь и попробуйте все премиум-функции бесплатно.
*Только для новых пользователей. Один пробный период на пользователя.


Безопасная настройка AdGuard Home — это резолвер на одном узле локальной сети, который отвечает только перечисленным устройствам, отправляет выбранные домены на собственные вышестоящие DNS-серверы, а остальные запросы — на один зашифрованный сервер по умолчанию. Сначала вы проверяете схему на одном устройстве, подтверждаете фильтрацию и отсутствие утечек и сохраняете проверенный путь отката.
Ключевые выводы:
- Закрепите один выпуск, сверьте контрольную сумму и сохраните настройки резолвера узла до любых изменений.
- Освободите порт 53 от stub-слушателя systemd-resolved так, чтобы это можно было отменить.
- Кто получает ответы, решают и правила межсетевого экрана, и список разрешенных клиентов: настройте оба.
- Upstream для конкретных доменов отправляет локальные и корпоративные имена на их собственные серверы.
- Сначала верните настройки устройства, затем удалите службу и восстановите резолвер.
Подготовьте узел Ubuntu 24.04 LTS x64 в домашней сети или VPS, доступный только через частную сеть, и одно тестовое устройство под вашим контролем. Инструкция рассчитана на AdGuard Home v0.107.79, выпущенный 18 августа 2026 года.[1] Инструкция основана на перечисленных ниже официальных источниках; полный сквозной тест не выполнялся.
AdGuard описывает установку из архива, служебные команды и порты: TCP 3000 для мастера первого запуска, TCP 80 для веб-интерфейса по умолчанию и UDP 53 для DNS.[2] Старая вики на GitHub помечена как устаревшая и отсылает к Knowledge Base, поэтому при расхождении команд опирайтесь на Knowledge Base.[3]
Постоянно работающий резолвер требует обслуживания; оцените эту нагрузку по обзору обязанностей при самостоятельном хостинге. Это руководство отличается от пробной установки Pi-hole на одном устройстве и от собственного рекурсивного резолвера Unbound: AdGuard Home пересылает запросы и позволяет выбрать вышестоящий сервер для каждого домена. У блокировки доменов есть и пределы, которые не снимает ни один резолвер; см. как на самом деле работает блокировка рекламы через DNS.
Остановитесь, если узел относится к общей рабочей среде, управляется кем-то другим или доступен из интернета на порту 53. Никогда не открывайте этот резолвер публично.
AdGuard Home принимает в качестве upstream обычный DNS, DNS-over-TLS (tls://), DNS-over-HTTPS (https://), DNS-over-QUIC (quic://) и DNS stamps. Строка вида [/example.local/] с адресом сервера отправляет этот домен и его поддомены на указанный сервер, а # означает «использовать upstream по умолчанию».[4]
| Тип запроса | Рекомендуемый upstream | Почему |
|---|---|---|
| Публичные имена | Один зашифрованный upstream по умолчанию | Провайдер больше не видит открытых запросов |
Локальные имена маршрутизатора, например .lan | LAN-адрес маршрутизатора | Эти имена знает только маршрутизатор |
| Корпоративные или лабораторные домены | Внутренний резолвер этой сети | Публичные резолверы на них не ответят |
| Обратные запросы для частных адресов | Поле Private reverse DNS servers | AdGuard требует указывать частные диапазоны там |
Сохраните текущее состояние резолвера, чтобы точно восстановить его позже:
readlink -f /etc/resolv.conf
resolvectl status
sudo ss -lntup
В Ubuntu systemd-resolved держит stub-слушатель на 127.0.0.53 и 127.0.0.54, а /etc/resolv.conf обычно указывает на stub-файл.[5] Запишите LAN-интерфейс, LAN-адрес узла, адрес тестового устройства и адрес устройства администратора.
Скачайте выпуск, пока DNS узла еще работает, и сверьте его с опубликованными контрольными суммами:
cd "$(mktemp -d)"
VER='v0.107.79'
BASE="https://github.com/AdguardTeam/AdGuardHome/releases/download/$VER"
curl -fLO "$BASE/AdGuardHome_linux_amd64.tar.gz"
curl -fLO "$BASE/checksums.txt"
sha256sum -c --ignore-missing checksums.txt
tar -xzf AdGuardHome_linux_amd64.tar.gz
sudo mv AdGuardHome /opt/AdGuardHome
Продолжайте, только если строка проверки сообщает OK. Если /opt/AdGuardHome уже существует, остановитесь и выясните, кто его установил.
При первом запуске программа слушает 0.0.0.0:3000, поэтому мастер доступен любому устройству в сети.[2] В рамках уже проверенной политики UFW, которая по умолчанию запрещает входящий трафик, разрешите только нужное для пробы; замените интерфейс и адреса:[6]
LAN_IF='enp1s0'
TEST_V4='192.168.1.25'
ADMIN_V4='192.168.1.10'
sudo ufw allow in on "$LAN_IF" from "$TEST_V4" to any port 53 proto udp
sudo ufw allow in on "$LAN_IF" from "$TEST_V4" to any port 53 proto tcp
sudo ufw allow in on "$LAN_IF" from "$ADMIN_V4" to any port 3000 proto tcp
sudo ufw status numbered
Сохраните правило SSH и доступ к локальной консоли. Если UFW неактивен, сначала настройте политику запрета по умолчанию, а не пропускайте этот шаг.
DNSStubListener=no отключает stub-слушатель, а файлы в /etc/systemd/resolved.conf.d/ переопределяют основной файл.[7] В FAQ AdGuard приведено такое ручное исправление и сказано, что строка DNS=127.0.0.1 обязательна:[8]
sudo mkdir -p /etc/systemd/resolved.conf.d
printf '[Resolve]\nDNS=127.0.0.1\nDNSStubListener=no\n' | sudo tee /etc/systemd/resolved.conf.d/adguardhome.conf
sudo mv /etc/resolv.conf /etc/resolv.conf.backup
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf
sudo systemctl reload-or-restart systemd-resolved
sudo ss -lntup | grep ':53 '
Последняя команда не должна ничего показать на порту 53. Теперь запросы самого узла не разрешаются, пока AdGuard Home не начнет отвечать на 127.0.0.1, — поэтому загрузка шла первой. В мастере есть и кнопка Fix для этого конфликта; ручной путь оставляет файл, который потом можно удалить.[8]
cd /opt/AdGuardHome
sudo ./AdGuardHome -s install
sudo ./AdGuardHome -s status
С устройства администратора откройте http://HOST_LAN_IP:3000. В мастере привяжите веб-интерфейс администратора к LAN-адресу узла на порту 3000, а DNS-сервер — к LAN-адресу на порту 53. Создайте учетную запись администратора с длинным уникальным паролем.[2]
Редактируйте конфигурацию только при остановленной службе: работающий экземпляр перезаписывает изменения в файле.[9] Меняйте лишь эти ключи внутри существующих разделов:
sudo /opt/AdGuardHome/AdGuardHome -s stop
sudoedit /opt/AdGuardHome/AdGuardHome.yaml
http:
address: 192.168.1.53:3000
dns:
bind_hosts:
- 127.0.0.1
- 192.168.1.53
port: 53
allowed_clients:
- 127.0.0.1
- 192.168.1.25
querylog:
enabled: true
interval: 24h
statistics:
interval: 24h
bind_hosts ограничивает адреса, на которых обслуживается DNS, а непустой allowed_clients означает, что ответы получают только эти адреса.[9] Loopback остается в списке, потому что сам узел теперь разрешает имена через 127.0.0.1. Ротация журнала запросов принимает значения от 1h до 8760h; для пробы хватит суток. Задайте anonymize_client_ip: true в разделе dns, если журнал по клиентам не нужен.[9]
sudo /opt/AdGuardHome/AdGuardHome --check-config --config /opt/AdGuardHome/AdGuardHome.yaml
sudo /opt/AdGuardHome/AdGuardHome -s start
getent hosts example.com
AdGuard рекомендует поле Allowed clients в разделе Settings → DNS settings → Access settings, когда число клиентов известно, и предупреждает, что открытые резолверы привлекают злоупотребления.[10]
На тестовом устройстве вручную укажите DNS только по LAN-адресу узла. Не оставляйте публичного запасного резолвера и отключите безопасный DNS браузера в тестовом профиле, чтобы запросы действительно доходили до AdGuard Home. С этого устройства выполните:
nslookup example.com 192.168.1.53
nslookup example.com
Оба запроса должны появиться в Query log с адресом тестового устройства. Если виден только явный запрос, устройство все еще использует другой резолвер.
В Settings → DNS settings → Upstream DNS servers укажите по одному upstream в строке; замените адреса маршрутизатора и компании:
https://unfiltered.adguard-dns.com/dns-query
[/lan/]192.168.1.1
[/corp.example/]10.20.0.53
[/public.corp.example/]#
Первая строка — нефильтрующий адрес DNS-over-HTTPS сервиса AdGuard DNS, так что фильтрация остается на вашем экземпляре.[11] Upstream DoH задаются именами, поэтому оставьте обычный резолвер, например 94.140.14.140, в поле bootstrap DNS (bootstrap_dns).[9][11] Последняя строка возвращает один поддомен к upstream по умолчанию; [/*.corp.example/] совпал бы только с поддоменами, но не с самим corp.example.[4]
Укажите адрес маршрутизатора в Private reverse DNS servers: обратные запросы для частных диапазонов AdGuard направляет только туда.[4] Повторите запросы из шага 6, затем запросите имя .lan и проверьте столбец upstream в журнале.
В Filters → Custom filtering rules добавьте ||example.org^: правило блокирует домен и его поддомены. Затем добавьте @@||example.org^, чтобы разблокировать его; строки, начинающиеся с ! или #, — комментарии.[12]
| Способ проверки | Ожидаемый результат | Если не получилось |
|---|---|---|
nslookup example.org только с правилом блокировки | В журнале отмечено как заблокированное | Убедитесь, что устройство использует узел, а правила сохранены |
| Тот же запрос после добавления исключения | Снова отмечено как разрешенное | Уберите правило с $important, которое перекрывает исключения |
Запрос имени .lan | Ответ приходит от маршрутизатора | Проверьте строку [/lan/] и адрес маршрутизатора |
| Запрос с вашего устройства, которого нет в списке | Ответа нет | Исправьте allowed_clients или межсетевой экран |
| Тест на утечку DNS на тестовом устройстве | Видны только резолверы upstream по умолчанию | Ищите запасные резолверы, DNS по IPv6 или DNS браузера |
Для последней строки используйте эту проверку утечки DNS. DNS по IPv6 — отдельный путь: либо настройте и ограничьте слушатель IPv6, либо обозначьте пробу как только IPv4. После проверки удалите оба тестовых правила.
Верните исходные настройки DNS тестового устройства и убедитесь, что новый запрос проходит, прежде чем трогать узел. AdGuard предупреждает: сначала перенастройте устройства, затем выполните команду удаления и удалите каталог.[8]
sudo /opt/AdGuardHome/AdGuardHome -s uninstall
sudo rm /etc/systemd/resolved.conf.d/adguardhome.conf
sudo rm /etc/resolv.conf
sudo mv /etc/resolv.conf.backup /etc/resolv.conf
sudo systemctl restart systemd-resolved
getent hosts example.com
Сравните readlink -f /etc/resolv.conf и resolvectl status с результатами шага 1. Удалите по номерам только правила UFW, добавленные для пробы. Если планируете вернуться, сохраните частную копию AdGuardHome.yaml, затем удалите /opt/AdGuardHome.
allowed_clients.Да. Отключается только его stub-слушатель через отдельный файл; systemd-resolved продолжает работать и пересылает запросы узла на 127.0.0.1.
Порт 53 уже занят другой программой, обычно stub-слушателем systemd-resolved. Примените файл из шага 3 или нажмите кнопку Fix в мастере.
Символ # после блока домена велит AdGuard Home использовать для этого домена upstream по умолчанию вместо отдельного сервера.
Они необязательны, но разумны для публичных имен: открытые запросы к upstream видны на сетевом пути и провайдеру.
Нет. Открытый резолвер привлекает злоупотребления; держите DNS в локальной или частной сети и явно перечисляйте разрешенных клиентов.
DNS-правила блокируют домены целиком. Реклама с того же домена, что и контент, кэшированные страницы и DNS браузера могут их обходить.
Само по себе нет. Сначала верните DNS каждого устройства, затем удалите файл для resolved и восстановите сохраненную ссылку resolv.conf.
Отказ от ответственности: Эти шаги составлены по официальной документации и не являются отчетом о завершенном тестировании. Используйте только узлы и устройства, которые вам разрешено менять, и сохраняйте рабочий путь восстановления.
Источники:
Sources checked 14 октября 2026 г.
Рекомендуемые статьи:
Зарегистрируйтесь и попробуйте все премиум-функции бесплатно.
*Только для новых пользователей. Один пробный период на пользователя.





