AdGuard Home на OpenWrt: настройка DNS без конфликта с dnsmasq

Разберём, кто должен занимать порт 53, почему в журнале виден только роутер и как проверить фильтрацию до переключения всей домашней сети.
После установки AdGuard Home сайты перестали открываться, хотя Wi-Fi подключён и роутер отвечает. Переустанавливать прошивку обычно рано: сначала нужно понять, кто слушает DNS-порт 53 и куда пересылает запросы.
Покажем постепенное подключение фильтрации на OpenWrt. Сначала AdGuard работает на отдельном порту, затем dnsmasq направляет ему внешние запросы. Такой вариант удобно проверить и отменить. Его ограничение — AdGuard обычно видит роутер вместо отдельных клиентов. Для индивидуальных правил ниже разобрана другая схема.

Сначала проверьте ресурсы и сохраните настройки
На роутере выполните:
ubus call system board
df -h
free
Нужны версия OpenWrt, архитектура и запас места в overlay. Не ориентируйтесь на объём /tmp: он не равен свободной flash. Большие списки фильтров и журналы могут оказаться тяжёлыми для маломощного роутера. В таком случае разумнее отдельный DNS-сервер в LAN.
Скачайте backup OpenWrt через System → Backup / Flash Firmware. Для точечного отката дополнительно сохраните конфигурацию DHCP/DNS, выбрав новое имя файла:
cp -p /etc/config/dhcp /root/dhcp.before-adguard-20260913
Все дальнейшие команды предполагают обычную конфигурацию с одним dnsmasq. Если экземпляров несколько, сначала разберите их назначения. Во время изменений держите открытым доступ к LuCI или SSH по IP, чтобы он не зависел от DNS.
Если роутеру не хватает памяти и flash, альтернативный вариант вынесен в разбор отдельного DNS-сервера Pi-hole + Unbound. Это другая связка программ: команды из неё не нужно смешивать с настройками AdGuard.
Установка пакета: opkg или apk
В OpenWrt 25.12 и новее используется apk; в 24.10 — opkg. В нестандартной сборке проверьте фактически установленный менеджер. Не выполняйте оба варианта подряд. Переход описан в документации OpenWrt по apk.
Для сборки с apk:
apk update
apk add adguardhome
Для сборки с opkg:
opkg update
opkg install adguardhome
Если пакет не найден, проверьте репозитории своей версии и архитектуры. Не подмешивайте feeds от другой ветки ради одного пакета.
Запустите службу:
service adguardhome enable
service adguardhome start
Первичная настройка обычно доступна на порту 3000. В мастере выберите адрес LAN для веб-интерфейса, свободный веб-порт и отдельный пароль. Не назначайте веб-интерфейсу порт LuCI. Порядок установки на роутере приведён в OpenWrt Wiki: AdGuard Home.
Тест до переключения всей сети
Оставьте dnsmasq на 53. Для DNS AdGuard задайте порт 5454 и адреса, на которых он должен принимать тестовые запросы: LAN и loopback либо доступные локальные интерфейсы с ограничением firewall. WAN не открывайте. Порт 5454 здесь произвольный тестовый порт: предварительно убедитесь, что он свободен. Порт 5353 лучше не занимать — он используется mDNS.
В AdGuard выберите внешние upstream DNS, которым доверяете, и нажмите проверку upstream. Не указывайте адрес этого же роутера на порту 53: после включения пересылки получится петля.
С компьютера, где установлен dig, проверьте оба пути. Здесь 192.168.1.1 — пример LAN-адреса роутера:
dig @192.168.1.1 -p 5454 example.org A
dig @192.168.1.1 -p 53 example.org A
Первый запрос должен появиться в Query Log AdGuard. Второй пока обслуживает прежняя схема. Если на 5454 ответа нет, не переключайте dnsmasq: проверьте службу, адрес прослушивания, TCP/UDP и firewall.
Передайте внешние запросы dnsmasq в AdGuard
В LuCI откройте Network → DHCP and DNS. Запишите старые значения, затем:
- Укажите DNS forwardings: 127.0.0.1#5454.
- Включите Ignore resolve file, чтобы внешние запросы не уходили параллельно DNS провайдера.
- Проверьте прежние DNS forwardings: не должно остаться общего обходного upstream. Специальные правила для отдельных доменов разбирайте отдельно.
- Сохраните изменения и примените их.
DHCP и обслуживание локальных имён остаются у dnsmasq. Проверьте с клиента обычный запрос на 53 и известное локальное имя. Например, nas.lan нужно заменить именем реально существующего устройства.
nslookup example.org 192.168.1.1
nslookup nas.lan 192.168.1.1
Кэш dnsmasq может не отправить повторный запрос в AdGuard. Проверяйте свежий домен или очистите кэш перезапуском службы. Синтаксис upstream и условных пересылок объясняется в справке AdGuard Home.
Если используете policy routing, сохраните специальные доменные правила для него: DNS участвует в наполнении наборов адресов. Перед заменой схемы посмотрите разбор раздельной маршрутизации в OpenWrt.
Почему в журнале все запросы от роутера
В цепочке «клиент → dnsmasq → AdGuard» отправителем для AdGuard становится dnsmasq. Это ожидаемо. Для правил по отдельным устройствам клиентам нужно обращаться непосредственно к AdGuard на 53.
Тогда схема меняется: AdGuard занимает 53, dnsmasq переносится, например, на 54 и сохраняет DHCP с локальными именами. В DHCP явно выдаётся адрес AdGuard, а локальная зона и обратные DNS-запросы направляются к dnsmasq. Это отдельное переключение: нельзя просто занять 53, пока его слушает старая служба.
Не объединяйте обе схемы вслепую и не направляйте общие upstream друг в друга. Сначала закончите проверку выбранного варианта, затем переходите к следующему.
Проверяйте блокировку по журналу, а не по баннеру
Для контролируемого теста добавьте временное пользовательское правило:
||example.org^
Повторите запрос через AdGuard и убедитесь, что Query Log показывает блокировку именно вашим правилом. Конкретный DNS-ответ зависит от режима блокировки. После теста удалите правило и очистите кэш, затем проверьте разрешение домена снова.
Один рекламный баннер ничего не доказывает: реклама может приходить с того же домена, что и полезное содержимое. DNS-фильтр не умеет выбирать отдельные элементы страницы.
Нет запросов от телефона: проверьте Private DNS, защищённый DNS браузера и серверы, полученные по IPv6. DHCP option 6 управляет IPv4, но не всей IPv6-настройкой.
Не работает приложение: найдите заблокированный домен в момент ошибки и добавьте точечное исключение. Не отключайте все фильтры навсегда из-за одного ложного срабатывания.
После reboot пропала история: проверьте рабочий каталог AdGuard. Хранение в /tmp не переживает перезагрузку; постоянные журналы на маленькой flash требуют ограничения объёма и срока хранения.
Если фильтрация работает дома, но не при удалённом подключении, проверьте маршруты и доступ к LAN через Tailscale на OpenWrt. Наличие туннеля ещё не означает, что телефон использует домашний DNS.
Как вернуть DNS при неудаче
Для описанной схемы, где AdGuard остаётся на 5454, восстановите сохранённый файл DHCP/DNS:
cp -p /root/dhcp.before-adguard-20260913 /etc/config/dhcp
service dnsmasq restart
Это откат к состоянию файла в момент копирования: более поздние изменения DHCP тоже будут отменены. Если успели перенести AdGuard на 53, сначала освободите этот порт остановкой AdGuard, иначе dnsmasq не запустится.
После восстановления проверьте DNS с клиента. Финальная проверка рабочей фильтрации — перезагрузка роутера, выдача адресов по DHCP, внешние и локальные имена, IPv6 и доступ к обычным домашним сервисам.
Понравилась статья?
Поставьте лайк и сохраните полезный материал в закладки.
Nginx Proxy Manager: установка и первоначальная настройка reverse proxy с HTTPS в Docker
Как проверить IP на блокировку в ТСПУ: рабочий Python-скрипт для диагностики
VPN только для выбранных сайтов и устройств в OpenWrt: раздельная маршрутизация трафика
Routerich AX3000: настройка роутера на OpenWrt, Mesh, TorrServer и сетевое хранилище
ZeroBlock для OpenWrt: настройка VPN и маршрутизации на Routerich
Pi-hole + Unbound: Ваш приватный DNS-сервер с блокировкой рекламы