Files
3x-ui/docs/content/docs/fa/config/reality.mdx
T
Aleksey 41bafb3fd5 feat(sub): make the host "Mihomo X25519" switch drop ML-KEM (#6803)
The per-host Mihomo X25519 switch has been stored since managed hosts landed,
but no renderer read it, while every REALITY proxy was forced to
support-x25519mlkem768: true. On some networks DPI drops the second segment of
an ML-KEM ClientHello and blackholes the server for that client. A host with the
switch on now gets support-x25519mlkem768: false and no ML-KEM hint in its vless
link; switches saved while they had no effect are cleared once, so upgrading
does not silently change existing subscriptions.

A REALITY host's fingerprint now reaches the Clash and JSON outputs, and every
host endpoint gets its own deep copy of the stream, so one host's blank SNI,
fingerprint, Host header or path no longer inherits another host's value.
2026-10-24 06:01:48 +02:00

167 lines
8.6 KiB
Plaintext

---
title: REALITY
description: راه‌اندازی یک ورودی VLESS + REALITY همراه با XTLS-Vision در 3x-ui — کلیدها، short IDها، SNI، اثرانگشت‌ها و اشتباهات رایج.
icon: ShieldCheck
---
**REALITY** یک لایه‌ی امنیتی انتقال در Xray است که پروکسی شما را به‌شکل ترافیک
عادی به یک وب‌سایت واقعی و پرطرفدار جلوه می‌دهد. برخلاف TLS کلاسیک، سرور شما به
**هیچ گواهی اختصاصی** نیاز ندارد — دست‌دهی (handshake) TLS سایت مقصد (`dest`) را
قرض می‌گیرد. در ترکیب با جریان **XTLS-Vision**، سریع است و در برابر بازرسی عمیق
بسته‌ها (DPI) مقاومت می‌کند.
REALITY همراه با **VLESS** (و Trojan) به‌کار می‌رود. جریان توصیه‌شده
`xtls-rprx-vision` است.
## تنظیمات کلیدی
وقتی **REALITY** را به‌عنوان حالت امنیتی روی یک ورودی VLESS انتخاب می‌کنید، 3x-ui
این فیلدها را نمایش می‌دهد:
| فیلد | چیست |
| ------------------------ | ------------------------------------------------------------------ |
| **Dest (target)** | یک سایت TLS واقعی برای جعل هویت، برای مثال `www.microsoft.com:443`. |
| **SNI / Server Names** | نام میزبانی که کلاینت‌ها ارسال می‌کنند؛ باید با گواهی مقصد بخواند. |
| **Public / Private key** | یک جفت‌کلید **x25519**. کلید خصوصی روی سرور باقی می‌ماند. |
| **Short IDs** | رشته‌های Hex برای احراز هویت کلاینت‌ها (می‌توانید چندتا داشته باشید).|
| **Flow** | روی `xtls-rprx-vision` تنظیم شود. |
| **Fingerprint (uTLS)** | اثرانگشت TLS کلاینت برای تقلید، برای مثال `chrome`. |
کلید خصوصی با ابزار `x25519` از Xray تولید می‌شود (پنل می‌تواند این جفت‌کلید را
برای شما بسازد):
```bash title="generate an x25519 keypair"
xray x25519
```
## راه‌اندازی در پنل
<Steps>
<Step>
### ساخت یک ورودی VLESS
یک ورودی جدید اضافه کنید، پروتکل **VLESS** را انتخاب کنید و **Security** را روی
**reality** تنظیم کنید.
</Step>
<Step>
### انتخاب مقصد (dest) و SNI
سایتی معتبر که از TLS 1.3 و HTTP/2 پشتیبانی می‌کند و هم از سرور و هم از کلاینت‌های
شما در دسترس است انتخاب کنید (برای مثال `www.microsoft.com:443`). نام سرورها / SNI
را طوری تنظیم کنید که با گواهی آن سایت بخواند.
</Step>
<Step>
### تولید کلیدها و short IDها
جفت‌کلید x25519 و یک یا چند short ID تولید کنید. **کلید خصوصی** را محرمانه نگه
دارید؛ کلاینت‌ها فقط **کلید عمومی** را دریافت می‌کنند.
</Step>
<Step>
### تنظیم جریان و اثرانگشت
از جریان `xtls-rprx-vision` و یک اثرانگشت رایج uTLS مانند `chrome` استفاده کنید.
</Step>
<Step>
### افزودن کلاینت و اشتراک‌گذاری لینک
یک کلاینت بسازید، سپس از لینک اشتراک‌گذاری یا کد QR آن در یک برنامه‌ی سازگار
(v2rayNG، Hiddify، Mihomo و دیگران) استفاده کنید.
</Step>
</Steps>
## پیکربندی چه شکلی است
روی سرور، `streamSettings` یک ورودی REALITY تقریباً به این شکل است:
```json title="server inbound (excerpt)"
{
"network": "tcp",
"security": "reality",
"realitySettings": {
"dest": "www.microsoft.com:443",
"serverNames": ["www.microsoft.com"],
"privateKey": "<x25519 private key>",
"shortIds": ["<hex short id>"],
"fingerprint": "chrome"
}
}
```
لینک اشتراک‌گذاری متناظر کلاینت، پارامترهای **عمومی** را حمل می‌کند:
```text title="vless:// (excerpt)"
vless://<uuid>@<server>:443?security=reality&pbk=<public-key>&sid=<short-id>&sni=www.microsoft.com&fp=chrome&spx=%2F&flow=xtls-rprx-vision#my-reality
```
- `pbk` — کلید **عمومی** REALITY
- `sid` — short ID (با یکی از موارد روی سرور می‌خواند)
- `sni` — نام سرور (با گواهی مقصد می‌خواند)
- `fp` — اثرانگشت کلاینت
- `spx` — مسیر spiderX
- `flow` — `xtls-rprx-vision`
## اشتباهات رایج
<Callout type="warn">
- **مقصد نامناسب.** مقدار `dest` باید یک سایت واقعی باشد که از **TLS 1.3** و
**HTTP/2** پشتیبانی می‌کند، در دسترس است و در منطقه‌ی شما مسدود نیست. سایتی را
انتخاب کنید که مالک آن نیستید و ترافیک زیادی دارد.
- **عدم تطابق SNI.** مقدار SNI / نام سرورها باید با گواهی واقعی مقصد بخواند، وگرنه
دست‌دهی، استتار را لو می‌دهد.
- **نشت کلید خصوصی.** فقط و فقط **کلید عمومی** را میان کلاینت‌ها توزیع کنید.
- **جریان نادرست.** REALITY + XTLS-Vision به `flow = xtls-rprx-vision` هم در ورودیِ
مدخل کلاینت و هم در لینک اشتراک‌گذاری نیاز دارد.
- **محدودیت نسخهٔ کلاینت.** از نسخهٔ
`Xray-core v26.9.8`
به بعد، خالی بودن **حداقل نسخه کلاینت** حد پایین پیش‌فرض ایجاد نمی‌کند؛ مقدار ذخیره‌شده همچنان اعمال می‌شود.
نسخه‌های قدیمی‌تر ممکن است حد داخلی مانند
`26.3.27`
داشته باشند. ابتدا نسخهٔ هستهٔ در حال اجرا را بررسی کنید؛ کاهش حد، اثر انگشت‌های قدیمی را نیز مجاز می‌کند.
- **Mihomo و ML-KEM.** هستهٔ جدید مستقل از محدودیت نسخه، وجود
`X25519MLKEM768`
را پیش از کلید اختیاری
`X25519`
لازم می‌داند. اشتراک YAML برای REALITY، از جمله لینک‌های خارجی، گزینهٔ
`reality-opts.support-x25519mlkem768`
را فعال می‌کند و در نبود اثر انگشت از
`chrome`
استفاده می‌کند. انتخاب صریح حفظ می‌شود و باید از ML-KEM پشتیبانی کند؛ برای
`uTLS v1.8.7`
در Mihomo از Chrome استفاده کنید. فعال کردن گزینه، اثر انگشت قدیمی را ارتقا نمی‌دهد.
لینک خام
`vless://`
راهنمای معادل
`support-x25519mlkem768=true`
را منتقل می‌کند؛ کلاینت‌هایی که این افزونهٔ URI را پشتیبانی می‌کنند، از جمله نسخه‌های فعلی Mihomo، آن را هنگام ورود اعمال می‌کنند.
سرورهای Xray-core قدیمی‌تر از 26.9.8 دست‌دهی سادهٔ
`X25519`
را می‌پذیرند و سرورهای بسیار قدیمی ML-KEM را رد می‌کنند. برای آن‌ها، یا اگر شبکه ClientHello بزرگ‌تر ML-KEM را حذف می‌کند، گزینهٔ
**Mihomo X25519**
را در میزبان (Host) فعال کنید: پروکسی Clash آن مقدار
`support-x25519mlkem768: false`
را می‌گیرد و لینک
`vless://`
آن راهنما را ندارد. حذف محدودیت نسخه به‌تنهایی دست‌دهی را اصلاح نمی‌کند.
</Callout>
## تولید یک پیکربندی
از تولیدکننده‌ی زیر برای ساخت یک جفت‌کلید تازه‌ی X25519، UUID و short ID استفاده
کنید، سپس JSON ورودی سرور و لینک اشتراک‌گذاری کلاینت را کپی کنید. همه‌چیز **در
مرورگر شما** محاسبه می‌شود — هیچ کلید یا لینکی به جایی ارسال نمی‌شود.
<RealityConfigGenerator />
<Callout type="info">
**کلید خصوصی** فقط به سرور شما تعلق دارد. لینک تولیدشده‌ی `vless://` (که حاوی
**کلید عمومی** است) را با کلاینت‌ها به اشتراک بگذارید.
</Callout>