REALITY — mihomo
mihomo از REALITY در هر دو سمت پشتیبانی میکند. خروجی از reality-opts: تعبیهشده در ورودی پراکسی استفاده میکند؛ ورودی از reality-config: روی شنونده استفاده میکند.
خروجی — reality-opts
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
public-key | string | (required) | <base64 X25519 public key> | کلید عمومی X25519 سرور. توسط مدیر سرور با `generate reality-keypair` در mihomo یا `xray x25519` در Xray تولید میشود. |
short-id | string | (unset) | <hex string> | شناسهٔ کوتاهی که به سرور اعلام میشود. باید با یکی از ورودیهای `short-id` سرور مطابقت داشته باشد (یا در صورتی که سرور `""` را فهرست کرده باشد، خالی باشد). |
support-x25519mlkem768 | bool | false | true | false | تبلیغ تبادل کلید ترکیبی پساکوانتومی X25519MLKEM768. سرور باید از منحنی متناظر پشتیبانی کند. |
منبع: adapter/outbound/reality.go:13-18 · ثابتشده در v1.19.24 (a847246)
ورودی — reality-config
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
dest | string | (required) | <host:port> | هدف استتار — سایت معتبری که دستدهی TLS آن برای اتصالات غیرمجاز پراکسی میشود. گواهی سایت باید معتبر باشد؛ mihomo آن را در حین ارسال دستدهی راستیآزمایی میکند. |
private-key | string | (required) | <base64 X25519 private key> | کلید خصوصی X25519 سرور. |
short-id | []string | [] | [<hex string>] | لیست shortIDهای مجاز (هگز، طول زوج، ≤ ۱۶ کاراکتر). `""` را قرار دهید تا کلاینتهایی که shortID اعلام نمیکنند هم اجازه داشته باشند. |
server-names | []string | (required) | [<hostname>] | مقادیر SNI قابل قبول. اتصالاتی با SNI متفاوت به `dest` ارسال میشوند (جایگزین استتار). |
max-time-difference | int | 0 (no limit) | <seconds> | حداکثر اختلاف ساعت قابل تحمل بین کلاینت و سرور، بر حسب ثانیه. ۰ این بررسی را غیرفعال میکند. |
proxy | string | (direct) | <proxy name> | ترافیک جایگزین-استتار را بهجای شمارهگیری مستقیم به `dest`، از یک خروجی پراکسی نامدار مسیریابی میکند. وقتی سایت استتار از سرور قابل دسترس نیست مفید است. |
limit-fallback-upload | RealityLimitFallback | (unset) | RealityLimitFallback | محدود کردن نرخ جهت آپلود جایگزین-استتار. برای آنکه ترافیک REALITY از یک سایت معتبر کند قابل تمایز نباشد استفاده کنید. |
limit-fallback-download | RealityLimitFallback | (unset) | RealityLimitFallback | محدود کردن نرخ جهت دانلود جایگزین-استتار. |
منبع: listener/inbound/reality.go:5-15 · ثابتشده در v1.19.24 (a847246)
limit-fallback-upload / limit-fallback-download
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
after-bytes | uint64 | 0 | <bytes> | محدودیت نرخ را فقط پس از عبور این تعداد بایت اعمال میکند. ۰ از همان بایت اول محدود میکند. |
bytes-per-sec | uint64 | 0 (no limit) | <bytes> | سقف پهنای باند پایدار بر حسب بایت بر ثانیه. ۰ این محدودیت را غیرفعال میکند. |
burst-bytes-per-sec | uint64 | 0 (=bytes-per-sec) | <bytes> | سقف پهنای باند انفجاری. ۰ همان مقدار `bytes-per-sec` را حفظ میکند (بدون انفجار). |
منبع: listener/inbound/reality.go:17-21 · ثابتشده در v1.19.24 (a847246)
تولید کلید
mihomo یک تولیدکنندهٔ کلید را در خود دارد:
sh
$ mihomo generate reality-keypair
PrivateKey: <base64-private-key>
PublicKey: <base64-public-key>xray x25519 در Xray همان قالب را تولید میکند (هر دو از X25519 در base64-RawURLEncoding استفاده میکنند) — کلیدها بین سه هسته قابل تبادل هستند.
مثالها
خروجی — VLESS با REALITY:
yaml
proxies:
- name: vless-reality
type: vless
server: your.server.example
port: 443
uuid: <UUID>
flow: xtls-rprx-vision
tls: true
servername: www.cloudflare.com
client-fingerprint: chrome
reality-opts:
public-key: <base64-public-key>
short-id: 0123456789abcdefورودی — شنوندهٔ VLESS با REALITY سمت سرور:
yaml
listeners:
- name: vless-reality-in
type: vless
listen: 0.0.0.0
port: 443
users:
- username: alice
uuid: <UUID>
flow: xtls-rprx-vision
reality-config:
dest: www.cloudflare.com:443
private-key: <base64-private-key>
short-id:
- ''
- 0123456789abcdef
server-names:
- www.cloudflare.com
max-time-difference: 60
limit-fallback-upload:
bytes-per-sec: 8388608
burst-bytes-per-sec: 16777216
limit-fallback-download:
bytes-per-sec: 12582912نکات
support-x25519mlkem768روی خروجی، تبادل کلید پساکوانتومی ترکیبی افزودهشده در ۲۰۲۴ را فعال میکند. سرورهایی که در برابر لیست منحنی متناظر ساخته شدهاند آن را میپذیرند؛ سرورهای قدیمیتر یک دستدهی معمولی X25519 میبینند.- فیلد
proxy:در ورودی، جایگزین استتار را از طریق یک خروجی mihomo دیگر مسیریابی میکند. این ویژگی منحصر به mihomo است — وقتی سرور نمیتواند مستقیماً به سایت استتار دسترسی پیدا کند مفید است (sing-box و Xray همیشه مستقیماً بهdestشمارهگیری میکنند). limit-fallback-upload.after-bytesدورهٔ گرمشدن است: محدودیت تنها پس از این تعداد بایت اعمال میشود. مقدار کوچکی (~۱۰۰ KB) استفاده کنید تا خود دستدهی استتار محدود نشود.- تنظیم
max-time-difference: 60(یک دقیقه) برای سرورهای بدون NTP به اندازهٔ کافی سخاوتمندانه است. تنظیم آن به ۰ بررسی اختلاف ساعت را بهطور کامل غیرفعال میکند — برای توسعه راحت، برای محصول پرخطر.
نکات بینهستهای
- Xray-core همه چیز را در یک
REALITYConfigنگه میدارد. هدف استتارdestاست؛ اثرانگشت uTLS در همان ساختار بهصورتfingerprintقرار دارد. به REALITY — Xray-core مراجعه کنید. - sing-box REALITY را درون بلوک تعبیهشدهٔ
tls:در هر دو سمت تو در تو میکند. هدف استتار زیربلوکی به نامhandshakeاست (که ServerOptions + DialerOptions را در خود تعبیه میکند). به REALITY — sing-box مراجعه کنید.
منبع: adapter/outbound/reality.go:13-18 · v1.19.24 (a847246)
