Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Personal DNS server become unreacheable in a couple of days after start but local keeps working #3673

Closed
NoAdO opened this issue Sep 27, 2021 · 19 comments
Labels
cannot reproduce docker Docker-related issues

Comments

@NoAdO
Copy link

NoAdO commented Sep 27, 2021

Version of AdGuard Home server: v0.106.3
How did you install AdGuard Home: Docker run at Synology NAS
How did you setup DNS configuration: inside web UI
CPU architecture: Intel Celeron J3455, Apollolake
Operating system and version: Synology DSM 7.0

Expected Behavior
I expect AdGuard Home server to be aviable to Android phone as a personal (private) DNS all the time it's up and working

Actual Behavior
After some uptime (a couple of days) Adroid phone starts to tell me that Personal (private) DNS server is unreacheable. I can't write exact error text cause my phone is in Russian language. AgHome keeps working for local network devices. Restarting container fixes the problem.

How can i collect logs to investigate the problem?

@ainar-g
Copy link
Contributor

ainar-g commented Sep 27, 2021

Сообщение можно и по-русски. Будет лучше, чем ничего 🙂.

У нас в цикле разработки v0.107.0 было несколько похожих проблем. Можете попробовать обновиться до последней беты и посмотреть, воспроизводится ли эта ситуация?

@ainar-g ainar-g added docker Docker-related issues waiting for data Waiting for users to provide more data. labels Sep 27, 2021
@NoAdO
Copy link
Author

NoAdO commented Sep 27, 2021

Для меня не имеет значения, русский или английский. Если удобней английский - будет английский. Выбрал канал
adguard/adguardhome:beta (13 дней назад) - v0.107.0-b.11 . Есть ещё edge - не понял разницу, видимо совсем нестабильные билды. Контейнер стартовал ОК, буду наблюдать, проблема обычно проявляется через несколько дней.

@ainar-g
Copy link
Contributor

ainar-g commented Sep 27, 2021

Всё верно, edge — это ежедневные сборки, в то время как beta — более стабильные.

@NoAdO
Copy link
Author

NoAdO commented Sep 30, 2021

Боюсь пока не смогу продолжать тестирование - отключал вчера персональный DNS на телефоне по не зависящим от тикета причинам (контейнер не отключал), сегодня решил включить обратно - и он не включился. ВПН домой тоже не включился из-за Let's Encrypt и окончания их корня. Перевыпустил основной серт (он участвует и в ВПН и для Ag Home), в UI Adguard Home его обновил, другая конфигурация не менялась - только серт на актуальный. Всё, телефон пишет "ошибка подключения", как из него добыть подробностей я не знаю, чем ещё можно тестить DoT тоже не знаю, соответственно и на чьей стороне проблема - тоже не знаю. Попробовал обновить до v0.107.0-b.12 - то же самое. UI считает цепочку и приватный ключ валидными. Что дальше - хз, но гитхаб вроде как не техподдержка. Буду думать.

P.S. Имеется второй телефон, на котором не отключался персональный DNS, тоже настроен на DoT на этот же сервер. Утром всё было ОК, потом человек был занят на работе, после работы было обнаружено что "всё кроме телеграм сломалось". Время обнаружения по Москве 17:20, время окончания срока сертов Let's Encrypt - 17:00. Интересно, совпадение ли это или docker образ мб работает со старыми сертами которые истекли?

@ainar-g
Copy link
Contributor

ainar-g commented Sep 30, 2021

Можете начать тред в обсуждениях. У самого Let's Encrypt, пишут, «Degraded Performance».

@NoAdO
Copy link
Author

NoAdO commented Sep 30, 2021

Верно, там есть упоминание в теме именно о проблемах DoT. Я решил что будет проще потратить 5$ на годовой сертификат чтобы исключить влияние LE на ситуацию, так что сейчас всё ок, персональный DNS снова работает, билд v0.107.0-b.12, продолжаю тест.

@NoAdO
Copy link
Author

NoAdO commented Oct 7, 2021

Не могу подтвердить проблему на v0.107.0-b.12 - пару раз ловил недоступность DNS на мобильнике но переключал на вторую SIM чтобы убедиться что оно действительно есть - и оно снималось. То ли мобильный оператор чудит, то ли телефон, то ли какая-то сессия истекает. Не понять. Можно считать что проблема не воспроизводится.

@ainar-g ainar-g closed this as completed Oct 7, 2021
@ainar-g ainar-g added cannot reproduce and removed waiting for data Waiting for users to provide more data. labels Oct 7, 2021
@NoAdO
Copy link
Author

NoAdO commented Nov 12, 2021

И мы вновь возвращаемся к проблеме. Из симптомов в момент проблемы:

  • при включении параметра в android "ошибка подключения" сохраняется долгое время а не пропадает сразу как если указать dns.adguard.com
  • при обычном использовании телефона в какой-то момент сервисы тупят при открытии - не грузятся картинки и видео, клиент ожидает соединения с сервером а оно не идёт.
    В логах по прежнему ничего, вину провайдера или самого телефона приходится снять потому что с другим адресом (dns.adguard.com) всё работает. Последний раз проблема появилась через час после создания контейнера. На хосте с контейнером тоже все в порядке, скачков по потреблению ресурсов не вижу.

Возможно поможет: на портах 80 и 443 отвечает другой вебсервер. Так из-за того что хост DSM и нет понимания как корректно настроить реверспрокси через его UI.

@ainar-g
Copy link
Contributor

ainar-g commented Nov 18, 2021

Если на машине с сервером достаточно места, можете включить подробные логи, в которых больше информации для отладки.

@NoAdO
Copy link
Author

NoAdO commented Nov 24, 2021

Ура, я принёс лог. Куда его выслать? Я подрезал 2 блока проблемных ситуаций захватив по несколько минут с крёв и получилось 3Мб данных, включая историю моих ДНС запросов и адреса девайсов локальной сети что не хотелось бы выкладывать публично. Могу выслать на почту или сгенерить временную ссылку.

Записки о том что происходит я делал на ходу ориентируясь на время телефона т.е. может быть разброс по часам но врядли больше чем на минуту.

Ситуация 1: я выхожу из дома с телефоном, телефон отключается от Wi-Fi и переходит на мобильную сеть, оператор Йота. Я иду пешком по улице к остановке трамвая.
17:17 ОС говорит что персональный ДНС сервер недоступен. Первое упоминание Йоты это, похоже, 2021/11/23 17:18:54.987881 но потом видимо IP поменялся.
17:19 перестаю ждать, переключаю мобильный интернет на Билайн. Немножко задержка но подключился т.е. сообщение о недоступности персонального DNS пропало.
17:24 снова пробую Йоту, не сразу но подключился.

работаем.
В период 17:30 до 18:40 я передвигался по Москве на трамвае, т.е. вышки несколько раз поменялись, но полных разрывов связи не было.

17:31 - запускаю приложение kate mobile (вконтакте) - долго грузятся сообщения хотя параллельно телеграмм работает т.е. интернет есть. (похоже 2021/11/23 17:32:09.170336 )

В логе смущают вот такие штуки:
tls://dot-de.blahdns.com:853: response: Failed to read a request from tls://dot-de.blahdns.com:853, cause: EOF
tls://dns.nextdns.io:853: response: Failed to read a request from tls://dns.nextdns.io:853, cause: EOF

Ситуация 2:
Есть приложение Пикабу что грузит контент для просмотра с одноимённого сайта. Там есть превью картинок при пролистывании ленты и их полные версии при просмотре на весь экран. У Пикабу куча подсвереров так что превью и полные версии могут быть на разных сервах.
18:00 - Йота, лагает загрузка превью картинок хотя список постов грузится (т.е. основной домен доступен)
18:02 - переход на Билайн, ожидание связи с сервером днс - ошибка про недоступность ДНС остаётся
18:04 - перевключение сервера в настройках, продолжение попыток подключения
18:06 - возврат на Йоту, все ещё нет связи с днс сервером
18:06 - частичный отлаг, телефон сообщает что днс сервер доступен, но превью все ещё не грузятся
18:11 - полные версии картинок грузятся, превью нет, случайные сайты грузятся. Случайные сайты это например floriculture
Из интересного в логе в это время:
[debug] tls://dns.adguard.com:853: response: Failed to send a request to tls://dns.adguard.com:853, cause: write tcp внутреннийайпиадгуарда:42692->94.140.14.14:853: write: broken pipe
хотя этих broken pipe куча по всему логу.

Ситуация 3:
21:59 - открываю yandex.ru ... а он не открывается! Пробую открыть apicaldominance - открывается. Чуть жду, снова пробую Яндекс - открывается. начало этого куска я нашёл в логе по времени 2021/11/23 22:00:36.107714 и там тоже есть
The TLS connection is expired due to Failed to read a request from tls://dns.nextdns.io:853, cause: EOF

При этом за всё время работы через домашнюю сеть у меня ни разу не было таких зависаний или проблем, ни на телефоне ни на ПК.

@ainar-g
Copy link
Contributor

ainar-g commented Nov 24, 2021

Спасибо за информацию! Логи можно выслать на devteam@adguard.com, указав тему “AdGuard
Home Issue 3673”.

На первый взгляд, все эти EOF и broken pipe говорят о том, что что-то может резать TCP-соеднинения от AGH к апстримам. Можете попробовать указать DNS-over-QUIC-апстримы, например quic://dns-unfiltered.adguard.com и/или quic://dns.nextdns.io?

@NoAdO
Copy link
Author

NoAdO commented Nov 24, 2021

Да, могу. Текущие upstream:
https://dns10.quad9.net/dns-query tls://dot-de.blahdns.com tls://dns.nextdns.io https://doh-de.blahdns.com/dns-query https://dns.adguard.com/dns-query tls://dns.adguard.com
И "параллельные запросы". Я полагал что это должно спасать от ситуации когда ни один сервер не возвращает ответ. Я понимаю что я могу получать ошибку и частичную недоступность как при отсутствии связи с моим ДНС так и при проблемах с апстримами, надеюсь лог поможет понять где именно беда. И да, я наблюдал сегодня кратковременную проблему с приложением из "Ситуация 2" при отключенном персональном ДНС, так что возможно это их глючит... но с другой стороны ошибка недоступности ДНС-то была.

Upd. Логи выслал, quic://dns.nextdns.io поставил

@NoAdO
Copy link
Author

NoAdO commented Nov 29, 2021

Нашлось что-то в логах? Увы, добавление quic не решило проблему, вчера опять поймал якобы недоступность персонального DNS, но verbose был выключен так что надо видимо по новой включать и записывать информацию о времени проблемы, если нужны ещё логи.

@ainar-g
Copy link
Contributor

ainar-g commented Nov 29, 2021

Спасибо за логи! К сожалению, в них мы видим только ещё больше тех же самых EOF и broken pipe. Может ли быть так, что ваш провайдер режет соединения от роутера?

И ещё, я вижу, что сравнительно немного отдаётся из кеша. Вы пробовали увеличить его размер? Возможно, вы попадаете в rate limit самих сервисов.

@NoAdO
Copy link
Author

NoAdO commented Nov 30, 2021

Провайдер может... но дома почему-то проблем не наблюдается. Увеличил размер кеша с 4,19Мб (4194304 байт) до 100Мб. (104857600 байт). Но да, мне тоже было не ясно почему перезапрашиваются некоторые недавно посещенные домены. Какой размер кэша можно считать адекватным?

@ainar-g
Copy link
Contributor

ainar-g commented Dec 1, 2021

Размер зависит от нагрузки, но думаю, что 16–32 МиБ обычно хватает.

Есть ещё известная проблема, что кэш не работает для клиентов с особыми правилами апстримов. См. AdguardTeam/dnsproxy#169.

@NoAdO
Copy link
Author

NoAdO commented Dec 2, 2021

Хм, интересный момент. Устройство в списке клиентов сохранено, но сохранение имеет вид "локальный IP -> имя". В списке клиентов при работе через мобильный интернет телефон отображается как "client.yota.ru (IP)" то есть адгуард его "не узнаёт". Особых правил апстримов не применено ни к кому.

Нагрузка - около 5 девайсов на 2 человек... не выглядит существенной. Пока повторений проблемы не было.

@NoAdO
Copy link
Author

NoAdO commented Dec 3, 2021

Было повторение проблемы, при чём идентично тому что я описывал выше. Выход из дома - переключение на мобильную сеть - проблема с DNS.

@NoAdO
Copy link
Author

NoAdO commented Dec 13, 2021

Последнее время проблем не было. Видимо увеличение кэша действительно помогло.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
cannot reproduce docker Docker-related issues
Projects
None yet
Development

No branches or pull requests

2 participants