Shadowsocks — mihomo
mihomo در هر دو سمت از Shadowsocks پشتیبانی میکند، با اکوسیستم غنی افزونهها که قالب سیمی را در obfs، WebSocket (v2ray-plugin / gost-plugin)، Shadow-TLS، REALTLS یا KCP میپوشاند. پیکربندی افزونه زیر نگاشت تایپشدهٔ YAML به نام plugin-opts قرار میگیرد.
خروجی
ورودی تحت proxies: با type: ss. BasicOption را جاسازی میکند.
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
name | string | (required) | <string> | نام یکتای پراکسی. |
server | string | (required) | <host> | میزبان یا IP سرور بالادست. |
port | int | (required) | <port> | پورت سرور بالادست. |
password | string | (required) | <string> | <base64 key> | گذرواژهٔ سرور (AEAD) یا کلید EIH (SS-2022). |
cipher | string | (required) | aes-128-gcm | aes-256-gcm | chacha20-ietf-poly1305 | xchacha20-ietf-poly1305 | 2022-blake3-aes-128-gcm | 2022-blake3-aes-256-gcm | 2022-blake3-chacha20-poly1305 | none | نام mihomo برای مجموعهرمز / طرح اشتقاق کلید Shadowsocks. |
udp | bool | false | true | false | اجازه به بازپخش بستههای UDP از این خروجی. |
plugin | string | (unset) | obfs | v2ray-plugin | gost-plugin | shadow-tls | restls | kcptun | افزونهٔ مبهمسازی / ترابرد برای پوشاندن جریان. هر افزونه طرح `plugin-opts` مختص خود را دارد (در ادامه مستند شده است). |
plugin-opts | map[string]any | {} | <plugin-specific YAML map> | پیکربندی مختص افزونه. طرح به `plugin` وابسته است — به زیربخشهای پایین مراجعه کنید. |
udp-over-tcp | bool | false | true | false | پوشاندن UDP درون جریان TCP. |
udp-over-tcp-version | int | 2 | 1 | 2 | نسخهٔ قاببندی UoT. |
client-fingerprint | string | (global) | chrome | firefox | safari | ios | edge | random | randomized | اثرانگشت client-hello مبتنی بر uTLS که در صورت استفادهٔ افزونه از TLS اعمال میشود. |
منبع: adapter/outbound/shadowsocks.go:41-54 · ثابتشده در v1.19.24 (a847246)
plugin-opts — هنگامی که plugin: obfs
جریان را در simple-obfs میپوشاند (شکل TLS یا HTTP).
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
mode | string | tls | tls | http | حالت obfs. `tls` Client Hello TLS را تقلید میکند؛ `http` یک درخواست HTTP ساده را تقلید میکند. |
host | string | (unset) | <host> | نام میزبان پوششی که در بار obfs استفاده میشود. |
منبع: adapter/outbound/shadowsocks.go:56-59 · ثابتشده در v1.19.24 (a847246)
plugin-opts — هنگامی که plugin: v2ray-plugin
جریان را در دستدهی WebSocket میپوشاند. TLS اختیاری است.
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
mode | string | (required) | websocket | در حال حاضر فقط `websocket` پشتیبانی میشود. |
host | string | (unset) | <host> | سرآیند Host ارسالی در دستدهی WS. |
path | string | / | /<path> | مسیر WebSocket. |
tls | bool | false | true | false | پوشاندن دستدهی WS در TLS. |
ech-opts | ECHOptions | — | — | |
fingerprint | string | (unset) | <SHA256 hex> | تثبیت اثرانگشت گواهی TLS سرور. |
certificate | string | (unset) | <PEM file path> | گواهی کلاینت (mTLS). |
private-key | string | (unset) | <key file path> | کلید خصوصی مطابق با `certificate`. |
headers | map[string]string | {} | {<header>: <value>} | سرآیندهای HTTP اضافی در درخواست upgrade. |
skip-cert-verify | bool | false | true | false | غیرفعالسازی راستیآزمایی TLS. |
mux | bool | false | true | false | فعالسازی smux روی جریان WS. |
v2ray-http-upgrade | bool | false | true | false | استفاده از HTTP-upgrade سبک V2Ray به جای WebSocket استاندارد. |
v2ray-http-upgrade-fast-open | bool | false | true | false | پیوستکردن بار به درخواست HTTP-upgrade. |
منبع: adapter/outbound/shadowsocks.go:61-75 · ثابتشده در v1.19.24 (a847246)
plugin-opts — هنگامی که plugin: shadow-tls
دستدهی Shadow-TLS را جلوی جریان Shadowsocks اضافه میکند.
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
password | string | (unset) | <string> | گذرواژهٔ Shadow-TLS v2/v3. |
host | string | (required) | <host> | نام میزبان پوششی برای دستدهی TLS. |
fingerprint | string | (unset) | <SHA256 hex> | تثبیت گواهی TLS سرور پوششی. |
certificate | string | (unset) | <PEM file path> | گواهی کلاینت. |
private-key | string | (unset) | <key file path> | کلید خصوصی. |
skip-cert-verify | bool | false | true | false | غیرفعالسازی راستیآزمایی گواهی (فقط آزمایش). |
version | int | 3 | 1 | 2 | 3 | نسخهٔ پروتکل Shadow-TLS. v3 نسخهٔ تولیدی فعلی است. |
alpn | []string | [] | h2 | http/1.1 | فهرست ALPN ارائهشده در دستدهی TLS پوششی. |
منبع: adapter/outbound/shadowsocks.go:91-100 · ثابتشده در v1.19.24 (a847246)
سایر گونههای افزونه (gost-plugin، restls، kcptun) طرح خود را زیر plugin-opts دارند. ساختارهای آنها (gostObfsOption، restlsOption، kcpTunOption) در همان فایل منبع قرار دارند؛ برای فهرست کامل فیلدها به دادهٔ استخراجشده مراجعه کنید.
ورودی
ورودی تحت listeners: با type: ss. BaseOption را جاسازی میکند.
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
password | string | (required) | <string> | <base64 key> | گذرواژهٔ سرور یا کلید SS-2022. |
cipher | string | (required) | <cipher> | همان مجموعهرمز خروجی. |
udp | bool | false | true | false | پذیرش بستههای UDP. |
mux-option | MuxOption | (disabled) | MuxOption | چندسوسازی سبک sing. |
shadow-tls | ShadowTLS | (disabled) | ShadowTLS | پوشش Shadow-TLS اختیاری ورودی. |
kcp-tun | KcpTun | (disabled) | KcpTun | ترابرد KCP اختیاری ورودی. |
منبع: listener/inbound/shadowsocks.go:12-20 · ثابتشده در v1.19.24 (a847246)
مثالها
خروجی ساده SS:
proxies:
- name: ss-aead
type: ss
server: example.com
port: 8388
password: <password>
cipher: aes-256-gcm
udp: trueخروجی SS-2022 با UDP-over-TCP:
proxies:
- name: ss22
type: ss
server: example.com
port: 8388
password: <base64 16-byte key>
cipher: 2022-blake3-aes-128-gcm
udp-over-tcp: true
udp-over-tcp-version: 2SS روی v2ray-plugin (WebSocket + TLS):
proxies:
- name: ss-v2ray
type: ss
server: example.com
port: 443
password: <password>
cipher: aes-256-gcm
udp: true
plugin: v2ray-plugin
plugin-opts:
mode: websocket
tls: true
host: example.com
path: /ssSS پشت Shadow-TLS v3:
proxies:
- name: ss-stls
type: ss
server: example.com
port: 443
password: <ss password>
cipher: aes-256-gcm
plugin: shadow-tls
plugin-opts:
password: <stls password>
host: www.cloudflare.com
version: 3ورودی تحت listeners:
listeners:
- name: ss-in
type: ss
listen: 0.0.0.0
port: 8388
password: <password>
cipher: aes-256-gcm
udp: trueنکات
- خروجی mihomo
plugin-optsرا بهعنوان یک نگاشت تایپشدهٔ YAML میگیرد که در یکی از ساختارهای مختص افزونه رمزگشایی میشود. مقادیر تگ روی این ساختارها ازobfs:به جایproxy:استفاده میکنند — این یک قرارداد داخلی mihomo است، نه برای کاربر — برای نمونه بهsimpleObfsOptionدرadapter/outbound/shadowsocks.go:56-59مراجعه کنید. - گزینهٔ
plugin: obfsنام mihomo برایsimple-obfsاست؛mode: tlsرا برای شکل TLS وmode: httpرا برای شکل HTTP بدهید. - ورودی شنوندهٔ mihomo در حال حاضر از
users[]چندکاربره پشتیبانی نمیکند — برای چندین کاربر SS-2022 روی همان پورت، یک شنونده برای هر کاربر تعریف کنید.
نکات بینهستهای
- Xray از
method(نهcipher) وuot/uotVersionاستفاده میکند. سیستم افزونه ندارد — به جای آن بار Shadowsocks را در ترابرد دیگری ازstreamSettingsبپوشانید. به Shadowsocks — Xray-core مراجعه کنید. - sing-box از
methodاستفاده میکند، شکل بازپخشdestinations[]برای SS-2022 را پشتیبانی میکند و UoT را بهصورت شیءudp_over_tcp: {enabled, version}نمایش میدهد. همچنین فایلهای باینری افزونهٔ خارجی را از طریقplugin/plugin_optsمیپذیرد. به Shadowsocks — sing-box مراجعه کنید.
منبع: adapter/outbound/shadowsocks.go:41-100 · v1.19.24 (a847246)
