AnyTLS — mihomo
mihomo در هر دو سمت از AnyTLS با قراردادهای استاندارد mihomo پشتیبانی میکند (بدون cipher؛ خروجی کلیدهای TLS / ECH / uTLS را در سطح بالا دارد).
خروجی
ورودی تحت proxies: با type: anytls. BasicOption را جاسازی میکند.
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
name | string | (required) | <string> | نام یکتای پراکسی. |
server | string | (required) | <host> | میزبان یا IP سرور بالادست. |
port | int | (required) | <port> | پورت سرور بالادست. |
password | string | (required) | <string> | گذرواژهٔ سرور. |
alpn | []string | [] | h2 | http/1.1 | فهرست ALPN ارائهشده در دستدهی TLS. |
sni | string | (server) | <SNI> | Server Name Indication در TLS. |
ech-opts | ECHOptions | (disabled) | ECHOptions | پیکربندی Encrypted Client Hello. |
shadow-tls-opts | ShadowTLSOptions | (disabled) | ShadowTLSOptions | بلوک پوشش Shadow-TLS (`{ password, version }`). برای هر پراکسی فقط یک بلوک پوشش TLS میتواند فعال باشد. |
restls-opts | RestlsOptions | (disabled) | RestlsOptions | بلوک پوشش Restls (`{ password, version-hint, restls-script }`). برای هر پراکسی فقط یک بلوک پوشش TLS میتواند فعال باشد. |
jls-opts | JLSOptions | (disabled) | JLSOptions | بلوک پوشش JLS (`{ username, password }`). برای هر پراکسی فقط یک بلوک پوشش TLS میتواند فعال باشد. |
client-fingerprint | string | (global) | chrome | firefox | safari | ios | edge | random | randomized | اثرانگشت client-hello مبتنی بر uTLS. |
skip-cert-verify | bool | false | true | false | غیرفعالسازی راستیآزمایی TLS (فقط آزمایش). |
name-cert-verify | string | (unset) | <hostname> | گواهی سرور را بهجای SNI در برابر این نام میزبان راستیآزمایی میکند. |
fingerprint | string | (unset) | <SHA256 hex> | تثبیت اثرانگشت گواهی TLS سرور. |
certificate | string | (unset) | <PEM file path> | گواهی کلاینت (mTLS). |
private-key | string | (unset) | <key file path> | کلید خصوصی برای `certificate`. |
udp | bool | false | true | false | اجازه به بازپخش بستههای UDP از این خروجی. |
idle-session-check-interval | int | 0 | <seconds> | بازهٔ پویش استخر نشست. ۰ پیشفرض زمان اجرا را حفظ میکند. |
idle-session-timeout | int | 0 | <seconds> | نشستهایی که بیش از این تعداد ثانیه بیکار باشند بازیابی میشوند. ۰ پیشفرض زمان اجرا را حفظ میکند. |
min-idle-session | int | 0 | <int> | حداقل نشستهای گرم برای نگه داشتن در استخر. |
disable-reuse | bool | false | true | false | نشستهای بیکار را در استخر نگه نمیدارد — برای هر جریان یک نشست AnyTLS تازه باز میکند و پس از آن میبندد. |
منبع: adapter/outbound/anytls.go:27-50 · ثابتشده در v1.19.29 (e26714a)
ورودی
ورودی تحت listeners: با type: anytls. BaseOption را جاسازی میکند.
| فیلد | نوع | پیشفرض | مقادیر مجاز | توضیحات |
|---|---|---|---|---|
users | map[string]string | {} | {<username>: <password>} | جدول کاربر — نام کاربری ← گذرواژه. |
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. |
shadow-tls | ShadowTLS | (disabled) | ShadowTLS | بلوک پوشش Shadow-TLS سمت سرور (`{ enable, version, password, users, handshake, ... }`). |
res-tls | ResTLS | (disabled) | ResTLS | بلوک پوشش Restls سمت سرور (`{ enable, dest, password, ... }`)؛ کلاینتهای احراز هویتنشده به `dest` بازپخش میشوند. |
jls-config | JLSConfig | (disabled) | JLSConfig | بلوک پوشش JLS سمت سرور (`{ enable, users, sni, dest, ... }`)؛ کلاینتهای احراز هویتنشده به `dest` بازپخش میشوند. |
allow-insecure | bool | false | true | false | رد کردن راستیآزمایی گواهی کلاینت TLS روی شنونده (فقط آزمایش). |
padding-scheme | string | (server default) | <scheme> | طرح پدینگ سفارشی. یک رشته؛ قالب مشخصهٔ پروتکل بالادست. |
منبع: listener/inbound/anytls.go:12-25 · ثابتشده در v1.19.29 (e26714a)
مثالها
خروجی:
yaml
proxies:
- name: anytls
type: anytls
server: example.com
port: 443
password: <password>
sni: example.com
alpn: [h2, http/1.1]
udp: true
client-fingerprint: chrome
idle-session-check-interval: 30
idle-session-timeout: 60
min-idle-session: 4ورودی:
yaml
listeners:
- name: anytls-in
type: anytls
listen: 0.0.0.0
port: 443
users:
alice: <alice-password>
bob: <bob-password>
certificate: /etc/mihomo/server.crt
private-key: /etc/mihomo/server.keyنکات
- mihomo برای سه زمان بیکاری استخر نشست از ثانیه استفاده میکند؛ sing-box برای همین فیلدها از رشتههای duration (
"30s") استفاده میکند. املای نام فیلد نیز متفاوت است — اینجا kebab-case، آنجا snake_case. users:یک نگاشت YAML از نام کاربری به گذرواژه است، مشابه ورودیهای TUIC و Hysteria2 در mihomo.- خروجی mihomo کلیدهای TLS، ECH و اثرانگشت uTLS را بهصورت درونخط دارد. sing-box اینها را در بلوک جاسازیشدهٔ
tls:قرار میدهد. shadow-tls-opts،restls-optsوjls-optsحالتهای پوشش TLS دوبهدو ناسازگارند — حداکثر یکی را فعال کنید. همتاهای ورودیshadow-tls،res-tlsوjls-configنیز به همین ترتیب دوبهدو ناسازگارند.disable-reuseاستخر نشست بیکار را بهکلی خاموش میکند؛ در آن صورت سه کلیدidle-session-*/min-idle-sessionهیچ اثری ندارند.
نکات بینهستهای
- Xray-core از AnyTLS پشتیبانی نمیکند. به AnyTLS — Xray-core مراجعه کنید.
- sing-box از نامهای فیلد snake_case استفاده میکند، رشتههای duration سبک Go را برای زمانهای بیکاری استخر نشست میگیرد و کاربران را بهصورت آرایهٔ
[{name, password}]فهرست میکند. به AnyTLS — sing-box مراجعه کنید.
منبع: adapter/outbound/anytls.go:27-50 · v1.19.29 (e26714a)
