DNS-резолвинг через VLESS - как?

При установке VLESS-соединения сайты не пингуются по имени, но пингуются по IP. Я так понимаю, даже при установке соединения телефон все равно лезет к DNS провайдера, а не использует DNS из опций 3xui на сервере. Гугл выдает одну и ту же дичь: настройка DNS-записей для доступа к панели 3xui, а вот про отправку DNS-запросов через VLESS-соединение нигде ни слова.

Первое предложение не имеет смысла. Днс настраивается на клиенте.

Для режима “VPN” в v2RayTun указан DNS 8.8.8.8 - пинги до него идут, но тот же google.com уже не пингуется.

Во первых через влесс пинговать нельзя, будет либо не работать, либо показывать 1мс, либо пинговать в обход прокси. Без понятия что это за клиент, перейди на другой, shadowrocket (с прокси роутингом в настройках) или v2rayNG
Проще всего проверить на сайте DNS Leak Test - BrowserLeaks
России в списке быть не должно

DNS запросы от всяких программ кто-то должен перехватывать. По протоколу, по UDP/53 порту. Иначе будут утечки. Чтобы через VLESS резолвить, что разумеется, абсолютно правильное решение, следует использовать FakeIP/FakeDNS где клиент отправляет DNS запросы On-Demand, а сервер в свою очередь сам резолвит своим DNS, опять же можно перехватывать, даже перенаправлять на тот или иной DNS по доменным правилам.

На телефоне FakeIP не сделаешь, но DNS запросы должны идти через сервер всё равно, ядро их перехватывает. И уже сервер сам должен будет перехватывать dns протокол и UDP/53. И опционально часть доменов перенаправлять в определенный DNS, например российские - к Yandex DNS (чтобы те же госуслуги открывались с “правильными” IP).

То есть шанс перехвата DNS на телефоне при нормально включенном VPN в ядре - 100%. Шанс перехвата DNS на сервере - зависит от реализации. Главное убедиться что dns и udp/53 перехватывается.

зачем?? достаточно просто настроить встроенный dns-резолвер как описано тут Built-in DNS Server | Project X, плюс добавить правило роутинга типа
{ "type": "field", "port": 53, "outboundTag": "dns" },

и безо всяких там FakeDNS, которые избыточные и создают больше проблем чем пользы.

и по TCP тоже. читайте RFC 1035, узнаете много интересного.

Ну тогда мы потеряем обратную связку IP->host на некоторых типах трафика, где sniffing по SNI/Host невозможен (QUIC / ECH и т.п, а ещё если sniffing произошел после соединения, не тормозить же трафик до полного анализа). FakeIP делает sniffing не нужным для этого клиента. На ПК с зоопарком из всего и вся это полезно.

Резолвер по правилам маршрутизации и переопределению DNS по доменам лучше всего перенести на сервер, а не на клиенты для transparent режима.

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

Да, любой другой нестандартный протокол, всё не изловишь, роутинг рассчитан на стандартные кейсы, понятное дело что всякие HTTPS/TLS и нестандартные порты ты всё равно без MITM не контролируешь, но обычно и не надо.

у меня c fakeip лагает ютуб клиент на андроиде, никто не сталкивался?

Скорее всего оно DNS зарезолвить не может, ждёт timeout → fallback на другой протокол. Самое очевидное объяснение. QUIC можно попробовать отключить в браузере.

зато добавляет кучу непредсказуемости при работе системного DNS-кэша. закэшировалась связка ip/домен домент когда прокси был отключен - FakeDNS не сработает. и наоборот, закэшируется FakeDNS когда прокси был включен - после отключения прокси приложения очень сильно удивятся и будут сыпать connection refused ошибками.

В мобильных клиентах happ/v2rayng(другие не смотрел) есть опция для включения LocalDNS. После этого он будет перехватывать dns-обращения и отправлять в соответствии с настройками - domestic DNS напрямую, а удаленный - через туннель на сервер.

Глобально на сети борюсь с этим простым способом - xray на шлюзе слушает 53 tcp/udp через dokodemo и отправляет всё в dns-outbound. Весь исходящий на port 53 на любые адреса кроме шлюза - redirect на :53.

И утчеки голых запросов нет, и можно любые ресурсы прописать в fakedns.

В v2rayNG и хапп ничего не менял, днс перехватывается

У v2rayng обращения к domestic dns не перехватываются. Скорее всего клиент их вообще не делает, если не указаны ресурсы для direct-обращений и сервер задан по ip, а не по A-записи

Если честно, до сих пор не понимаю, как настроить перехват DNS в v2rayng, может вы что-то подскажете. В мобильном Firefox перестал открываться youtube.com. В v2rayng Enable Sniffing включено, VPN DNS DoH гугла, Remote DNS 8.8.8.8, Domestic DNS 77.88.8.8. Толку ноль. Пробовал включать и выключать Enable Local DNS, толку по-прежнему ноль.

youtube в FF начинает открываться только когда прописываю DoH гугла в самом FF.

DNS Leak Test - BrowserLeaks россия есть?

со смартфона есть, Internet-Exchange MSK-IX и RIPN-DNS. С ПК я хожу через FoxyProxy, при включении опции “Proxy DNS” ничего российского нет, при отключении появляется тот же MSK-IX и RIPN-DNS.

Апдейт: оказывается, у меня в v2rayN на ПК почему-то был вписан 8.8.8.8 в качестве Remote DNS. Поменял на DoH, утечки пропали. Я не пойму, он Remote DNS тоже что ли напрямую пускает, почему оно не через туннель идет?

Плюс, на смартфоне я вписал DoH везде где только можно в настройках v2rayng, но почему-то это все равно не помогает.

Апдейт: обнаружил еще некоторые странности, но не хочу морочить голову добрым людям, попробую настроить клиенты с нуля и отпишусь.

У меня только один вопрос по существу: как корректно перехватить DNS-запросы и завернуть их в туннель в v2rayn?

Не, там в локальный БД сохраняется (кэш), после перезагрузки связка не пропадает. Выключать TUN никогда не нужно. Я не про прокси говорю, а про TUN эмуляцию VPN через прокси.