REALITY در هیدیفای
هیدیفای روش ساختن ClientHello در کلاینت REALITY را تغییر داده تا به سرورهای فعلی Xray وصل شود، و یک
گزینه، key_share، به شیء reality در بلوک tls خروجی افزوده است. این صفحه فقط همین تغییرها را
میگوید؛ باقی REALITY مثل sing-box کار میکند.
چرا از آن استفاده کنیم
سرورهای Xray از نسخهٔ v26.9.8 به بعد، ClientHello در REALITY را بدون کلید اشتراکی ترکیبی پساکوانتومی (X25519MLKEM768) رد میکنند. sing-box اصلی این کلید را از ClientHello در REALITY حذف میکند و به این سرورها وصل نمیشود. هیدیفای آن را میفرستد و همچنان به سرورهای قدیمیتر هم وصل میشود.
چطور از فیلترینگ عبور میکند
REALITY اتصال را شبیه بازدید TLS 1.3 از یک وبسایت واقعی (server_name) با ClientHello یک مرورگر
واقعی میکند. فرستادن کلید ترکیبی، مثل نسخههای فعلی Chrome، Firefox، Safari و Edge، آن را به آنچه این
مرورگرها میفرستند نزدیک نگه میدارد.
کلید ترکیبی ClientHello را حدود ۱٫۷ کیلوبایت، یعنی دو سگمنت TCP، میکند. برخی شبکهها چنین
ClientHelloهایی را دور میریزند یا مسدود میکنند. برای این شبکهها key_share: "classical" یا
گزینههای تکهتکه کردن میتواند کمک کند.
چطور کار میکند
- ClientHello همان اثرانگشت uTLS است و فقط جایی که REALITY لازم دارد تغییر میکند: TLS 1.3 پیشنهاد میشود و کلیدهای اشتراکی به ترتیب X25519MLKEM768 و سپس X25519 (کلیدی که REALITY با آن احراز هویت میکند) هستند و پس از آنها کلیدهای دیگر اثرانگشت. به اثرانگشتهایی که TLS 1.3 یا کلید X25519 ندارند (مرورگرهای قدیمی، OkHttp اندروید، 360) اینها اضافه میشود تا همهٔ اثرانگشتها کار کنند.
- با
key_share: "classical"، X25519MLKEM768 از گروهها و کلیدهای اشتراکی حذف میشود. ClientHello در یک سگمنت TCP جا میشود، ولی سرورهای Xray از v26.9.8 آن را نمیپذیرند. - کلاینت خودش را به سرور Xray 26.10.17 معرفی میکند. سرورها این را با کمترین نسخهٔ مجاز کلاینت مقایسه میکنند؛ نسخهٔ قدیمیای که sing-box میفرستاد (1.8.1) را سرورهایی که چنین حدی دارند رد میکنند.
tls.fragmentوtls.record_fragmentاکنون روی REALITY هم اعمال میشوند. نسخهٔ اصلی آنها را روی نود REALITY میپذیرفت و کاری نمیکرد.short_idبلندتر از ۱۶ رقم هگز خطای پیکربندی است. پیشتر هنگام بارگذاری کانفیگ کلاینت یا سرور را از کار میانداخت.- اثرانگشت
unsafeدر uTLS قابل استفاده نیست: REALITY به uTLS نیاز دارد.
پیکربندی
{
"outbounds": [
{
"type": "vless",
"server": "203.0.113.1",
"server_port": 443,
"uuid": "bf000d23-0752-40b4-affe-68f7707a9661",
"flow": "xtls-rprx-vision",
"tls": {
"enabled": true,
"server_name": "www.example.com",
"utls": { "enabled": true, "fingerprint": "chrome" },
"reality": {
"enabled": true,
"public_key": "jNXHt1yRo0vDuchQlIP6Z0ZvjT3KtzVI-T4E7RoLJS0",
"short_id": "0123abcd",
"key_share": "hybrid"
}
}
}
]
}
| فیلد | نوع | پیشفرض | معنا |
|---|---|---|---|
key_share |
string | "" |
"" یا hybrid: کلیدهای X25519MLKEM768 و X25519 را میفرستد (با همهٔ نسخههای Xray کار میکند). classical: فقط X25519، با ClientHello کوچکتر؛ فقط سرورهای Xray قدیمیتر از v26.9.8 آن را میپذیرند. |
هر مقدار دیگری برای key_share خطای پیکربندی است.
سازگاری: با اثرانگشتهای chrome، firefox، safari و edge در برابر Xray 26.10.21 و 26.3.27 آزموده شده
است. پیشفرض با هر دو کار میکند؛ classical با 26.3.27 کار میکند و 26.10.21 آن را رد میکند.
fragment و record_fragment با هر دو کار میکنند.