Hysteria2 — mihomo
mihomo در هر دو سمت از Hysteria2 پشتیبانی میکند. خروجی فیلدهای صریح port-hopping و مجموعهٔ گستردهای از کلیدهای کنترل جریان quic-go را در خود دارد. جدول کاربران ورودی یک نگاشت تخت است — یک جفت نام کاربری/ گذرواژه برای هر ورودی.
خروجی
ورودی تحت proxies: با type: hysteria2. BasicOption را جاسازی میکند (فیلدهای مشترک خروجی: interface-name، routing-mark، …).
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
name | string | (required) | <string> | نام یکتای پراکسی. |
server | string | (required) | <host> | میزبان یا IP سرور بالادست. |
port | int | (unset) | <port> | پورت تکی سرور. در صورت تنظیم `ports`، حذف شود. |
ports | string | (unset) | <port-list> | فهرست port-hopping. ترکیب جداشده با کاما از پورتهای تکی و بازهها را میپذیرد، مثلاً `"20000,20002-20100"`. در کنار `hop-interval` معنادار است. |
hop-interval | string | 30 | <seconds string> | <duration> | زمان بین port-hop ها. رشتهٔ عددی ساده (`"30"`) بهعنوان ثانیه تفسیر میشود؛ duration سبک Go (`"30s"`) نیز پذیرفته میشود. حداقل ۵ است (`adapter/outbound/hysteria2.go:25`). |
up | string | (unset) | <bandwidth> | پهنای باند آپلینک. رشته با واحد، مثلاً `"100 Mbps"`، `"500 kbps"`، `"1 Gbps"`. |
down | string | (unset) | <bandwidth> | پهنای باند دانلینک، با همان قالب. |
password | string | (unset) | <string> | گذرواژهٔ احراز هویت کاربر. فقط در صورتی اختیاری است که سرور به همتاهای ناشناس اجازه دهد. |
obfs | string | (disabled) | salamander | نوع مبهمسازی. در حال حاضر فقط `salamander` معنادار است. |
obfs-password | string | (unset) | <string> | گذرواژهٔ مبهمسازی، جدا از گذرواژهٔ کاربر. |
sni | string | (server) | <SNI> | Server Name Indication در TLS. پیشفرض `server` است. |
ech-opts | ECHOptions | (disabled) | ECHOptions | پیکربندی Encrypted Client Hello. |
skip-cert-verify | bool | false | true | false | غیرفعالسازی راستیآزمایی TLS (فقط آزمایش). |
fingerprint | string | (unset) | <SHA256 hex> | تثبیت اثرانگشت گواهی TLS سرور. |
certificate | string | (unset) | <PEM file path> | گواهی کلاینت (mTLS). |
private-key | string | (unset) | <key file path> | کلید خصوصی برای `certificate`. |
alpn | []string | [h3] | h3 | فهرست ALPN. Hysteria2 معمولاً از `h3` استفاده میکند. |
cwnd | int | 0 | <int> | بازنویسی پنجرهٔ ازدحام اولیهٔ QUIC. |
bbr-profile | string | (unset) | default | aggressive | پروفایل تنظیم برای گونهٔ Brutal/BBR همراه. |
udp-mtu | int | 1200 | <bytes> | MTU برای قطعهبندی بارهای UDP درون دیتاگرام QUIC. |
initial-stream-receive-window | uint64 | 0 (quic-go default) | <bytes> | پنجرهٔ کنترل جریان اولیه به ازای هر جریان. |
max-stream-receive-window | uint64 | 0 (quic-go default) | <bytes> | حداکثر پنجرهٔ کنترل جریان به ازای هر جریان. |
initial-connection-receive-window | uint64 | 0 (quic-go default) | <bytes> | پنجرهٔ کنترل جریان اولیه برای کل اتصال. |
max-connection-receive-window | uint64 | 0 (quic-go default) | <bytes> | حداکثر پنجرهٔ کنترل جریان برای کل اتصال. |
منبع: adapter/outbound/hysteria2.go:35-63 · ثابتشده در v1.19.24 (a847246)
ورودی
ورودی تحت listeners: با type: hysteria2. BaseOption را جاسازی میکند (listen، port).
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
users | map[string]string | {} | {<username>: <password>} | جدول کاربران — نگاشت نام کاربری به گذرواژه. خالی به همتاهای ناشناس اجازه میدهد. |
obfs | string | (disabled) | salamander | نوع مبهمسازی Salamander. |
obfs-password | string | (unset) | <string> | گذرواژهٔ مبهمسازی. |
certificate | string | (required) | <PEM file path> | گواهی TLS سرور. برای ورودی الزامی است. |
private-key | string | (required) | <key file path> | کلید خصوصی TLS. |
client-auth-type | string | (none) | no-client-cert | request-client-cert | require-any-client-cert | verify-client-cert-if-given | require-and-verify-client-cert | حالت احراز هویت متقابل TLS کلاینت. |
client-auth-cert | string | (unset) | <PEM file path> | بستهٔ CA پذیرفتهشده بهعنوان ریشهٔ کلاینت. |
ech-key | string | (unset) | <ECH config> | مواد Encrypted Client Hello. |
max-idle-time | int | 0 | <seconds> | زمان بیکاری در سمت شنونده. مقدار ۰ پیشفرض QUIC را حفظ میکند. |
alpn | []string | [h3] | h3 | فهرست ALPN ارائهشده در دستدهی TLS. |
up | string | (unset) | <bandwidth> | پهنای باند آپلینک (رشته با واحد). |
down | string | (unset) | <bandwidth> | پهنای باند دانلینک. |
ignore-client-bandwidth | bool | false | true | false | نادیدهگرفتن اعلام پهنای باند کلاینت و اعمال تنظیمات سرور. |
masquerade | string | (unset) | <URL> | هدف ماسکراد — یک رشته URL (`file:///path` یا `https://upstream/`). |
cwnd | int | 0 | <int> | پنجرهٔ ازدحام اولیهٔ QUIC. |
bbr-profile | string | (unset) | default | aggressive | پروفایل تنظیم Brutal/BBR. |
udp-mtu | int | 1200 | <bytes> | MTU قطعهبندی دیتاگرام UDP. |
mux-option | MuxOption | (disabled) | MuxOption | تنظیمات چندسوسازی سبک sing. |
initial-stream-receive-window | uint64 | 0 (quic-go default) | <bytes> | پنجرهٔ کنترل جریان اولیه به ازای هر جریان. |
max-stream-receive-window | uint64 | 0 (quic-go default) | <bytes> | حداکثر پنجرهٔ کنترل جریان به ازای هر جریان. |
initial-connection-receive-window | uint64 | 0 (quic-go default) | <bytes> | پنجرهٔ جریان اولیهٔ اتصال. |
max-connection-receive-window | uint64 | 0 (quic-go default) | <bytes> | حداکثر پنجرهٔ جریان اتصال. |
منبع: listener/inbound/hysteria2.go:12-38 · ثابتشده در v1.19.24 (a847246)
مثالها
خروجی — پورت تکی، obfs salamander، 100/300 Mbps:
proxies:
- name: hy2-plain
type: hysteria2
server: example.com
port: 443
password: <password>
obfs: salamander
obfs-password: <obfs>
sni: example.com
up: 100 Mbps
down: 300 Mbps
alpn: [h3]خروجی — port-hopping در بازهٔ 20000-20100:
proxies:
- name: hy2-hop
type: hysteria2
server: example.com
ports: 20000-20100
hop-interval: 30s
password: <password>
obfs: salamander
obfs-password: <obfs>
sni: example.com
up: 200 Mbps
down: 1 Gbps
alpn: [h3]ورودی با دو کاربر و ماسکراد فایل HTTP:
listeners:
- name: hy2-in
type: hysteria2
listen: 0.0.0.0
port: 443
users:
alice: <alice-password>
bob: <bob-password>
obfs: salamander
obfs-password: <obfs>
certificate: /etc/mihomo/server.crt
private-key: /etc/mihomo/server.key
up: 500 Mbps
down: 1 Gbps
masquerade: file:///var/www
alpn: [h3]نکات
portsترکیبی از پورتهای تکی و بازههای جداشده با کاما را میپذیرد، مثلاً"20000,20002-20100,30000".portوportsبا هم ناسازگارند — یکی را انتخاب کنید. هنگامی کهportsتنظیم شود، mihomo هرhop-intervalیک عضو تازه بهصورت تصادفی برمیگزیند.- حداقل
hop-interval۵ ثانیه است (adapter/outbound/hysteria2.go:25) — مقادیر کمتر از ۵ به بالا کلمپ میشوند. - مقادیر پهنای باند پسوند واحد میپذیرند (
b،kbps،Mbps،Gbps،Tbps) با فاصله بین عدد و واحد —"100 Mbps". این رشتهها توسط کمکیtools.StringToBpsدر mihomo تجزیه میشوند. usersدر ورودی mihomo یک نگاشت YAML است، نه فهرست شیء. کلید نام کاربری و مقدار گذرواژه است، مثلاًusers: { alice: pw1, bob: pw2 }. برای اجازه دادن به کلاینتهای ناشناس، نگاشت را خالی بگذارید.- چهار فیلد
*-receive-windowکلیدهای مستقیم برای پشتهٔ quic-go همراه هستند. بیشتر کاربران باید آنها را روی0(پیشفرض) بگذارند. برای بهبود توان عبور روی پیوندهای با BDP بالا، پنجرههای سطح اتصال را افزایش دهید.
نکات بینهستهای
- Xray-core پیکربندی را میان
settings(version/clients) وstreamSettings.hysteriaSettings(auth/bandwidth/masquerade) تقسیم میکند. به Hysteria2 — Xray-core مراجعه کنید. - sing-box پیکربندی را در یک بلوک نگه میدارد ولی برای پهنای باند از عدد صحیح ساده Mbps (بدون پسوند واحد) استفاده میکند و مقدار چندریختی
masquerade(URL رشته یا شیء تایپشده) را ارائه میدهد. به Hysteria2 — sing-box مراجعه کنید.
منبع: adapter/outbound/hysteria2.go:35-63 · v1.19.24 (a847246)
