Вопрос или проблема
Я запускаю AdGuard Home в Docker на Ubuntu 22.04 с IP 192.168.1.3 (статический IP для моего компьютера, на котором работает AdGuard Home). При тестировании через nslookup google.com запросы не проходят через AdGuard, несмотря на настройку роутера. Я внимательно прочитал документы
version: '3'
services:
adguardhome:
image: adguard/adguardhome
container_name: adguardhome
restart: unless-stopped
volumes:
- adguard_work:/opt/adguardhome/work
- adguard_conf:/opt/adguardhome/conf
ports:
- "53:53/tcp"
- "53:53/udp"
- "67:67/udp"
- "68:68/udp"
- "80:80/tcp"
- "443:443/tcp"
- "443:443/udp"
- "3000:3000/tcp"
- "853:853/tcp"
- "784:784/udp"
- "853:853/udp"
- "8853:8853/udp"
- "5443:5443/tcp"
- "5443:5443/udp"
extra_hosts:
- "host.docker.internal:host-gateway"
volumes:
adguard_work:
adguard_conf:
networks:
adguard_net:
driver: bridge
Я проверил журналы в контейнере Docker.
2024/12/30 17:28:12.165187 ERROR response received addr=149.112.112.10:53 proto=udp status="exchanging with 149.112.112.10:53 over udp: read udp 172.20.0.2:60344->149.112.112.10:53: i/o timeout"
2024/12/30 17:28:12.165203 ERROR response received addr=9.9.9.10:53 proto=udp status="exchanging with 9.9.9.10:53 over udp: read udp 172.20.0.2:56324->9.9.9.10:53: i/o timeout"
2024/12/30 17:28:12.165187 ERROR response received addr=149.112.112.10:53 proto=udp status="exchanging with 149.112.112.10:53 over udp: read udp 172.20.0.2:59324->149.112.112.10:53: i/o timeout"
2024/12/30 17:28:12.165246 ERROR response received addr=9.9.9.10:53 proto=udp status="exchanging with 9.9.9.10:53 over udp: read udp 172.20.0.2:55067->9.9.9.10:53: i/o timeout"
2024/12/30 17:28:12.165343 [error] dnsproxy: exchange failed upstream=https://dns10.quad9.net:443/dns-query question=";homewifi3.viettel.vn.\tIN\t AAAA" duration=20.001750716s err="failed to init http client: initializing http transport: bootstrapping https://dns10.quad9.net:443/dns-query: dialing \"dns10.quad9.net:443\": resolving hostname: dialing [2620:fe::fe:10]:53 over udp: dial udp [2620:fe::fe:10]:53: connect: cannot assign requested address\ndialing [2620:fe::fe:10]:53 over udp: dial udp [2620:fe::fe:10]:53: connect: cannot assign requested address\ndialing [2620:fe::10]:53 over udp: dial udp [2620:fe::10]:53: connect: cannot assign requested address\ndialing [2620:fe::10]:53 over udp: dial udp [2620:fe::10]:53: connect: cannot assign requested address\nexchanging with 149.112.112.10:53 over udp: read udp 172.20.0.2:60344->149.112.112.10:53: i/o timeout\nexchanging with 149.112.112.10:53 over udp: read udp 172.20.0.2:59324->149.112.112.10:53: i/o timeout\nexchanging with 9.9.9.10:53 over udp: read udp 172.20.0.2:56324->9.9.9.10:53: i/o timeout\nexchanging with 9.9.9.10:53 over udp: read udp 172.20.0.2:55067->9.9.9.10:53: i/o timeout"
2024/12/30 17:28:12.165456 [error] dnsproxy: exchange failed upstream=https://dns10.quad9.net:443/dns-query question=";homewifi3.viettel.vn.\tIN\t A" duration=20.0017958s err="failed to init http client: timeout exceeded: 20.001791258s"
Это моя конфигурация на роутере.
IP Server (Macos) с запуска AdguardHome.
Панель управления AdGuard
Вопрос: Почему DNS-запросы не проходят через AdGuard Home и как я могу это исправить?
Ответ или решение
Здравствуйте,
Ваше решение проблемы с DNS-запросами, которые не проходят через AdGuard Home, требует детальной проверки конфигурации сети, контейнера Docker и используемого сетевого оборудования. Давайте разберёмся в деталях:
Анализ проблемы
-
Аппаратная конфигурация: Вы используете Docker для запуска AdGuard Home на Ubuntu 22.04 и установили статический IP-адрес 192.168.1.3 для этой машины. Это правильный шаг, так как статический IP обеспечивает стабильность в маршрутизации.
-
Настройка Docker: Ваш Docker Compose файл включает правильные порты, необходимые для работы AdGuard Home (по крайней мере TCP/UDP 53 для DNS), но также включены порты для других сервисов как DHCP (67/68 UDP), Web (80/443 TCP), и так далее. Убедитесь, что в вашей сетевой инфраструктуре эти порты доступны и не блокируются.
-
Логи: Логи AdGuard Home указывают на проблемы с подключением к внешним DNS-серверам (например,
149.112.112.10
). Это может быть вызвано несколькими факторами:- Проблемы с сетевым подключением или маршрутизацией.
- Блокировка портов на уровне фаерволла либо роутера.
- Некорректная настройка DNS Proxy или неверные адреса upstream серверов.
-
Роутер: Конфигурация вашего роутера может включать DNS-серверы, которые не перенаправляют запросы через AdGuard. Убедитесь, что IP вашего AdGuard Home установлен как основной DNS-сервер на уровне роутера.
Возможные решения
-
Проверка маршрутизации: Убедитесь, что система, на которой работает Docker, имеет правильный маршрут до внешних DNS-серверов, и нет промежуточных блокировок. Попробуйте выполнить команды
ping
иtraceroute
к одному из внешних DNS-серверов для диагностики. -
Настройки фаервола: Проверьте настройки фаервола как на уровне Ubuntu, так и на уровне роутера. Убедитесь, что порты 53 (UDP и TCP) не заблокированы для входящего/исходящего трафика.
-
Проверка Upstream DNS-серверов: В интерфейсе Dashboard AdGuard Home убедитесь, что указаны корректные серверы upstream DNS. Также можно протестировать другие известные публичные DNS-серверы, вроде Google (8.8.8.8, 8.8.4.4) или Cloudflare (1.1.1.1).
-
Конфигурация роутера: Проверьте и обновите настройки DNS на роутере. Этот IP должен соответствовать IP вашего AdGuard Home, а DNS сервера на роутере должны перенаправлять запросы именно на него.
-
Проверка сетевых настроек Docker: Обратите внимание на сетевую конфигурацию Docker и наличие всех необходимых bridge интерфейсов. Возможно, понадобится обновить настройки сети в файле
docker-compose.yml
для использования правильного сетевого режима.
Заключение
Корректное функционирование DNS-серверов является ключевым элементом производительной и безопасной сети. Чтобы устранить вашу проблему, убедитесь в правильной конфигурации каждого компонента вашей инфраструктуры. Последовательная диагностика и устранение неполадок на каждом уровне системы непременно приведёт к успешному решению задачи.
Если проблемы сохраняются, возможно, стоит обратиться к поддержке AdGuard или сообществу для детальной проработки вопроса.
С уважением, [Ваше имя]