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.31 (ab405ba)
ورودی — 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.31 (ab405ba)
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.31 (ab405ba)
تولید کلید
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روی خروجی، تبادل کلید پساکوانتومی ترکیبی (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.31 (ab405ba)
