sing-box در برابر Xray

کدام هسته نمایه‌های شما را اجرا می‌کند، Xray VLESS Preference چگونه کار می‌کند و خطاهای Reality با سرورهای جدیدتر Xray چگونه برطرف می‌شوند.

بیشتر نمایه‌ها روی sing-box اجرا می‌شوند. برخی نمایه‌های VLESS و همهٔ پیکربندی‌های سفارشی Xray روی Xray اجرا می‌شوند که Throne آن را هم در خود دارد. در حالت ساده، زبانه‌های هسته (Core) و Logging و بیشتر تنظیمات دیگر این صفحه پنهان هستند؛ حالت ساده و پیشرفته را ببینید.

دو هسته در یک برنامه

sing-box همیشه اجرا می‌شود و پورت پروکسی محلی، حالت TUN، مسیریابی و DNS بر عهدهٔ آن است. Xray به‌عنوان یک بخش کمکی فقط زمانی راه‌اندازی می‌شود که نمایهٔ در حال اجرا، یکی از هاپ‌های زنجیرهٔ آن یا خروجی یک قانون مسیریابی به آن نیاز داشته باشد. sing-box این ترافیک را به‌صورت داخلی به Xray می‌سپارد؛ بنابراین حالت TUN، نمایه‌های مسیریابی و تنظیمات DNS با هر دو هسته یکسان کار می‌کنند.

نمایه‌هایی که ستون نوع (Type) آن‌ها VLESS (Xray)، Custom Xray … Outbound یا Custom Xray Config را نشان می‌دهد روی Xray اجرا می‌شوند؛ همهٔ نمایه‌های دیگر، از جمله VLESS، روی sing-box اجرا می‌شوند. لینک vless:// که از یک قابلیت مخصوص Xray استفاده کند، همیشه به‌صورت VLESS (Xray) وارد می‌شود، هر چه Xray VLESS Preference باشد:

  • ترنسپورت XHTTP (type=xhttp) و تنظیمات extra آن،
  • رمزنگاری VLESS (مقداری برای encryption به‌جز none)،
  • Finalmask،
  • ترنسپورت mKCP (type=kcp)،
  • ترنسپورت TCP (raw) با هدر HTTP همراه با TLS.

mKCP اتصال را روی UDP حمل می‌کند (kcp در شبکه (Network) در ویرایشگر نمایه). با یک ماسک xdns در Finalmask، به تونل DNS XDNS تبدیل می‌شود. XDRIVE هم فقط در Xray وجود دارد، اما قالب لینک ندارد.

برای دیدن پیکربندی‌هایی که Throne برای یک نمایه می‌سازد، در منوی راست‌کلیک آن اشتراک گذاری (Share) ← استخراج پیکربندی (Export config) را انتخاب کنید. پیام‌های Xray در زبانهٔ گزارش‌ها (Logs) نمایش داده می‌شوند؛ میزان جزئیات آن‌ها را در تنظیمات (Settings) ← تنظیمات پایه (Basic Settings) ← Logging → Xray Log level تعیین کنید.

انتخاب هسته برای لینک‌های VLESS

تنظیمات (Settings) ← تنظیمات پایه (Basic Settings) ← هسته (Core) ← Xray VLESS Preference تعیین می‌کند که یک لینک vless:// هنگام وارد شدن به کدام هسته سپرده شود:

گزینه لینک‌هایی که به‌صورت VLESS (Xray) وارد می‌شوند
XHTTP Only فقط لینک‌هایی که به یک قابلیت مخصوص Xray نیاز دارند (بالا را ببینید). لینک‌های Reality روی sing-box می‌مانند.
XHTTP And Reality (پیش‌فرض) همان لینک‌ها، به‌علاوهٔ همهٔ لینک‌های Reality.
All VLESS همهٔ لینک‌های vless://.

منابع دیگر:

  • YAML با قالب Clash / Mihomo: یک مورد VLESS زمانی به Xray سپرده می‌شود که از XHTTP یا رمزنگاری VLESS، یا از Reality روی TCP، WebSocket یا gRPC استفاده کند (مگر اینکه ترجیح XHTTP Only باشد). موارد VLESS دیگر روی sing-box می‌مانند، حتی با All VLESS.
  • JSON با قالب Xray: هر خروجی VLESS به VLESS (Xray) تبدیل می‌شود.
  • JSON با قالب sing-box: خروجی‌های VLESS روی sing-box می‌مانند.
  • ویرایشگر نمایه: خودتان VLESS یا VLESS (Xray) را در نوع (Type) انتخاب می‌کنید.

پس از تغییر ترجیح

این ترجیح فقط بر نمایه‌هایی اثر می‌گذارد که پس از تغییر وارد می‌کنید. برای انتقال نمایه‌های موجود به هستهٔ دیگر:

  • گروه اشتراک: اشتراک را به‌روز کنید (گروه ها (Groups) ← اشتراک را به روز کنید (Update subscription)). Throne نمایه‌های مربوط را با نمایه‌های تازه جایگزین می‌کند؛ بنابراین نتایج تست قبلی آن‌ها از بین می‌رود.
  • نمایه‌ای که از یک لینک اضافه شده: لینک را دوباره اضافه کنید، سپس نمایهٔ قدیمی را حذف کنید.
  • نمایه‌ای که دستی ساخته‌اید: نوع آن قابل تغییر نیست. یک نمایهٔ جدید با نوع دیگر بسازید.

اگر Keep working profiles در تنظیمات اشتراک گروه روشن باشد، نمایه‌های قدیمیِ کارا ممکن است کنار نمایه‌های جدید باقی بمانند. آن‌ها را خودتان حذف کنید.

خطاهای Reality با سرورهای جدیدتر Xray

سرورهای جدیدتر Xray کلاینت Reality در sing-box را رد می‌کنند. نمایه وصل نمی‌شود و در گزارش، reality verification failed دیده می‌شود (#1780):

  • Xray نسخه‌های 26.7.11 تا 26.7.28 فقط کلاینت‌هایی را می‌پذیرند که نسخهٔ جدیدی از Xray را اعلام کنند.
  • Xray نسخهٔ 26.9.9 و جدیدتر به تبادل کلیدی (X25519MLKEM768) نیاز دارند که کلاینت Reality در sing-box آن را ارائه نمی‌کند.

به‌جای آن، نمایه را روی Xray اجرا کنید:

  1. تنظیمات (Settings) ← تنظیمات پایه (Basic Settings) ← هسته (Core) را باز کنید.
  2. Xray VLESS Preference را روی XHTTP And Reality یا All VLESS بگذارید و روی تایید (OK) کلیک کنید.
  3. اشتراک را به‌روز کنید یا لینک را دوباره اضافه کنید (پس از تغییر ترجیح را ببینید).
  4. بررسی کنید که ستون نوع (Type) اکنون VLESS (Xray) را نشان دهد.

از یک اشتراک YAML با قالب Clash / Mihomo، فقط موارد Reality روی TCP، WebSocket یا gRPC به Xray منتقل می‌شوند. برای انتقال‌های (transport) دیگر، اگر ارائه‌دهندهٔ شما اشتراک را به‌صورت فهرستی از لینک‌ها هم ارائه می‌دهد، از آن قالب استفاده کنید.

اگر خودتان یک سرور Xray با نسخهٔ 26.7.11 تا 26.7.28 را اداره می‌کنید، می‌توانید به‌جای آن "minClientVer": "0.0.0" را به realitySettings در ورودی (inbound) VLESS آن اضافه کنید تا کلاینت‌های قدیمی‌تر وصل شوند. این کار برای نسخهٔ 26.9.9 و جدیدتر کمکی نمی‌کند.

اعتماد به گواهی‌های سیستم

Xray گواهی سرورها را فقط با گواهی‌های ریشه‌ای بررسی می‌کند که درون خودش دارد؛ بنابراین سروری که گواهی‌اش از یک ریشهٔ نصب‌شده توسط خودتان می‌آید، مانند ریشهٔ یک شرکت یا یک ریشهٔ خودامضا، رد می‌شود. تنظیمات (Settings) ← تنظیمات پایه (Basic Settings) ← امنیت (Security) ← اعتماد Xray به گواهی‌های سیستم (Trust System Certificates in Xray) را تیک بزنید (پیش‌فرض: خاموش) تا Xray به گواهی‌های سیستم شما هم اعتماد کند.

XDRIVE

با ترنسپورت XDRIVE، Throne و سرور به یکدیگر وصل نمی‌شوند. آن‌ها ترافیک را به‌صورت فایل در فضای ذخیره‌سازی‌ای مبادله می‌کنند که هر دو به آن دسترسی دارند: یک پوشهٔ Google Drive، یک باکت S3، یک سرویس ذخیره‌سازی دیگر با API از نوع HTTP، یا پوشه‌ای روی همین رایانه. فقط با سروری از آن استفاده کنید که برای XDRIVE راه‌اندازی شده است، و با تنظیماتی که گردانندهٔ آن به شما می‌دهد.

XDRIVE قالب لینک ندارد، چون لینک باید رمزهای فضای ذخیره‌سازی را در خود داشته باشد. به‌جای آن، پیکربندی JSON سرور با قالب Xray یا یک لینک Throne (throne://add/…) را وارد کنید. اشتراک‌گذاری یک نمایهٔ XDRIVE لینک Throne آن را می‌دهد.

برای راه‌اندازی آن در ویرایشگر نمایه، در شبکه (Network) گزینهٔ xdrive را انتخاب کنید. XDRIVE به این تنظیمات VLESS نیاز دارد:

  • رمزگذاری (Encryption): رشتهٔ رمزنگاری VLESS که سرور می‌دهد و با mlkem768x25519plus شروع می‌شود.
  • Flow: خالی.
  • چندگانه‌سازی (Multiplex): هر مقداری به‌جز Disabled. با نگه داری مقدار پیشفرض (Keep Default)، Throne برای XDRIVE، mux را روشن می‌کند. چندگانه‌سازی را ببینید.

در گروه فضای ذخیره‌سازی (Storage)، سرویس (Service) را انتخاب کنید و آنچه گرداننده به شما می‌دهد را وارد کنید:

  • google-drive (پیش‌فرض): پوشه (Folder) (شناسهٔ پوشهٔ مشترک)، شناسهٔ کلاینت (Client ID)، رمز کلاینت (Client Secret) و توکن تازه‌سازی (Refresh Token).
  • s3، هر فضای ذخیره‌سازی سازگار با S3 مانند AWS S3، MinIO یا Cloudflare R2: Endpoint، Bucket، پوشه (پیشوند کلیدها)، Access Key ID و Secret Access Key، و به‌دلخواه Region (خالی یعنی us-east-1) و Session Token. Path-Style Addressing (به‌طور پیش‌فرض روشن) باکت را به‌جای نام میزبان، در مسیر URL می‌گذارد.
  • template، هر فضای ذخیره‌سازی با API از نوع HTTP: قالب (Template) (عملیات API به‌صورت JSON) و رمزها (Secrets) (مقدارهای جداشده با ویرگول که به‌صورت {secret0}، {secret1} و مانند آن خوانده می‌شوند).
  • local: پوشه، پوشه‌ای روی همین رایانه.

نشانی جلویی (Front Address) و درگاه جلویی (Front Port) (پیش‌فرض 443) اختیاری‌اند: Throne به API ذخیره‌سازی در این نشانی وصل می‌شود، در حالی که TLS همچنان نام میزبان API را می‌فرستد؛ نوعی domain fronting. برای استفاده از پیش‌فرض‌های Xray، گروه تنظیم دقیق (Tuning) را خالی بگذارید.

Xray در زنجیره‌ها

یک زنجیره می‌تواند نمایه‌های sing-box و Xray را با هم ترکیب کند، با دو محدودیت:

  • همهٔ هاپ‌های Xray باید کنار هم باشند: هاپ‌های sing-box، سپس هاپ‌های Xray، سپس هاپ‌های sing-box. در غیر این صورت نمایه اجرا نمی‌شود و در گزارش، «Too many core transitions» (جابه‌جایی بیش از حد میان هسته‌ها) دیده می‌شود.
  • نمایهٔ Custom (Xray config) باید بالاترین هاپ باشد و نمی‌تواند با هاپ‌های Xray دیگر در یک زنجیره باشد.

پروکسی front و پروکسی مقصد گروه، و نیز WARP، هم هاپ به شمار می‌آیند. زنجیره‌های پروکسی و پیکربندی‌های سفارشی را ببینید.

فایل‌های geo برای Xray

نمایهٔ Custom (Xray config) که قوانین routing خودش از مقدارهای geoip: یا geosite: استفاده کند، به فایل‌های geoip.dat و geosite.dat نیاز دارد. وقتی این فایل‌ها وجود نداشته باشند، Throne پیشنهاد می‌کند آن‌ها را دانلود کند: روی بله (Yes) کلیک کنید، سپس نمایه را دوباره اجرا کنید.

منبع آن‌ها را در تنظیمات (Settings) ← تنظیمات پایه (Basic Settings) ← Miscellaneous → Xray Geo Assets انتخاب کنید: Loyalsoldier (جهانی و چین، پیش‌فرض)، Chocolate4U (ایران)، runetfreedom (روسیه) یا v2fly. هر دو فایل را از یک منبع بگیرید. اگر Throne پیام «Geo asset missing category» (این دسته در فایل geo نیست) را نشان داد، منبعی را انتخاب کنید که این دسته را دارد و برای آن فایل روی Download کلیک کنید.

Android

  • این ترجیح در تنظیمات (Settings) ← هسته (Core) ← ترجیح VLESS در Xray (Xray VLESS preference) قرار دارد، با گزینه‌های فقط XHTTP (XHTTP only)، XHTTP و Reality (XHTTP and Reality) (پیش‌فرض) و همه VLESS (All VLESS).
  • XDRIVE: در شبکه (Network) گزینهٔ XDRIVE را انتخاب کنید. فیلدها در تنظیمات XDRIVE (XDRIVE settings) و تنظیم دقیق XDRIVE (XDRIVE tuning) هستند و رمزها (Secrets) در هر خط یک مقدار می‌گیرد.
  • mKCP: در شبکه گزینهٔ mKCP را انتخاب کنید. فیلدها در تنظیمات mKCP (mKCP settings) و تنظیم دقیق mKCP (mKCP tuning) هستند. برای XDNS، ماسک xdns را در Finalmask اضافه کنید.
  • تنظیمات (Settings) ← هسته (Core) ← اعتماد به گواهی‌های سیستم در Xray (Trust system certificates in Xray) به گواهی‌های ریشه‌ای اعتماد می‌کند که همراه Android هستند، نه به گواهی‌هایی که خودتان نصب کرده‌اید.
  • Throne برای Android فایل‌های geoip.dat و geosite.dat را وقتی یک پیکربندی Xray به آن‌ها نیاز داشته باشد، خودش دانلود می‌کند. منبع آن‌ها را در تنظیمات (Settings) ← هسته (Core) ← داده‌های جغرافیایی Xray (Xray geo assets) انتخاب کنید.