Skip to content

AnyTLS — mihomo

mihomo در هر دو سمت از AnyTLS با قراردادهای استاندارد mihomo پشتیبانی می‌کند (بدون cipher؛ خروجی کلیدهای TLS / ECH / uTLS را در سطح بالا دارد).

خروجی

ورودی تحت proxies: با type: anytls. BasicOption را جاسازی می‌کند.

فیلدنوعپیش‌فرضمقادیر مجازتوضیحات
namestring(required)<string>نام یکتای پراکسی.
serverstring(required)<host>میزبان یا IP سرور بالادست.
portint(required)<port>پورت سرور بالادست.
passwordstring(required)<string>گذرواژهٔ سرور.
alpn[]string[]h2 | http/1.1فهرست ALPN ارائه‌شده در دست‌دهی TLS.
snistring(server)<SNI>Server Name Indication در TLS.
ech-optsECHOptions(disabled)ECHOptionsپیکربندی Encrypted Client Hello.
client-fingerprintstring(global)chrome | firefox | safari | ios | edge | random | randomizedاثرانگشت client-hello مبتنی بر uTLS.
skip-cert-verifyboolfalsetrue | falseغیرفعال‌سازی راستی‌آزمایی TLS (فقط آزمایش).
fingerprintstring(unset)<SHA256 hex>تثبیت اثرانگشت گواهی TLS سرور.
certificatestring(unset)<PEM file path>گواهی کلاینت (mTLS).
private-keystring(unset)<key file path>کلید خصوصی برای `certificate`.
udpboolfalsetrue | falseاجازه به بازپخش بسته‌های UDP از این خروجی.
idle-session-check-intervalint0<seconds>بازهٔ پویش استخر نشست. ۰ پیش‌فرض زمان اجرا را حفظ می‌کند.
idle-session-timeoutint0<seconds>نشست‌هایی که بیش از این تعداد ثانیه بیکار باشند بازیابی می‌شوند. ۰ پیش‌فرض زمان اجرا را حفظ می‌کند.
min-idle-sessionint0<int>حداقل نشست‌های گرم برای نگه داشتن در استخر.

منبع: adapter/outbound/anytls.go:25-43 · ثابت‌شده در v1.19.24 (a847246)

ورودی

ورودی تحت listeners: با type: anytls. BaseOption را جاسازی می‌کند.

فیلدنوعپیش‌فرضمقادیر مجازتوضیحات
usersmap[string]string{}{<username>: <password>}جدول کاربر — نام کاربری ← گذرواژه.
certificatestring(required)<PEM file path>گواهی TLS سرور.
private-keystring(required)<key file path>کلید خصوصی TLS.
client-auth-typestring(none)no-client-cert | request-client-cert | require-any-client-cert | verify-client-cert-if-given | require-and-verify-client-certحالت احراز هویت متقابل TLS کلاینت.
client-auth-certstring(unset)<PEM file path>بستهٔ CA پذیرفته‌شده به‌عنوان ریشهٔ کلاینت.
ech-keystring(unset)<ECH config>مواد Encrypted Client Hello.
padding-schemestring(server default)<scheme>طرح پدینگ سفارشی. یک رشته؛ قالب مشخصهٔ پروتکل بالادست.

منبع: listener/inbound/anytls.go:12-21 · ثابت‌شده در v1.19.24 (a847246)

مثال‌ها

خروجی:

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: قرار می‌دهد.

نکات بین‌هسته‌ای

  • Xray-core از AnyTLS پشتیبانی نمی‌کند. به AnyTLS — Xray-core مراجعه کنید.
  • sing-box از نام‌های فیلد snake_case استفاده می‌کند، رشته‌های duration سبک Go را برای زمان‌های بیکاری استخر نشست می‌گیرد و کاربران را به‌صورت آرایهٔ [{name, password}] فهرست می‌کند. به AnyTLS — sing-box مراجعه کنید.

منبع: adapter/outbound/anytls.go:25-43 · v1.19.24 (a847246)

Core Tutorial اثر Argsment