diff --git a/docs/content/docs/en/config/reality.mdx b/docs/content/docs/en/config/reality.mdx index 0b6470ee1..c61b08680 100644 --- a/docs/content/docs/en/config/reality.mdx +++ b/docs/content/docs/en/config/reality.mdx @@ -118,6 +118,13 @@ vless://@:443?security=reality&pbk=&sid=&sni - **Leaked private key.** Only ever distribute the **public** key to clients. - **Wrong flow.** REALITY + XTLS-Vision needs `flow = xtls-rprx-vision` on both the inbound client entry and the share link. +- **Old client cores rejected by default.** An empty **Min Client Ver** is not + "no limit": Xray-core falls back to the built-in minimum of the core build you + run (26.3.27 in current releases) that keeps client TLS fingerprints fresh, so + third-party cores such as Mihomo and sing-box fail REALITY verification even + with a correct config — clients see timeouts while only Xray-core based apps + connect. Set it to `1.0.0` only if you must support them; that also re-admits + outdated fingerprints. diff --git a/docs/content/docs/fa/config/reality.mdx b/docs/content/docs/fa/config/reality.mdx index 5b3dca601..33a57bcc7 100644 --- a/docs/content/docs/fa/config/reality.mdx +++ b/docs/content/docs/fa/config/reality.mdx @@ -118,6 +118,13 @@ vless://@:443?security=reality&pbk=&sid=&sni - **نشت کلید خصوصی.** فقط و فقط **کلید عمومی** را میان کلاینت‌ها توزیع کنید. - **جریان نادرست.** REALITY + XTLS-Vision به `flow = xtls-rprx-vision` هم در ورودیِ مدخل کلاینت و هم در لینک اشتراک‌گذاری نیاز دارد. +- **هسته‌های قدیمی کلاینت به‌طور پیش‌فرض رد می‌شوند.** خالی گذاشتن + **حداقل نسخه کلاینت** به معنای «بدون محدودیت» نیست: Xray-core به حداقل داخلیِ + نسخهٔ هسته‌ای که اجرا می‌کنید (در نسخه‌های فعلی 26.3.27) بازمی‌گردد تا اثر انگشت‌های TLS کلاینت‌ها تازه + بمانند؛ در نتیجه هسته‌های شخص ثالث مانند Mihomo و sing-box حتی با پیکربندی + کاملاً درست در تأیید REALITY شکست می‌خورند — کلاینت‌ها تایم‌اوت می‌بینند و فقط + اپلیکیشن‌های مبتنی بر Xray-core وصل می‌شوند. تنها در صورت نیاز به پشتیبانی از + آن‌ها مقدار `1.0.0` را تنظیم کنید؛ این کار اثر انگشت‌های قدیمی را هم می‌پذیرد. diff --git a/docs/content/docs/ru/config/reality.mdx b/docs/content/docs/ru/config/reality.mdx index c81bfb814..ff9e5bb8d 100644 --- a/docs/content/docs/ru/config/reality.mdx +++ b/docs/content/docs/ru/config/reality.mdx @@ -123,6 +123,14 @@ vless://@:443?security=reality&pbk=&sid=&sni ключ. - **Неправильный поток.** Для REALITY + XTLS-Vision нужен `flow = xtls-rprx-vision` как в записи клиента входящего подключения, так и в ссылке для подключения. +- **Старые ядра клиентов отклоняются по умолчанию.** Пустое поле + **Мин. версия клиента** не означает «без ограничений»: Xray-core использует + встроенный минимум используемой сборки ядра (26.3.27 в текущих релизах), + который поддерживает свежесть + TLS-отпечатков клиентов, поэтому сторонние ядра, такие как Mihomo и sing-box, + не проходят проверку REALITY даже при корректной конфигурации — клиенты видят + таймауты, а подключаются только приложения на базе Xray-core. Ставьте `1.0.0`, + только если они вам необходимы; это также допустит устаревшие отпечатки. diff --git a/docs/content/docs/zh/config/reality.mdx b/docs/content/docs/zh/config/reality.mdx index 749491db2..d0e06e9c2 100644 --- a/docs/content/docs/zh/config/reality.mdx +++ b/docs/content/docs/zh/config/reality.mdx @@ -105,6 +105,7 @@ vless://@:443?security=reality&pbk=&sid=&sni - **SNI 不匹配。** SNI / server names 必须与目标站点的真实证书匹配,否则握手会暴露伪装。 - **私钥泄露。** 永远只把**公钥**分发给客户端。 - **流控设置错误。** REALITY + XTLS-Vision 要求在入站的客户端条目和分享链接上都设置 `flow = xtls-rprx-vision`。 +- **旧客户端内核默认被拒。** **最小客户端版本**留空并不是“不限制”:Xray-core 会退回到所运行内核版本的内置最低值(当前版本为 26.3.27)以保证客户端 TLS 指纹的新鲜度,因此 Mihomo、sing-box 等第三方内核即使配置完全正确也会导致 REALITY 验证失败——表现为客户端超时,只有基于 Xray-core 的应用能连上。只有在必须支持它们时才填 `1.0.0`;这同时也会放行过时的指纹。 diff --git a/frontend/src/pages/inbounds/form/security/reality.tsx b/frontend/src/pages/inbounds/form/security/reality.tsx index 5476dbf09..ee4d5edd9 100644 --- a/frontend/src/pages/inbounds/form/security/reality.tsx +++ b/frontend/src/pages/inbounds/form/security/reality.tsx @@ -127,14 +127,16 @@ export default function RealityForm({ - + diff --git a/internal/web/translation/ar-EG.json b/internal/web/translation/ar-EG.json index 14731e50a..c3f4736ef 100644 --- a/internal/web/translation/ar-EG.json +++ b/internal/web/translation/ar-EG.json @@ -636,6 +636,8 @@ "maxTimeDiff": "أقصى فرق زمن (ms)", "minClientVer": "أدنى إصدار للعميل", "maxClientVer": "أقصى إصدار للعميل", + "minClientVerHint": "تركه فارغًا لا يعني بلا قيود: سيفرض Xray-core الحد الأدنى المدمج في إصدار النواة الذي تشغّله (26.3.27 في الإصدارات الحالية) ويرفض العملاء الذين يبلغون عن إصدار أقدم — بما في ذلك النوى الخارجية مثل Mihomo و sing-box. القيمة 1.0.0 تقبلها، مقابل السماح ببصمات TLS قديمة.", + "maxClientVerHint": "تركه فارغًا يعني بلا حد أقصى. إذا عُيّن، يجب ألا يقل عن الحد الأدنى الفعلي — أدنى إصدار للعميل، أو الحد الأدنى المدمج في Xray-core عندما يكون ذلك الحقل فارغًا — وإلا سيُرفض جميع العملاء.", "shortIds": "Short IDs", "realityTargetHint": "مطلوب. يجب أن يتضمّن منفذًا (مثل example.com:443). بدون منفذ يرفض Xray-core البدء.", "realityTargetRequired": "هدف REALITY مطلوب", diff --git a/internal/web/translation/en-US.json b/internal/web/translation/en-US.json index b7b3fcc1d..98d60791c 100644 --- a/internal/web/translation/en-US.json +++ b/internal/web/translation/en-US.json @@ -648,6 +648,8 @@ "maxTimeDiff": "Max Time Diff (ms)", "minClientVer": "Min Client Ver", "maxClientVer": "Max Client Ver", + "minClientVerHint": "Empty does not mean unrestricted: Xray-core then enforces the built-in minimum of the core build you run (26.3.27 in current releases) and rejects clients that report an older version — including third-party cores such as Mihomo and sing-box. Set 1.0.0 to accept them, at the cost of admitting outdated TLS fingerprints.", + "maxClientVerHint": "Empty means no upper limit. If set, it must not be lower than the effective minimum — Min Client Ver, or Xray-core's built-in minimum when that field is empty — otherwise every client is rejected.", "shortIds": "Short IDs", "realityTargetHint": "Required. Must include a port (e.g. example.com:443). Without a port Xray-core refuses to start.", "realityTargetRequired": "REALITY target is required", diff --git a/internal/web/translation/es-ES.json b/internal/web/translation/es-ES.json index 73ed5196d..6d1cb3d85 100644 --- a/internal/web/translation/es-ES.json +++ b/internal/web/translation/es-ES.json @@ -657,6 +657,8 @@ "maxTimeDiff": "Máx. diferencia de tiempo (ms)", "minClientVer": "Mín. versión cliente", "maxClientVer": "Máx. versión cliente", + "minClientVerHint": "Vacío no significa sin restricción: Xray-core aplica entonces el mínimo integrado de la build del núcleo en uso (26.3.27 en las versiones actuales) y rechaza a los clientes que reportan una versión anterior, incluidos núcleos de terceros como Mihomo y sing-box. Con 1.0.0 se aceptan, a costa de admitir huellas TLS obsoletas.", + "maxClientVerHint": "Vacío significa sin límite superior. Si se establece, no debe ser inferior al mínimo efectivo — la versión mínima del cliente o, si ese campo está vacío, el mínimo integrado de Xray-core — o todos los clientes serán rechazados.", "shortIds": "Short IDs", "realityTargetHint": "Obligatorio. Debe incluir un puerto (p. ej. example.com:443). Sin puerto, Xray-core no arranca.", "realityTargetRequired": "El destino REALITY es obligatorio", diff --git a/internal/web/translation/fa-IR.json b/internal/web/translation/fa-IR.json index 968773746..a16add0d1 100644 --- a/internal/web/translation/fa-IR.json +++ b/internal/web/translation/fa-IR.json @@ -648,6 +648,8 @@ "maxTimeDiff": "حداکثر اختلاف زمان (ms)", "minClientVer": "حداقل نسخه کلاینت", "maxClientVer": "حداکثر نسخه کلاینت", + "minClientVerHint": "خالی بودن به معنای بدون محدودیت نیست: در این حالت Xray-core حداقل داخلیِ نسخهٔ هسته‌ای را که اجرا می‌کنید (در نسخه‌های فعلی 26.3.27) اعمال می‌کند و کلاینت‌هایی را که نسخهٔ قدیمی‌تری اعلام می‌کنند رد می‌کند — از جمله هسته‌های شخص ثالث مانند Mihomo و sing-box. مقدار 1.0.0 آن‌ها را می‌پذیرد، به بهای پذیرش اثر انگشت‌های TLS قدیمی.", + "maxClientVerHint": "خالی یعنی بدون سقف. در صورت تنظیم، نباید از حداقلِ مؤثر — حداقل نسخه کلاینت، و در صورت خالی بودن آن فیلد، حداقل داخلی Xray-core — کمتر باشد، وگرنه همهٔ کلاینت‌ها رد می‌شوند.", "shortIds": "Short IDها", "realityTargetHint": "الزامی است. باید شامل پورت باشد (مثلاً example.com:443). بدون پورت، Xray-core اجرا نمی‌شود.", "realityTargetRequired": "هدف REALITY الزامی است", diff --git a/internal/web/translation/id-ID.json b/internal/web/translation/id-ID.json index d785794bc..00cce6efa 100644 --- a/internal/web/translation/id-ID.json +++ b/internal/web/translation/id-ID.json @@ -636,6 +636,8 @@ "maxTimeDiff": "Maks. selisih waktu (ms)", "minClientVer": "Min. versi klien", "maxClientVer": "Maks. versi klien", + "minClientVerHint": "Kosong bukan berarti tanpa batas: Xray-core akan memakai minimum bawaan dari build core yang dijalankan (26.3.27 pada rilis saat ini) dan menolak klien yang melaporkan versi lebih lama — termasuk core pihak ketiga seperti Mihomo dan sing-box. Isi 1.0.0 untuk menerimanya, dengan risiko mengizinkan sidik jari TLS yang usang.", + "maxClientVerHint": "Kosong berarti tanpa batas atas. Jika diisi, tidak boleh lebih rendah dari minimum efektif — versi klien minimum, atau minimum bawaan Xray-core saat kolom itu kosong — atau semua klien akan ditolak.", "shortIds": "Short IDs", "realityTargetHint": "Wajib. Harus menyertakan port (mis. example.com:443). Tanpa port, Xray-core menolak untuk mulai.", "realityTargetRequired": "Target REALITY wajib diisi", diff --git a/internal/web/translation/ja-JP.json b/internal/web/translation/ja-JP.json index 374b19331..9aebf242b 100644 --- a/internal/web/translation/ja-JP.json +++ b/internal/web/translation/ja-JP.json @@ -657,6 +657,8 @@ "maxTimeDiff": "最大時間差 (ms)", "minClientVer": "最小クライアントバージョン", "maxClientVer": "最大クライアントバージョン", + "minClientVerHint": "空欄は無制限ではありません。Xray-core は実行中のコアに組み込まれた最低バージョン(現行リリースでは 26.3.27)を適用し、それより古いバージョンを名乗るクライアント(Mihomo や sing-box などのサードパーティコアを含む)を拒否します。1.0.0 を設定すると許可されますが、古い TLS フィンガープリントも受け入れることになります。", + "maxClientVerHint": "空欄は上限なしを意味します。設定する場合は実効的な下限(最小クライアントバージョン。その欄が空欄の場合は Xray-core 組み込みの最低バージョン)を下回らないでください。下回るとすべてのクライアントが拒否されます。", "shortIds": "Short IDs", "realityTargetHint": "必須です。ポートを含める必要があります(例: example.com:443)。ポートがないと Xray-core は起動しません。", "realityTargetRequired": "REALITY ターゲットは必須です", diff --git a/internal/web/translation/pt-BR.json b/internal/web/translation/pt-BR.json index ccdedd656..6cd5d5902 100644 --- a/internal/web/translation/pt-BR.json +++ b/internal/web/translation/pt-BR.json @@ -657,6 +657,8 @@ "maxTimeDiff": "Máx. diferença de tempo (ms)", "minClientVer": "Mín. versão cliente", "maxClientVer": "Máx. versão cliente", + "minClientVerHint": "Vazio não significa sem restrição: o Xray-core aplica o mínimo embutido da build do núcleo em uso (26.3.27 nas versões atuais) e rejeita clientes que reportam uma versão mais antiga — incluindo núcleos de terceiros como Mihomo e sing-box. Definir 1.0.0 os aceita, ao custo de admitir impressões digitais TLS desatualizadas.", + "maxClientVerHint": "Vazio significa sem limite superior. Se definido, não deve ser menor que o mínimo efetivo — a versão mínima do cliente ou, se aquele campo estiver vazio, o mínimo embutido do Xray-core — ou todos os clientes serão rejeitados.", "shortIds": "Short IDs", "realityTargetHint": "Obrigatório. Deve incluir uma porta (ex.: example.com:443). Sem porta, o Xray-core não inicia.", "realityTargetRequired": "O alvo REALITY é obrigatório", diff --git a/internal/web/translation/ru-RU.json b/internal/web/translation/ru-RU.json index 889e25bd8..65c6f0275 100644 --- a/internal/web/translation/ru-RU.json +++ b/internal/web/translation/ru-RU.json @@ -657,6 +657,8 @@ "maxTimeDiff": "Макс. разница во времени (мс)", "minClientVer": "Мин. версия клиента", "maxClientVer": "Макс. версия клиента", + "minClientVerHint": "Пустое поле не означает «без ограничений»: Xray-core применит встроенный минимум используемой сборки ядра (26.3.27 в текущих релизах) и отклонит клиентов, сообщающих более старую версию, — включая сторонние ядра, такие как Mihomo и sing-box. Значение 1.0.0 разрешит их, но допустит устаревшие TLS-отпечатки.", + "maxClientVerHint": "Пустое поле — без верхнего предела. Если задано, значение не должно быть ниже действующего минимума — «Мин. версия клиента», а при пустом том поле — встроенного минимума Xray-core, иначе все клиенты будут отклонены.", "shortIds": "Short IDs", "realityTargetHint": "Обязательно. Должно содержать порт (например, example.com:443). Без порта Xray-core не запускается.", "realityTargetRequired": "Цель REALITY обязательна", diff --git a/internal/web/translation/tr-TR.json b/internal/web/translation/tr-TR.json index b519fb167..6cdb0abca 100644 --- a/internal/web/translation/tr-TR.json +++ b/internal/web/translation/tr-TR.json @@ -636,6 +636,8 @@ "maxTimeDiff": "Maks. Zaman Farkı (ms)", "minClientVer": "Min. Kullanıcı Sürümü", "maxClientVer": "Maks. Kullanıcı Sürümü", + "minClientVerHint": "Boş bırakmak sınırsız demek değildir: Xray-core, çalıştırdığınız çekirdek sürümünün yerleşik alt sınırını (güncel sürümlerde 26.3.27) uygular ve daha eski sürüm bildiren istemcileri reddeder — Mihomo ve sing-box gibi üçüncü taraf çekirdekler dahil. 1.0.0 girmek onları kabul eder; bedeli eski TLS parmak izlerine izin vermektir.", + "maxClientVerHint": "Boş, üst sınır yok demektir. Ayarlanırsa geçerli alt sınırın — Min. Kullanıcı Sürümü, o alan boşsa Xray-core'un yerleşik alt sınırı — altında olmamalıdır, aksi halde tüm istemciler reddedilir.", "shortIds": "Short IDs", "realityTargetHint": "Zorunlu. Bir port içermelidir (ör. example.com:443). Port belirtilmezse Xray-core başlamaz.", "realityTargetRequired": "REALITY hedefi zorunludur", diff --git a/internal/web/translation/uk-UA.json b/internal/web/translation/uk-UA.json index ddb3f69c2..3911bf1a2 100644 --- a/internal/web/translation/uk-UA.json +++ b/internal/web/translation/uk-UA.json @@ -636,6 +636,8 @@ "maxTimeDiff": "Макс. різниця в часі (мс)", "minClientVer": "Мін. версія клієнта", "maxClientVer": "Макс. версія клієнта", + "minClientVerHint": "Порожнє поле не означає «без обмежень»: Xray-core застосує вбудований мінімум використовуваної збірки ядра (26.3.27 у поточних релізах) і відхилятиме клієнтів зі старішою версією — зокрема сторонні ядра, як-от Mihomo та sing-box. Значення 1.0.0 дозволить їх, але допустить застарілі TLS-відбитки.", + "maxClientVerHint": "Порожнє поле — без верхньої межі. Якщо задано, значення не має бути нижчим за чинний мінімум — «Мін. версія клієнта», а коли те поле порожнє — вбудований мінімум Xray-core, інакше всіх клієнтів буде відхилено.", "shortIds": "Short IDs", "realityTargetHint": "Обов'язково. Має містити порт (напр., example.com:443). Без порту Xray-core не запускається.", "realityTargetRequired": "Ціль REALITY обов'язкова", diff --git a/internal/web/translation/vi-VN.json b/internal/web/translation/vi-VN.json index 7984ec201..d4268169b 100644 --- a/internal/web/translation/vi-VN.json +++ b/internal/web/translation/vi-VN.json @@ -657,6 +657,8 @@ "maxTimeDiff": "Chênh lệch thời gian tối đa (ms)", "minClientVer": "Phiên bản client tối thiểu", "maxClientVer": "Phiên bản client tối đa", + "minClientVerHint": "Để trống không có nghĩa là không giới hạn: Xray-core sẽ áp dụng mức tối thiểu tích hợp của bản core đang chạy (26.3.27 ở các bản phát hành hiện tại) và từ chối các client khai báo phiên bản cũ hơn — bao gồm các core bên thứ ba như Mihomo và sing-box. Đặt 1.0.0 để chấp nhận chúng, đổi lại là cho phép các dấu vân tay TLS lỗi thời.", + "maxClientVerHint": "Để trống nghĩa là không có giới hạn trên. Nếu đặt, không được thấp hơn mức tối thiểu đang có hiệu lực — phiên bản client tối thiểu, hoặc mức tối thiểu tích hợp của Xray-core khi ô đó để trống — nếu không mọi client đều bị từ chối.", "shortIds": "Short IDs", "realityTargetHint": "Bắt buộc. Phải bao gồm cổng (ví dụ example.com:443). Không có cổng, Xray-core sẽ không khởi động.", "realityTargetRequired": "Mục tiêu REALITY là bắt buộc", diff --git a/internal/web/translation/zh-CN.json b/internal/web/translation/zh-CN.json index e057fa829..f3be4eb65 100644 --- a/internal/web/translation/zh-CN.json +++ b/internal/web/translation/zh-CN.json @@ -656,6 +656,8 @@ "maxTimeDiff": "最大时间差 (ms)", "minClientVer": "最小客户端版本", "maxClientVer": "最大客户端版本", + "minClientVerHint": "留空不等于不限制:Xray-core 会改用所运行内核版本的内置最低值(当前版本为 26.3.27),拒绝自报版本更低的客户端——包括 Mihomo、sing-box 等第三方内核。填 1.0.0 可放行它们,代价是允许过时的 TLS 指纹。", + "maxClientVerHint": "留空表示无上限。若填写,不得低于实际生效的下限——最小客户端版本,该字段留空时则为 Xray-core 的内置最低值——否则所有客户端都会被拒绝。", "shortIds": "Short IDs", "realityTargetHint": "必填。必须包含端口(例如 example.com:443)。没有端口时 Xray-core 将无法启动。", "realityTargetRequired": "REALITY 目标为必填项", diff --git a/internal/web/translation/zh-TW.json b/internal/web/translation/zh-TW.json index de1920ea1..59d1b2654 100644 --- a/internal/web/translation/zh-TW.json +++ b/internal/web/translation/zh-TW.json @@ -636,6 +636,8 @@ "maxTimeDiff": "最大時間差 (ms)", "minClientVer": "最小客戶端版本", "maxClientVer": "最大客戶端版本", + "minClientVerHint": "留空不等於不限制:Xray-core 會改用所執行核心版本的內建最低值(目前版本為 26.3.27),拒絕自報版本較低的客戶端——包括 Mihomo、sing-box 等第三方核心。填 1.0.0 可放行它們,代價是允許過時的 TLS 指紋。", + "maxClientVerHint": "留空表示無上限。若填寫,不得低於實際生效的下限——最小客戶端版本,該欄位留空時則為 Xray-core 的內建最低值——否則所有客戶端都會被拒絕。", "shortIds": "Short IDs", "realityTargetHint": "必填。必須包含連接埠(例如 example.com:443)。沒有連接埠時 Xray-core 將無法啟動。", "realityTargetRequired": "REALITY 目標為必填項",