mirror of
https://github.com/MHSanaei/3x-ui.git
synced 2026-10-13 17:35:02 +03:00
fix(finalmask): hop client UDP through the udphop mask
xray-core 26.9.9 dropped finalmask.quicParams.udpHop for the client-only
"udphop" UDP mask {mode, interval, remoteIPs, remotePorts}. The panel kept
writing the old key, so hysteria/xhttp outbounds and JSON-subscription
clients silently stopped hopping ports.
An inbound keeps quicParams.udpHop: it is panel metadata advertised as the
link's mport, and a udphop mask on a listener fails with "udphop: client
only". The conversion (maskcompat.UpgradeLegacyUDPHop, intervalRemote mode)
runs only where a client config is produced:
- UDPHopClientMaskFix seeder over hosts, sub-JSON finalmask, cached
outbound-subscription outbounds and template outbounds (never inbounds);
- GetXrayConfig heals template outbounds at build time;
- the JSON subscription upgrades each generated client stream;
- the Go and frontend link importers upgrade a legacy fm= param.
The finalmask editor gains a side prop: the client side lifts the dead key
on mount and offers a udphop mask editor (also for xhttp's HTTP/3 dial);
the inbound side keeps the UDP Hop switch, labelled as advertised.
This commit is contained in:
@@ -147,11 +147,16 @@ TLS. Masks are configured per direction:
|
||||
stream as Minecraft protocol traffic; requires a password, with optional
|
||||
hostname and player usernames).
|
||||
- **UDP masks** — `salamander`, `mkcp-legacy`, `header-custom`, `xdns`, `xicmp`,
|
||||
`noise`, `sudoku`, `realm`. (`mkcp-legacy` reproduces the old mKCP header
|
||||
obfuscation.)
|
||||
`noise`, `sudoku`, `realm`, plus the client-only `udphop`. (`mkcp-legacy`
|
||||
reproduces the old mKCP header obfuscation; `udphop` rotates the remote port —
|
||||
and optionally the remote IP — on an interval or per connection to dodge port
|
||||
blocking.)
|
||||
- **QUIC params** — congestion control (`reno`, `bbr`, `brutal`, `force-brutal`),
|
||||
Brutal up/down rates, `udpHop` (rotate the QUIC port across a range to dodge
|
||||
port blocking), and receive-window tuning.
|
||||
Brutal up/down rates, and receive-window tuning. On an inbound, **UDP Hop** sets
|
||||
the port range advertised to clients (the share link's `mport` and the JSON
|
||||
subscription's `udphop` mask); the server still listens on its own port. Since
|
||||
Xray 26.9.9 a client hops only through the `udphop` mask, so the panel converts
|
||||
an older client `quicParams.udpHop` to it.
|
||||
|
||||
FinalMask replaces the per-transport `header`/`seed` obfuscation that older Xray
|
||||
builds exposed.
|
||||
|
||||
@@ -148,11 +148,16 @@ TLS/REALITY جداگانهای ندارد — ترافیکش همان HTTPS
|
||||
پروتکل Minecraft استتار میکند؛ گذرواژه الزامی است و نام میزبان و نامهای بازیکن
|
||||
اختیاریاند).
|
||||
- **ماسکهای UDP** — `salamander`، `mkcp-legacy`، `header-custom`، `xdns`، `xicmp`،
|
||||
`noise`، `sudoku`، `realm`. (`mkcp-legacy` همان مبهمسازی قدیمی هدر mKCP را
|
||||
بازتولید میکند.)
|
||||
`noise`، `sudoku`، `realm` و `udphop` که فقط سمت کلاینت است. (`mkcp-legacy`
|
||||
همان مبهمسازی قدیمی هدر mKCP را بازتولید میکند؛ `udphop` پورت مقصد — و در صورت
|
||||
نیاز IP مقصد — را در فواصل زمانی یا بهازای هر اتصال عوض میکند تا مسدودسازی پورت
|
||||
دور زده شود.)
|
||||
- **پارامترهای QUIC** — کنترل ازدحام (`reno`، `bbr`، `brutal`، `force-brutal`)،
|
||||
نرخهای آپلود/دانلود Brutal، `udpHop` (چرخاندن پورت QUIC در یک بازه برای دور زدن
|
||||
مسدودسازی پورت)، و تنظیم پنجره دریافت.
|
||||
نرخهای آپلود/دانلود Brutal، و تنظیم پنجره دریافت. در اینباند، **UDP Hop** بازهی
|
||||
پورتی را تعیین میکند که به کلاینتها اعلام میشود (`mport` در لینک اشتراک و ماسک
|
||||
`udphop` در اشتراک JSON)؛ خود سرور همچنان روی پورت خودش گوش میدهد. از Xray
|
||||
26.9.9 کلاینت فقط با ماسک `udphop` پورت عوض میکند، برای همین پنل `quicParams.udpHop`
|
||||
قدیمی کلاینت را به آن تبدیل میکند.
|
||||
|
||||
FinalMask جایگزین مبهمسازی `header`/`seed` بهازای هر انتقال میشود که بیلدهای
|
||||
قدیمیتر Xray نمایش میدادند.
|
||||
|
||||
@@ -150,11 +150,16 @@ XDRIVE передаёт поток файлами в папке, доступн
|
||||
под трафик протокола Minecraft; требуется пароль, имя хоста и имена игроков
|
||||
опциональны).
|
||||
- **UDP-маски** — `salamander`, `mkcp-legacy`, `header-custom`, `xdns`, `xicmp`,
|
||||
`noise`, `sudoku`, `realm`. (`mkcp-legacy` воспроизводит старую обфускацию
|
||||
заголовка mKCP.)
|
||||
`noise`, `sudoku`, `realm`, а также только клиентская `udphop`. (`mkcp-legacy`
|
||||
воспроизводит старую обфускацию заголовка mKCP; `udphop` меняет удалённый порт —
|
||||
и при желании удалённый IP — по интервалу или для каждого соединения, чтобы
|
||||
обходить блокировку портов.)
|
||||
- **Параметры QUIC** — управление перегрузкой (`reno`, `bbr`, `brutal`,
|
||||
`force-brutal`), скорости отдачи/приёма Brutal, `udpHop` (ротация QUIC-порта в
|
||||
пределах диапазона для обхода блокировки портов) и настройка окна приёма.
|
||||
`force-brutal`), скорости отдачи/приёма Brutal и настройка окна приёма. На
|
||||
инбаунде **UDP Hop** задаёт диапазон портов, который объявляется клиентам
|
||||
(`mport` в ссылке и маска `udphop` в JSON-подписке); сам сервер слушает свой
|
||||
порт. Начиная с Xray 26.9.9 клиент меняет порт только через маску `udphop`,
|
||||
поэтому панель преобразует старый клиентский `quicParams.udpHop` в неё.
|
||||
|
||||
FinalMask заменяет обфускацию `header`/`seed` на уровне отдельного транспорта,
|
||||
которую предоставляли старые сборки Xray.
|
||||
|
||||
@@ -138,9 +138,14 @@ XDRIVE 没有自己的 TLS/REALITY 层——其流量就是存储 API 自身的
|
||||
- **TCP 掩码** — `fragment`、`sudoku`、`header-custom`、`xmc`(把流量伪装成
|
||||
Minecraft 协议;密码必填,主机名和玩家用户名可选)。
|
||||
- **UDP 掩码** — `salamander`、`mkcp-legacy`、`header-custom`、`xdns`、`xicmp`、
|
||||
`noise`、`sudoku`、`realm`。(`mkcp-legacy` 重现旧版 mKCP 的头部混淆。)
|
||||
`noise`、`sudoku`、`realm`,以及仅限客户端的 `udphop`。(`mkcp-legacy` 重现旧版
|
||||
mKCP 的头部混淆;`udphop` 按时间间隔或按连接轮换远端端口——也可轮换远端 IP——以规避
|
||||
端口封锁。)
|
||||
- **QUIC 参数** — 拥塞控制(`reno`、`bbr`、`brutal`、`force-brutal`)、Brutal 上/下行
|
||||
速率、`udpHop`(在一个范围内轮换 QUIC 端口以规避端口封锁)以及接收窗口调优。
|
||||
速率以及接收窗口调优。在入站上,**UDP Hop** 设置向客户端公布的端口范围(分享链接的
|
||||
`mport` 和 JSON 订阅中的 `udphop` 掩码);服务器本身仍只监听自己的端口。自 Xray
|
||||
26.9.9 起客户端只通过 `udphop` 掩码跳端口,因此面板会把客户端旧的
|
||||
`quicParams.udpHop` 转换为该掩码。
|
||||
|
||||
FinalMask 取代了旧版 Xray 构建中暴露的、按每种传输各自实现的 `header`/`seed` 混淆。
|
||||
|
||||
|
||||
Reference in New Issue
Block a user