Настройка DNS-фильтрации для отдельных устройств через AdGuard Home на роутере Keenetic

Рассмотрим конфигурацию, в которой используется роутер Keenetic GIGA (версия ОС 4.3.6.3). На локальной машине с Ubuntu 24 развернут сервис AdGuard Home в контейнере Docker. Цель - направлять DNS-запросы с определенных устройств сети через этот фильтр.

Исходная конфигурация и проблема

В настройках роутера была выполнена следующая последовательность действий:

  • В меню «Интернет» → «Фильтры» для режима фильтрации выбрано значение «Публичные DNS-резолверы».
  • На вкладке «Настройка DNS» создан отдельный профиль с именем «Профиль модерация».
  • В этом профиле в качестве DNS-сервера указан IP-адрес 192.168.1.20 (хост с AdGuard Home).

Возникшая проблема: при назначении этого профиля целевому устройству интернет на нем перестает работать. Команды nslookup и dig возвращают ошибку «Query refused» или «UnKnown не удалось найти ya.ru: Query refused».

При этом, если явно указать DNS-сервер в запросе (например, nslookup ya.ru 192.168.1.20), разрешение имен работает корректно. Это указывает на то, что сам AdGuard Home функционирует, но роутер неправильно маршрутизирует к нему DNS-трафик.

Вероятная причина и решение

Ошибка «Query refused» часто возникает, когда DNS-запрос приходит с IP-адреса, который не входит в список разрешенных клиентов AdGuard Home. По умолчанию AdGuard Home может принимать запросы только от локального хоста или явно указанных подсетей.

Последовательность действий для решения:

  1. Проверка настроек AdGuard Home:
    • В веб-интерфейсе AdGuard Home (обычно по адресу http://192.168.1.20:3000) перейдите в «Настройки» → «Настройки DNS».
    • В блоке «Настройки доступа» убедитесь, что в поле «Разрешить запросы со следующих IP-адресов и сетей» указана подсеть вашего роутера (например, 192.168.1.0/24) или конкретный IP-адрес роутера (например, 192.168.1.1). Это разрешит принимать запросы от всех устройств сети или от шлюза.
  2. Корректировка настроек роутера Keenetic:
    • В меню «Интернет» → «Фильтры» рекомендуется установить режим «DNS-серверы провайдера» или «Выключено». Это предотвратит возможные конфликты, когда роутер сам пытается фильтровать DNS-запросы, направляемые в ваш профиль.
    • Убедитесь, что в созданном профиле «Профиль модерация» корректно указан порт AdGuard Home (по умолчанию - 53). В поле сервера можно указать 192.168.1.20:53.
  3. Назначение профиля устройству:
    • Перейдите в «Домашняя сеть» → «Устройства», выберите нужное устройство и в его свойствах назначьте созданный DNS-профиль.
  4. Проверка работы:
    • После применения настроек и перезагрузки целевого устройства выполните команду nslookup example.com без указания сервера. Запрос должен теперь автоматически уходить на 192.168.1.20 и успешно разрешаться.

Итог

Ключевым шагом является настройка AdGuard Home на прием запросов от всей локальной сети или от IP-адреса роутера. После этого созданный в роутере DNS-профиль будет корректно перенаправлять запросы выбранных устройств через фильтр, обеспечивая их модерацию без потери интернет-соединения.