Skip to content

AnyTLS — sing-box

AnyTLS یک تونل به شکل TLS است که از ترفندهای padding برای استتار شکل ترافیک خود استفاده می‌کند. sing-box اولین پیاده‌سازی پایدار بود؛ از هر دو سمت ورودی و خروجی با یک کلاینت استخر نشست پشتیبانی می‌کند.

ورودی

type: "anytls":

فیلدنوعپیش‌فرضمقادیر مجازتوضیحات
users[]AnyTLSUser[][AnyTLSUser]کاربران پذیرفته‌شده.
padding_schemebadoption.Listable[string](server default)<scheme line> | [<scheme line>]طرح padding سفارشی برای شکل دادن به ترافیک سیم. یک رشتهٔ واحد یا فهرستی از رشته‌ها را می‌پذیرد؛ مقدار خالی / تنظیم‌نشده از پیش‌فرض داخلی سرور استفاده می‌کند.

منبع: option/anytls.go:5-10 · ثابت‌شده در v1.13.11 (553cfa1)

این ساختار ListenOptions و InboundTLSOptionsContainer را درون خود جای می‌دهد. TLS الزامی است — AnyTLS همیشه روی سیم TLS-wrapped است.

users[]

فیلدنوعپیش‌فرضمقادیر مجازتوضیحات
namestring(unset)<string>نام نمایشی استفاده‌شده در آمار و لاگ‌ها.
passwordstring(required)<string>گذرواژهٔ کاربر.

منبع: option/anytls.go:12-15 · ثابت‌شده در v1.13.11 (553cfa1)

خروجی

type: "anytls":

فیلدنوعپیش‌فرضمقادیر مجازتوضیحات
passwordstring(required)<string>گذرواژهٔ سرور.
idle_session_check_intervalbadoption.Duration30s<duration>هر چند وقت کلاینت استخر را برای نشست‌های بیکار جهت بازیافت اسکن می‌کند.
idle_session_timeoutbadoption.Duration30s<duration>نشست‌هایی که بیش از این مدت بیکار باشند در روبش بررسی بعدی بسته می‌شوند.
min_idle_sessionint0<int>حداقل این تعداد نشست بیکار برای استفادهٔ مجدد با تأخیر کم گرم نگه دارد.

منبع: option/anytls.go:17-25 · ثابت‌شده در v1.13.11 (553cfa1)

DialerOptions، ServerOptions و OutboundTLSOptionsContainer را درون خود جای می‌دهد. TLS الزامی است.

مثال‌ها

ورودی:

json
{
  "inbounds": [
    {
      "type": "anytls",
      "tag": "anytls-in",
      "listen": "::",
      "listen_port": 443,
      "users": [{ "name": "alice", "password": "<password>" }],
      "tls": {
        "enabled": true,
        "certificate_path": "/etc/ssl/cert.pem",
        "key_path": "/etc/ssl/key.pem"
      }
    }
  ]
}

خروجی با یک استخر نشست که گرم نگه داشته می‌شود:

json
{
  "outbounds": [
    {
      "type": "anytls",
      "tag": "anytls-out",
      "server": "example.com",
      "server_port": 443,
      "password": "<password>",
      "min_idle_session": 4,
      "idle_session_check_interval": "30s",
      "idle_session_timeout": "60s",
      "tls": { "enabled": true, "server_name": "example.com" }
    }
  ]
}

نکات

  • padding_scheme یا یک رشتهٔ واحد (یک قاعده در هر خط درون آن) یا فهرستی از رشته‌ها را می‌پذیرد. قالب از مشخصات بالادست AnyTLS پیروی می‌کند — اکثر کاربران باید آن را تنظیم‌نشده بگذارند و از پیش‌فرض سرور استفاده کنند.
  • فیلدهای استخر نشست (idle_session_check_interval، idle_session_timeout، min_idle_session) فقط برای خروجی هستند. این استخر نشست‌های TLS را گرم نگه می‌دارد تا درخواست‌های جدید سطح برنامه به‌جای یک دست‌دهی کامل TLS، یک رفت‌وبرگشت بپردازند.
  • min_idle_session: 0 (پیش‌فرض) نشست‌ها را به‌صورت تنبل بر اساس تقاضا ایجاد می‌کند و پس از idle_session_timeout آنها را می‌بندد. اگر بار کاری شما انفجارهای درخواست جدید دارد آن را افزایش دهید.

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

  • Xray-core از AnyTLS پشتیبانی نمی‌کند. به AnyTLS — Xray-core مراجعه کنید.
  • mihomo پشتیبانی کامل AnyTLS را در هر دو سمت با نام فیلدهای kebab-case (idle-session-check-interval، …) و گزینه‌های اضافی uTLS fingerprint و ECH دارد. به AnyTLS — mihomo مراجعه کنید.

منبع: option/anytls.go:5-25 · v1.13.11 (553cfa1)

Core Tutorial اثر Argsment