Цепочка Клиент-WG-Vless и UDP трафик

Имеется две VPS.

VPS1 - находится в европе и на ней стоит xray сервер. (VLESS, XTLS и REALITY).

VPS2 - находится в РФ и на ней стоит WG сервер и Sing-Box клиент.

Между VPS’ками проброшен туннель. Пришлось организовать этот костыль в виду последних событий с блокировками vless. И все отлично работает… кроме UDP трафика.

Если цепляться напрямую в режиме TUN к VPS1 со включенным XUDP на клиенте NekoBox, то UDP трафик бегает. Discord работает.

Если подключаться через VPS2, то UDP уже не проходит.

Я так понимаю, что клиентская часть VLESS на VPS2 настроена у меня не корректно и затык происходит именно в этом месте (конфиг ниже):

"outbounds": [
        {
            "type": "vless",
            "server": "*.*.*.*",
            "server_port": 443,
            "uuid": "*-*-*-*-*",
            "flow": "xtls-rprx-vision",
            "network": "tcp",
            "packet_encoding": "xudp",
            "tls": {
                "enabled": true,
                "disable_sni": false,
                "server_name": "www.*.com",
                "insecure": false,
                "utls": {
                    "enabled": true,
                    "fingerprint": "chrome"
                },
                "reality": {
                    "enabled": true,
                    "public_key": "*",
                    "short_id": "*"

По идее вообще весь трафик должен заворачиваться в туннель:

"inbounds": [
        {
            "type": "tun",
      "tag": "tun-in",
      "interface_name": "tun0",
      "address": "10.10.10.2/24",
      "stack": "gvisor",
      "auto_route": true,
      "endpoint_independent_nat": true,
      "strict_route": false,
      "sniff": true,
      "domain_strategy": "ipv4_only"
        }
    ],

Но UDP где то отваливается. Помогите найти.

Во первых ничего непонятно, недостаточно информации, во вторых зачем так сложно? Сделай проброс wireguard порта с ру впс на eu vps. В третьих vless починить очень просто (через grpc или xhttp с max_conn=1). И вообще цепочку прокси (wg через vless в данном случае на сколько я понял) можно делать и в клиенте (throne на пк, husi на андроид)

Видимо я костноязычен, хотя куда подробней?

Подключаемся к WG на ру vps. Ру vps соеденена с eu vps туннелем на Vless.

Клиент подключается к ру vps и вылезает уже в европе.

Как по мне идеально и очень легко разворачивается вся эта конфигурация. Для базовых потребностей вполне себе вариант. Ютубы\инстаграммы работают. А вот дискорд висит на подключении.

Пробросить сразу WG между VPS, как Вы предлагаете, это трансграничный переход же. РКН заблочит это соединение еще на этапе рукопожатия.

throne на пк, husi на андроид - это все наверно замечательно, но вопрос в другом.

Вопрос не в том как починить VLESS, а как заставить UDP трафик заворачивать в туннель.

Зачем tun? В синг боксе есть поддержка wireguard. И вообще у вас включены deprecated опции (sniff), это может создавать проблемы.

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

А если просто tcpdump’ом в туннеле посмотреть, то там что видно? А то сейчас вы исходите из предположения, что проблема именно на vps2, неплохо бы убедиться..

А можно и запустить для теста…

tun - логично, для туннелирования. Без тун udp не взлетит.

Синг-бокс потдерживает WG, не знал. Ок. Как мне это может помочь?

Tun != туннель, это вообще-то виртуальный сетевой адаптер, в который идет роутинг пакетов с вашего wireguard интерфейса (сервера). Ну и я предлагал вам убрать этот tun адаптер и переместить wireguard сервер в sing-box, что тут непонятно? (я не проверял умеет ли синг бокс работать в таком режиме, но вы не даете достаточно инфы, ничего другого предложить не могу)

Проверял iperf’ом. UDP трафика нет.

хмм.. откуда и куда? с vps2 на vps1 или с клиента на vps2?

С клиента на vps2

В вашем случае это действительно происходит? Весьма вероятно, что нет. Между ДЦ не столь строго.

Честно, не проверял. Но в перспективе это будет слабое место.

Ваш вариант мне понятен. Цепочку WG я без проблем подниму и уверен, там UDP побежит.

Но хочется через Vless.

Пробрасывайте порт влесс (и WG тоже на всякий случай)

Моих знаний не достаточно. Буду изучать. Правильно понимаю, что клиент будет подключаться к vless, но уже к vps2?

Да как угодно можно, только у вас проблемы со сложной схемой. Самое простое что можно сделать это пробросить порт: трафик на порт 1234 ру впс будет идти на порт 1234 eu vps. Можно через iptables, можно через sing-box (прямой проброс или через влесс или любой другой протокол)

прямой роутинг через iptables

sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A PREROUTING -p tcp --dport 123456 -j DNAT --to-destination EU_VPS_IP
iptables -t nat -A PREROUTING -p udp --dport 123456 -j DNAT --to-destination EU_VPS_IP
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#eth0 менять на свой, смотр. ifconfig

тоже самое через sing-box https://pastebin.com/raw/dHZ0f9jg (меняете direct outbound на свой нужный (напр влесс) если хотите)

А как РКН смотрит на VLESS трафик внутри РФ? Все осложняется еще и тем, что я не могу протестировать, т.к. мой провайдер не блокирует VLESS.

ркн не смотрит на vless трафик, когда сибирская блокировка была в разгаре то блокировка множественных TLS сессий действовала одинаково на все серверы (и ру и eu), щас сложно понять т.к. она осталась у малого количества людей, один чел тестил, у него блок действует только на некоторые европейские направления

Вы предлагаете порт пробросить напрямую, не через туннель? Т.е. расчёт на то, что между ЦОДами нет фильтрации?

для простоты - да. если хотите через “туннель” (напр влесс) то делайте через мой sing-box конфиг и добавляйте vless вместо direct-out (конечно будет не идеальная производительность, но схема гораздо проще и ломаться тут почти нечему)