پیش‌تنظیم‌های ضدسانسور

کارکرد TLS fragment، TLS tricks، uTLS، Multiplex، ECH و TLS spoof، زمانی که کمک می‌کنند و هزینهٔ آن‌ها.

برخی شبکه‌ها با بررسی نحوهٔ آغاز هر اتصال رمزنگاری‌شده، پروکسی‌ها را مسدود یا کند می‌کنند. این گزینه‌ها ظاهر این آغاز را تغییر می‌دهند. Preset Settings، تنظیمات استتار TLS (TLS Camouflage Settings) و Advanced Settings در ویرایشگر نمایه و انتخاب Custom در چندگانه‌سازی (Multiplex) فقط در حالت پیشرفته در دسترس‌اند (حالت ساده و پیشرفته را ببینید).

پیش‌تنظیم‌ها و تنظیمات نمایه

تنظیمات (Settings) ← Preset Settings پیش‌فرض‌های سراسری را نگه می‌دارد. در ویرایشگر نمایه، Fragment، TLS Tricks، Multiplex و TLS Spoof این انتخاب‌ها را دارند: نگه داری مقدار پیشفرض (Keep Default)، یعنی پیروی از Default On در پیش‌تنظیم (نمایه‌های جدید از این گزینه استفاده می‌کنند)، فعال (On) و خاموش (Off). بنابراین Default On فقط روی نمایه‌هایی اثر دارد که روی نگه داری مقدار پیشفرض مانده‌اند.

پیش‌تنظیم‌ها فقط روی نمایه‌هایی اعمال می‌شوند که روی sing-box اجرا می‌شوند، به‌جز Default Fingerprint مربوط به uTLS که روی هر دو هسته اعمال می‌شود و پیش‌تنظیم‌های Multiplex مربوط به Xray که نمایه‌های VLESS (Xray) از آن‌ها استفاده می‌کنند. sing-box در برابر Xray را ببینید.

هر بار فقط یک چیز را تغییر دهید

هر گزینه در برابر یک روش مسدودسازی کار می‌کند. هیچ‌کدام همه‌جا کمک نمی‌کند و هر کدام ممکن است نمایه‌ای را که پیش‌تر کار می‌کرد از کار بیندازد.

  1. در یک نمایه که کار نمی‌کند یا کند است، یک گزینه را روشن کنید.
  2. یک تست URL اجرا کنید و چند وب‌سایت را باز کنید. اگر چیزی بهتر نشد، گزینه را دوباره روی نگه داری مقدار پیشفرض (Keep Default) بگذارید و گزینهٔ بعدی را امتحان کنید.
  3. وقتی گزینه‌ای به بیشتر نمایه‌هایتان کمک کرد، Default On آن را در Preset Settings روشن کنید.

قطعه‌بندی TLS (TLS fragment)

سامانهٔ سانسور اغلب نام سرور (SNI) را در نخستین پیام یک اتصال TLS، یعنی ClientHello، می‌خواند. TLS fragment این پیام را تقسیم می‌کند تا یک فیلتر ساده نتواند نام را از یک بسته بخواند. این روش فقط در برابر چنین فیلترهای ساده‌ای کمک می‌کند.

Fragment را در ویرایشگر نمایه، زیر تنظیمات استتار TLS (TLS Camouflage Settings)، تنظیم کنید. ابتدا Enable TLS Record Fragment را که کنار آن است امتحان کنید: سبک‌تر است و ClientHello را به‌جای چند بسته، به چند رکورد TLS تقسیم می‌کند.

Preset Settings → TLS → TLS Fragment → Implementation تعیین می‌کند تقسیم چگونه انجام شود:

  • built-in (پیش‌فرض): sing-box پیام ClientHello را به چند بستهٔ TCP تقسیم می‌کند. Fallback Delay در نمایه، مثلاً 500ms، مکث میان قطعه‌هاست وقتی سیستم نمی‌تواند آن را اندازه بگیرد.
  • custom: قطعه‌هایی با Size تصادفی (بایت، 10-100) و مکث‌های Sleep (میلی‌ثانیه، 2-5). نمایه‌های Naive فقط از این پیاده‌سازی پشتیبانی می‌کنند.

هزینه: اتصال‌های جدید کندتر آغاز می‌شوند و custom برای نمایه TCP Fast Open را خاموش می‌کند.

یک قانون مسیریابی هم می‌تواند اتصال‌هایی را که با آن منطبق می‌شوند قطعه‌بندی کند، مثلاً اتصال‌های مستقیم به سایتی که یک فیلتر آن را بر اساس نامش مسدود می‌کند. tls_fragment را در قوانین پیشرفته ببینید.

ترفندهای TLS (TLS tricks)

TLS tricks نام سرور را با ترکیبی از حروف بزرگ و کوچک می‌نویسد، مثلاً ExAmPlE.com. سرورها به بزرگی و کوچکی حروف توجهی ندارند، اما فیلتری که دنبال نام دقیق می‌گردد ممکن است آن را تشخیص ندهد. TLS Tricks را در ویرایشگر نمایه، زیر تنظیمات استتار TLS (TLS Camouflage Settings)، تنظیم کنید.

هزینه: تقریباً هیچ، اما در برابر فیلترهایی که به بزرگی و کوچکی حروف توجه نمی‌کنند کمکی نمی‌کند.

اثر انگشت uTLS

uTLS پیام ClientHello را شبیه ClientHello یک مرورگر یا سیستم رایج می‌کند، به‌جای یک کلاینت پروکسی ساده که از روی اثر انگشتش به‌آسانی شناسایی می‌شود.

  • برای هر نمایه: Fingerprint در ویرایشگر نمایه. لینک‌های اشتراک‌گذاری اغلب آن را با fp= تعیین می‌کنند.
  • سراسری: Preset Settings → TLS → uTLS → Default Fingerprint، برای نمایه‌هایی که اثر انگشت خودشان را ندارند. تا وقتی خالی است (پیش‌فرض)، این نمایه‌ها روی sing-box از uTLS استفاده نمی‌کنند، در REALITY روی sing-box از random و روی Xray از chrome استفاده می‌کنند. نمایه‌های Hysteria، TUIC، Juicity و Naive از uTLS استفاده نمی‌کنند.
  • گزینه‌ها: chrome، firefox، edge، safari، 360، qq، ios، android، random، randomized و unsafe. unsafe uTLS را خاموش می‌کند، حتی وقتی Default Fingerprint تنظیم شده باشد، و فقط در این حالت فیلد Cipher Suites نمایه اعمال می‌شود (مجموعه‌رمزهای TLS 1.2، جداشده با دونقطه؛ آن را خالی بگذارید، مگر اینکه سرورتان به آن نیاز داشته باشد).

هزینه: اندک. اگر سروری با یک اثر انگشت از کار افتاد، اثر انگشت دیگری را امتحان کنید یا فیلد را خالی کنید.

چندگانه‌سازی (Multiplex)

Multiplex (mux) چندین اتصال را درون یک اتصال به سرور حمل می‌کند؛ در نتیجه صفحه‌ها به دست‌دهی‌های (handshake) کمتری نیاز دارند و ناظر اتصال‌های کمتری می‌بیند. سرور باید از mux با همان پروتکل پشتیبانی کند، و اگر از padding استفاده می‌کنید، از آن هم.

چندگانه‌سازی (Multiplex) را در ویرایشگر نمایه تنظیم کنید (در نمایه‌های VLESS (Xray) به‌جای فعال و خاموش، Enabled و Disabled آمده است). Custom ← Configure نسخه‌ای از فیلدهای پیش‌تنظیم را مخصوص همان نمایه می‌کند؛ نمایه‌هایی که از لینک یا اشتراکی با تنظیمات mux مخصوص خودشان آمده‌اند، با Custom باز می‌شوند. Multiplex برای نمایه‌های VLESS با flow برابر با xtls-rprx-vision غیرفعال است و برای XDRIVE لازم است.

پیش‌تنظیم‌های sing-box (Preset Settings → Multiplex → Sing-box):

  • Protocol: smux، yamux یا h2mux.
  • Mode: با Max Streams، وقتی یک اتصال این تعداد جریان را حمل کند، اتصال دیگری باز می‌شود. با Max Connections، حداکثر همین تعداد اتصال نگه داشته می‌شود و فقط وقتی اتصال جدیدی باز می‌شود که کم‌کارترین اتصال Min Streams جریان را حمل کند.
  • Padding: به ترافیک چندگانه‌شده padding اضافه می‌کند.
  • TCP Brutal: حتی هنگام از دست رفتن بسته‌ها، با سرعت‌های ثابتی که در Upload (Mb/s) و Download (Mb/s) وارد می‌کنید ارسال می‌کند. هر دو را وارد کنید. به پشتیبانی سرور نیاز دارد و در این حالت همهٔ جریان‌ها از یک اتصال مشترک استفاده می‌کنند.

پیش‌تنظیم‌های Xray (Preset Settings → Multiplex → Xray):

  • Concurrency: تعداد جریان‌های هر اتصال، پیش از اینکه اتصال دیگری باز شود. 0 از پیش‌فرض Xray، یعنی 8، استفاده می‌کند و -1 ترافیک TCP را بیرون از mux می‌فرستد.
  • Max Connections: حداکثر این تعداد اتصال، برای TCP و XUDP هر کدام جداگانه. خالی یعنی بدون محدودیت.
  • XUDP Concurrency: تعداد جریان‌های UDP در هر اتصال، روی اتصال‌های جداگانهٔ خودشان. 0 ترافیک UDP را روی اتصال‌های TCP حمل می‌کند و -1 آن را بیرون از mux می‌فرستد.
  • UDP/443، که بیشتر QUIC است: Reject (پیش‌فرض) باعث می‌شود مرورگرها به TCP برگردند، Allow آن را از راه mux حمل می‌کند و Skip آن را بیرون از mux می‌فرستد.

هزینه: هر چیزی که روی یک اتصال است با هم گیر می‌کند. اتصال‌های موازی زیاد، مثلاً از یک کلاینت تورنت، ممکن است باعث شوند Throne پردازنده (CPU) را زیاد مصرف کند (#1090)؛ Multiplex را برای آن نمایه خاموش کنید. نخستین درخواست روی یک اتصال mux جدید کندتر است، پس مهلت زمانی (timeout) کوتاه در تست تأخیر ممکن است نمایهٔ سالم را ناموفق گزارش کند.

ECH

Encrypted Client Hello (ECH) نام سرور را رمزنگاری می‌کند تا ناظر نتواند آن را بخواند. فقط وقتی کار می‌کند که سرور از آن پشتیبانی کند و برای هر نمایه جداگانه تنظیم می‌شود:

  1. نمایه را باز کنید، روی Advanced Settings کلیک کنید و Enable ECH را تیک بزنید.
  2. اختیاری: پیکربندی ECH سرور را در ECH Config جای‌گذاری کنید. اگر روی Not Set بماند، پیکربندی در DNS جست‌وجو می‌شود، برای دامنهٔ ECH Query Name / Resolver یا در غیر این صورت نام سرور. برای پرسیدن از یک سرور DNS به‌جای DNS مستقیم، آن را پس از یک + اضافه کنید، برای مثال cloudflare-ech.com+https://1.1.1.1/dns-query.
  3. در هر دو پنجره روی تایید (OK) کلیک کنید.

نمایه‌های Xray به‌جای آن از ECH Config List در تنظیمات TLS خود استفاده می‌کنند: پیکربندی به‌صورت Base64، یا یک دامنه و یک سرور DNS-over-HTTPS، مانند cloudflare-ech.com+https://8.8.8.8/dns-query. لینک‌های اشتراک‌گذاری ECH را در ech= دارند؛ ECH و پین‌های گواهی در لینک‌ها را ببینید.

هزینه: اگر سرور از ECH پشتیبانی نکند یا پیکربندی پیدا نشود، نمایه کار نمی‌کند.

جعل TLS (TLS spoof)

برخی فیلترها چند نام مجاز را عبور می‌دهند و بقیه را مسدود می‌کنند. TLS spoof درست پیش از ClientHello واقعی، یک ClientHello جعلی با یک نام مجاز می‌فرستد. پیام جعلی عمداً نامعتبر است تا سرور آن را نادیده بگیرد، در حالی که فیلتر اجازهٔ عبور اتصال را می‌دهد.

  • پیش‌تنظیم‌ها (Preset Settings → TLS → TLS Spoof): Spoof SNI نام مجاز است و Method روش نامعتبر ساختن پیام جعلی: wrong-sequence، wrong-checksum، wrong-ack، wrong-md5 یا wrong-timestamp (خالی: پیش‌فرض هسته).
  • برای هر نمایه: Advanced Settings ← TLS Spoof، Spoof SNI و Method. فیلدهای خالی از پیش‌تنظیم‌ها استفاده می‌کنند. نمایه‌ای که Spoof SNI خودش را دارد، حتی روی Keep Default هم جعل انجام می‌دهد.
  • برای هر سایت: یک قانون مسیریابی پیشرفته با tls_spoof و tls_spoof_method؛ قوانین پیشرفته را ببینید.

TLS spoof بسته‌های خام می‌فرستد، بنابراین هسته به دسترسی‌هایی نیاز دارد که حالت TUN تنظیم می‌کند: دسترسی مدیر (Administrator) در Windows (نه در Windows ARM64)، root یا CAP_NET_RAW و CAP_NET_ADMIN در Linux، و root در macOS که روش wrong-timestamp در آن کار نمی‌کند.

هزینه: به دسترسی بالاتر نیاز دارد و فقط در برابر فیلترهایی کمک می‌کند که برخی نام‌ها را مجاز می‌دانند.

تنظیم دقیق HTTP/2 و QUIC

Preset Settings → HTTP/2 & QUIC پیش‌فرض‌هایی مانند Idle Timeout، Keep Alive Period و Initial Packet Size را برای نمایه‌های Hysteria، TUIC و MASQUE تعیین می‌کند. هر نمایه می‌تواند آن‌ها را در Advanced Settings → QUIC Parameters با مقدار خودش جایگزین کند. این فیلدها را خالی بگذارید تا پیش‌فرض‌های هسته به کار روند، مگر اینکه مستندات سرورتان مقدارهای دیگری بخواهد.

Android

  • همین پیش‌تنظیم‌ها در تنظیمات (Settings) ← از پیش‌تنظیم‌ها (Presets) قرار دارند و Default On در آنجا به‌طور پیش‌فرض روشن (On by default) نام دارد. ECH برای هر نمایه جداگانه تنظیم می‌شود.
  • فعال کردن مالتی‌پلکسر (Enable multiplexer) در ویرایشگر نمایه گزینهٔ سفارشی (Custom) را هم دارد که فیلدهای Multiplex را درست زیر خودش نشان می‌دهد.
  • قوانین مسیریابی می‌توانند اتصال‌هایی را که با آن‌ها تطبیق دارند قطعه‌بندی کنند، با قطعه‌بندی TLS (TLS fragment)، تأخیر بازگشت قطعه‌بندی TLS (TLS fragment fallback delay) و قطعه‌بندی رکورد TLS (TLS record fragment).
  • TLS spoof در دسترس نیست.