AdguardTeam / AdGuardHome

Network-wide ads & trackers blocking DNS server
https://adguard.com/adguard-home.html
GNU General Public License v3.0
24.68k stars 1.79k forks source link

Identifying clients stopped working #4078

Closed Eyeborgs closed 2 years ago

Eyeborgs commented 2 years ago

Issue Details

До обновления v0.107.2 у меня была версия v0.106.3 и там работало Identifying clients по DNS over QUIC и DNS over TLS и они отображались в "Частые клиенты" но после обновления они перестали отображаться - только IP отображается и все.. Подключения по DNS over QUIC и DNS over TLS при этом не ломается и все работает как нужно но без статистики можно так сказать..

Я уже пробовал сбрасывать настройки "шифрования" не помогло, я так же обновил сертификат и это тоже не помогло - мой сертификат по всем правилам поддерживает *.example.org и example.org. Но это все не помогло а именно соединение есть а статистики клиента по этим соединениям нету ну только IP есть и все..

ainar-g commented 2 years ago

Добрый день. Мы не можем воспроизвести эту проблему. Клиенты имеют только один идентификатор (ClientID) или идентифицированы по IP тоже?

Подключения по DNS over QUIC и DNS over TLS при этом не ломается и все работает как нужно но без статистики можно так сказать..

То есть, кастомные настройки клиентов применяются, но в статистике не отображаются?

Eyeborgs commented 2 years ago

Ну оно работает с IP то есть настроенное Имя клиент отображается. Но не отображается настроенное мною Имя клиента когда он подключен к DNS over QUIC и DNS over TLS но при этом соединение работает.

То есть, кастомные настройки клиентов применяются, но в статистике не отображаются?

Да, вы верно написали

ainar-g commented 2 years ago

Прошу прощения за долгий ответ. Мы всё ещё не можем воспроизвести это. Можете дать пример:

  1. Настроек клиента, в особенности все идентификаторы, которые используются.
  2. Как именно вы настраивали устройства, для которых не работает ClientID?
Eyeborgs commented 2 years ago

@ainar-g Не чего страшного за долгий ответ я все понимаю.

  1. Их более 10 штук но я для примера вот сделал скрины.. quic://user-dns.example.org:8853 tls://user-dns.example.org:853 Пользователь подключается к ним и все работает так же в журнале отображается что он подключен через quic или tls но в Клиентах не отображается Домен example.org я менял в исходном коде браузера чтоб не показывать реальный..
Screenshot: ![image](https://user-images.githubusercontent.com/46345396/150824838-fe208800-60f7-4c60-89bb-25841b4ad108.png) ![image](https://user-images.githubusercontent.com/46345396/150824950-26e1c21c-02cf-4bf7-aac0-e420c79dd554.png) ![image](https://user-images.githubusercontent.com/46345396/150825553-f6be60e9-1c17-478a-a7fd-99838ec3f25c.png)
  1. через Настройки клиентов

Как я уже грубо говоря в сотый раз пишу в версии 0.106.3 все работает а в 0.107.2 перестало.. Я не чего не менял с версии 0.106.3 а просто обновил ее на 0.107.2 и все..

Eyeborgs commented 2 years ago

И еще это не может быть связанно с этим #2695 потому что мне кажется эта проблема похожа

ainar-g commented 2 years ago

Второй вопрос был про то, как вы настраивали сами устройства. То есть, что вписали и куда. Например, если речь идёт о телефоне на Android, какой адрес вписывали в настройки сети.

Ещё помогли бы подробные логи. При нормальной работе должны быть логи типа:

2022/01/24 19:52:03.771855 48577#109 [debug] github.com/AdguardTeam/dnsproxy/proxy.(*Proxy).handleTCPConnection(): handling tcp: started handling tls request from 192.168.1.2:12345
2022/01/24 19:52:03.804856 48577#109 [debug] using settings for client Client-With-ID with ip 192.168.1.2 and id "client-dns"

Нам эти данные нужны, чтобы понять, почему на новой версии не работает, и как сделать так, чтобы заработало.

Eyeborgs commented 2 years ago

Скриншот про второй - PC и на Android так же настроено..

Screenshot: ![image](https://user-images.githubusercontent.com/46345396/150828604-b26127bc-ed6f-4224-8a83-9b9f1717b35c.png)

Сейчас попробую включить подробные логи и прислать сюда..

ainar-g commented 2 years ago

Логи можно также прислать на devteam@adguard.com, если хотите дать нам больше логов и не светить их.

ainar-g commented 2 years ago

@Eyeborgs, спасибо за логи! Вы имеете в виду удалить сообщение?

В логах не видим почти вообще обращений из внешних сетей. По большей части локальные адреса, 127.0.0.1 и 192.168.1.1. Перед AdGuard Home стоит какая-либо прокси?

Eyeborgs commented 2 years ago

@ainar-g подключения через роутер я не чего не менял но из вне все работает ну подключение..

Но по факту даже если с локального подключение идет шифрование оно все равно в Клиентах не отображается..

Я сейчас попробую сделать лог на 10 мин, а после да вы можете сами удалить сообщения с логами?

Eyeborgs commented 2 years ago

@ainar-g log2.txt Я так же я тестировал опцию trusted_proxies но она так же не помогает:

Screenshot: ![image](https://user-images.githubusercontent.com/46345396/150835077-fd49ed92-1bda-48c3-8c16-d718f92d6fcc.png)

Я могу сделать 3 лог но потом потому что сейчас семья у меня в других квартирах спят и они по этому не как не могут пользоваться интернетом для проверки...

Или я могу вам предоставить доступ сейчас для тестирования но опять же попрошу удалить потом то сообщения где будет host..

ainar-g commented 2 years ago

Вторые логи получили, но там почти та же ситуация. Похоже, между AGH и реальными запросами из внешней сети всё же что-то стоит. Чтобы считать данные из сертификата, включая ClientID, у AGH должен быть прямой доступ:

client:12345 → AGH:853

Но у вас, судя по логам, может идти что-то типа:

client:12345 → ??? → AGH:853

trusted_proxies — это для DNS-over-HTTP, и в вашем случае не нужно.

Логов пока больше не нужно, но скажите ещё, проставили ли вы в настройках шифрования имя сервера? Оно соответствует вашему example.org?

ainar-g commented 2 years ago

Кажется, я понял, в чём дело. Я заметил, что в ваших логах у всех клиентов суффикс -dns. И у имени сервера домен нижнего уровня dns. У нас был баг, из-за которого принимались неверные хосты типа user-myhost.com вместо верного user.myhost.com. Когда у вас будет время, попробуйте убрать dns. из имени сервера.

Eyeborgs commented 2 years ago

@ainar-g тоесть поставить любое другое слово кроме? dns.

ainar-g commented 2 years ago

Нет, убрать. Если у вас сертификат на *.example.com, то в поле оставить только example.com.

Eyeborgs commented 2 years ago

@ainar-g понял, сделал

Eyeborgs commented 2 years ago

@ainar-g теперь работает и все отображается в Клиентах

ainar-g commented 2 years ago

Ошибка была, но исправлена в цикле 0.107. Ошибкой было именно предыдущее поведение. Домены типа user-myhost.com никогда не должны были восприниматься как домены с ClientID, потому что ClientID должен отделяться именно точкой. Просто ваша конфигурация зависела от этой ошибки, как в классическом комиксе.

Посмотрите насчёт #2695. Теперь, когда распознавание клиентов заработало, должны заработать и правила для клиентов. Только убедитесь, что в client= вы вставляете именно имя клиента, а не ClientID.

В любом случае, спасибо за информацию!

Eyeborgs commented 2 years ago

@ainar-g и вам спасибо, нас счет #2695 я позже протестирую.. Честно говоря огромное вам спасибо а то я уже не знал что делать.. - очень не хотелось возвращаться на приводящую версию потому что тут кэш хорошо работает. И да считайте вы мне подарок сделали этим просто у меня 25.01 день рождения :)