Skip to content

VLESS — sing-box

sing-box پیاده‌سازی VLESS را عرضه می‌کند که با کلاینت و سرور Xray تعامل دارد، از XTLS Vision برای مسیر سریع پس از دست‌دهی پشتیبانی می‌کند و (در سمت خروجی) برای چندسوسازی UDP-over-TLS از XUDP استفاده می‌کند.

ورودی

ورودی type: "vless":

فیلدنوعپیش‌فرضمقادیر مجازتوضیحات
users[]VLESSUser[]<VLESSUser array>فهرست کاربران پذیرفته‌شده. حداقل یک ورودی برای اینکه ورودی اتصال‌ها را بپذیرد لازم است.
multiplex*InboundMultiplexOptions(disabled)InboundMultiplexOptionsچندسوسازی (mux) سمت سرور (smux/yamux/h2mux). این بلوک در صفحهٔ Multiplex در فاز ۴ مستند شده است.
transport*V2RayTransportOptions(plain TCP)V2RayTransportOptionsبسته‌بندی ترابرد اختیاری به سبک V2Ray: ws، http، grpc، quic، hysteria. به Transport در فاز ۴ مراجعه کنید.

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

این ساختار همچنین ListenOptions (آدرس شنود، پورت، sniff، set، …) و InboundTLSOptionsContainer (مواد TLS) را درون خود جای می‌دهد. این بلوک‌ها میان همهٔ انواع ورودی مشترک‌اند و در صفحات Inbounds و TLS در فاز ۴ مستند می‌شوند.

users[]

فیلدنوعپیش‌فرضمقادیر مجازتوضیحات
namestring(unset)<string>نام نمایشی کاربر؛ به‌عنوان برچسب آمار/لاگ استفاده می‌شود.
uuidstring(required)<UUID>UUID کاربر. الزامی. در شکل استاندارد 8-4-4-4-12.
flowstring(empty) | xtls-rprx-visionالگوریتم flow هر کاربر. خالی = VLESS ساده؛ `xtls-rprx-vision` Vision را فعال می‌کند.

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

خروجی

خروجی type: "vless":

فیلدنوعپیش‌فرضمقادیر مجازتوضیحات
uuidstring(required)<UUID>UUID کاربری که سرور بالادست می‌پذیرد.
flowstring(empty) | xtls-rprx-visionالگوریتم flow؛ باید با آنچه سرور انتظار دارد تطبیق داشته باشد.
networkNetworkList(tcp+udp)tcp | udp | <empty for both>محدود کردن به فقط TCP یا فقط UDP. خالی هر دو را فعال می‌کند.
multiplex*OutboundMultiplexOptions(disabled)OutboundMultiplexOptionsچندسوسازی (mux) سمت کلاینت. باید با پیکربندی چندسوسازی سرور تطبیق داشته باشد.
transport*V2RayTransportOptions(plain TCP)V2RayTransportOptionsترابرد به سبک V2Ray (ws، http، grpc و غیره).
packet_encoding*string(unset)packetaddr | xudpروش رمزگذاری برای حمل بسته‌های UDP داخل جریان VLESS. `xudp` با XUDP در Xray تطبیق دارد؛ `packetaddr` شکل قدیمی‌تر تک‌جریانی است.

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

این ساختار DialerOptions (bind interface، routing mark، detour، …)، ServerOptions (server، server_port) و OutboundTLSOptionsContainer (tls) را درون خود جای می‌دهد.

مثال‌ها

ورودی با یک کاربر و XTLS Vision:

json
{
  "inbounds": [
    {
      "type": "vless",
      "tag": "vless-in",
      "listen": "::",
      "listen_port": 443,
      "users": [
        { "name": "alice", "uuid": "a3482e88-686a-4a58-8126-99c9df64b7bf", "flow": "xtls-rprx-vision" }
      ],
      "tls": {
        "enabled": true,
        "server_name": "example.com",
        "certificate_path": "/etc/ssl/cert.pem",
        "key_path": "/etc/ssl/key.pem"
      }
    }
  ]
}

خروجی از طریق REALITY، ارسال UDP از طریق XUDP:

json
{
  "outbounds": [
    {
      "type": "vless",
      "tag": "proxy",
      "server": "example.com",
      "server_port": 443,
      "uuid": "a3482e88-686a-4a58-8126-99c9df64b7bf",
      "flow": "xtls-rprx-vision",
      "packet_encoding": "xudp",
      "tls": {
        "enabled": true,
        "server_name": "www.google.com",
        "utls": { "enabled": true, "fingerprint": "chrome" },
        "reality": { "enabled": true, "public_key": "...", "short_id": "..." }
      }
    }
  ]
}

نکات

  • یک سرور VLESS در sing-box از users[].uuid استفاده می‌کند، نه clients[].id مانند Xray. همان UUID در هر دو پیاده‌سازی کار می‌کند؛ فقط کلید JSON تغییر می‌کند.
  • sing-box از سازوکار fallbacks Xray درون VLESS پشتیبانی نمی‌کند؛ رفتار معادل از طریق فیلد fallback در بلوک مشترک tls فراهم می‌شود (که در صورت عدم تطبیق دست‌دهی TLS بازارسال می‌کند).
  • گزینه‌های packet_encoding از proxy/vless/packetaddr بالادست می‌آیند. xudp پیش‌فرض مدرن است و با رمزگذاری‌ای که Xray هنگام داشتن پسوند -udp443 در فیلد flow استفاده می‌کند تطبیق دارد.
  • users[].flow و حالت ضمنی «بدون flow» با هم ترکیب می‌شوند: یک سرور بدون کاربر Vision همچنان کلاینت‌های VLESS ساده را روی همان پورت می‌پذیرد.

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

  • Xray از clients[].id (UUID) استفاده می‌کند و آرایهٔ fallbacks را روی ورودی می‌پذیرد. به VLESS — Xray-core مراجعه کنید.
  • mihomo همه چیز را در یک شیء proxi واحد جای می‌دهد (آرایهٔ جداگانهٔ users در خروجی وجود ندارد). به VLESS — mihomo مراجعه کنید.

منبع: option/vless.go:3-27 · v1.13.11 (553cfa1)

Core Tutorial اثر Argsment