v2rayN + Wireguard и обход dns запросов мимо signbox_tun

Всем привет.
Бьюсь уже пару дней. Надеюсь сможете мне помочь. Собственно расклад такой:
Есть клиент v2rayN. Там настроен vless сервер и подключение работает. Тут проблем нет.
Далее, в клиенте я тыкаю “Enable tun”, в системе появляет tun интерфейс signbox_tun и логично что все запросы идут через этот туннель и dns запросы на адрес 172.18.0.2(он прописан на этом туннельном интерфейсе.) Идём дальше, я включаю wireguard клиент в профиле подключения указан другой dns сервер DNS = 192.168.250.1. Так вот, после установления соединения wg-туннель работает, пинг по IP ходит, НО! dns запросы идут по прежнему на адрес 172.18.0.2. Как так то? Ведь весь трафик заворачивается в wg-туннель, но вот именно запросы на 53 идут мимо. Всё дело происходит на windows 10.

Трафик идёт согласно таблице машрутизации. Не весь трафик заворачивается, а только тот, который не попал под более приоритетные правила.

Так. Я не использую системный прокси, т.к. у меня и так трафик заворачивается весь. Ага. Согласно таблице, но ведь весь трафик так же должен заворачивать в wg туннель. В противном случае я бы не смог пинговать внутренние адреса в wg туннеле.

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

Хорошо. Но как мне при подключении wg использовать dns от wg?

Первый вариант: должен быть клиент wg который автоматически при подключении заносит подключение к 53 удаленному порту в список блокирующих правил брандмауэра кроме ip адреса указанного в конфигурации и удаляющий это правило при отключении.
Второй вариант: удалить NS резолвер из конфигурации подключения vless сервера.
Третий вариант: запустить свой локальный кэширующий NS stub резолвер со своими настройками concurrency, форвардерами и указать его в конфигурации основного сетевого интерфейса системы, а на всех остальных конфигурациях виртуальных интерфейсов удалять NS сервера, чтобы виндовс использовал только его.

попробуй удалить днс в сетевом адаптере v2rayN после включения tun, можно командой
netsh interface ipv4 set dns name="interface_name" static ""

Насколько я понимаю, когда вы включаете tun-режим, у вас весь трафик системы направляется на адрес tun-интерфейса. Соответственно, там DNS-router один чёрт будет обрабатывать трафик, чтобы понять, что ему кидать напрямую, а что - заворачивать в туннель. Чтобы избежать такого поведения, используйте режим “системный прокси”.

еще бы wireguard работал через системный прокси…

если уж отказываться от tun то можно пробросить порт wireguard через vless, или в nekoray сделать цепочку wg через vless

В Windows чрезвычайно сложный и запутанный механизм работы DNS, и наличие нескольких сетевых интерфейсов только усложняет процесс. Я читал рекомендации: для того чтобы избежать невольных утечек, нужно использовать специальный софт, позволяющий четко строить правила работы DNS в зависимости от интерфейса. Наилучшим образом для этого подходит YogaDNS, там и бесплатная версия позволяет сделать много для отладки и понимания того, что происходит.