Вопрос или проблема
Я запускаю 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 сервера (Macos) с установленным AdguardHome.
Панель управления AdGuard
Вопрос: Почему DNS-запросы не проходят через AdGuard Home и как я могу это исправить?
Ответ или решение
Проблема: DNS-запросы не проходят через AdGuard Home после настройки DNS маршрутизатора
У вас возникла проблема, когда DNS-запросы не направляются через AdGuard Home после его настройки на маршрутизаторе. Рассмотрим возможные причины и способы решения данной проблемы.
Анализ проблемы
-
Конфигурация сети и Docker:
- Вы используете AdGuard Home в Docker на Ubuntu 22.04 с IP-адресом 192.168.1.3.
- В
docker-compose.yml
указаны порты для DNS (53) и другие необходимые порты. - Сеть сконфигурирована с использованием драйвера
bridge
.
-
Логи ошибок:
- Из логов видно, что AdGuard сталкивается с проблемой таймаута при обращении к внешним DNS-серверам, таким как 9.9.9.10 и 149.112.112.10.
-
Настройки маршрутизатора:
- Судя по предоставленным скриншотам, настройки маршрутизатора должны направлять DNS-запросы на IP адрес 192.168.1.3.
Возможные причины и решения
-
Проблемы с Docker-сетью:
- Убедитесь, что контейнер Docker имеет доступ к внешнему интернету. Попробуйте использовать команду
docker network inspect bridge
и проверьте, правильно ли настроены сети.
- Убедитесь, что контейнер Docker имеет доступ к внешнему интернету. Попробуйте использовать команду
-
Проблемы с брандмауэром:
- Проверьте настройки брандмауэра на вашей Ubuntu и маршрутизаторе, чтобы убедиться, что порты 53 и другие необходимые для AdGuard Home не блокируются.
-
DNS-серверы AdGuard Home:
- Проверьте настройки DNS-серверов в AdGuard Home на предмет допустимости адресов. Вы можете вручную изменить DNS-серверы на более надежные, такие как Google (8.8.8.8) или другие.
-
Конфигурация Docker:
- Проверьте, что контейнер AdGuard Home имеет необходимые разрешения. Возможно, потребуется применить настройки привилегированного режима для контейнера.
-
Конфликт IP-адресов или настроек:
- Проверьте, нет ли конфликта IP-адресов между устройствами в сети. Убедитесь в корректности статического IP вашей Ubuntu.
-
NSLookup и кэш DNS:
- Проверьте, не происходит ли обход AdGuard за счет кэширования DNS на конечных устройствах. Очистите DNS-кэш на тестируемых устройствах.
Заключение
Проблема может быть вызвана множеством факторов, связанных с сетевыми настройками, конфигурацией Docker или DNS. Рекомендуется пройтись по всем пунктам, каждый из которых может влиять на нормальную работу AdGuard Home в вашей сети. Если проблема сохраняется, возможно, потребуется дальнейший анализ сетевых пакетов для детального понимания источника проблемы.