پرش به محتویات

WARP

همهٔ قابلیت‌های هیدیفای

WARP شما را با WireGuard، با AmneziaWG وقتی awg را تنظیم کنید، یا با MASQUE ‏(HTTP/3 یا HTTP/2) وقتی masque را تنظیم کنید، به VPN رایگان WARP کلادفلر وصل می‌کند. خودش یک حساب رایگان WARP ثبت می‌کند، پس به کلید یا سرور نیازی ندارید. می‌تواند پیش از هر handshake چند بستهٔ جعلی بفرستد، دنبال یک نشانی کلادفلر بگردد که پاسخ می‌دهد، و وقتی نشانی فعلی از کار افتاد به نشانی دیگری برود. این یک endpoint است: "type": "warp" در فهرست endpoints.

چرا از آن استفاده کنیم

  • بدون سرور شخصی و بدون ساختن حساب، یک VPN کارا دارید.
  • ترافیک از یک نشانی کلادفلر بیرون می‌رود که بسیاری از سایت‌ها بیشتر از نشانی یک VPS به آن اعتماد می‌کنند.
  • اسکنر نشانی و پورتی را پیدا می‌کند که روی شبکهٔ فعلی شما کار می‌کند و آن را برای هر شبکه جدا به خاطر می‌سپارد. وقتی از وای‌فای خانه به اینترنت همراه می‌روید، از همان چیزی شروع می‌کند که قبلاً آنجا کار کرده است.

اگر شبکهٔ شما UDP را می‌بندد، یا WireGuard را حتی با نویز هم می‌بندد، masque را تنظیم کنید: تونل آن‌وقت روی HTTP/3، یا HTTP/2 روی TCP، کار می‌کند. برای اینکه MASQUE چطور از فیلترینگ عبور می‌کند، WARP روی MASQUE را ببینید.

چطور از فیلترینگ عبور می‌کند

  • نویز. WARP می‌تواند پیش از هر handshake چند بستهٔ جعلی بفرستد. برخی فیلترها فقط چند بستهٔ اول یک جریان UDP را نگاه می‌کنند، و جریانی که با چیز دیگری شروع شود WireGuard شناخته نمی‌شود. در حالت quic بسته‌های جعلی، بسته‌های Initial واقعی QUIC نسخهٔ ۱ هستند با یک TLS ClientHello برای یک نام شناخته‌شده (به‌طور پیش‌فرض www.google.com). فیلتری که Initialهای QUIC را رمزگشایی کند، شروع یک اتصال عادی QUIC به آن سایت را می‌بیند.
  • نشانی‌ها و پورت‌های دیگر. کلادفلر WARP را روی نشانی‌ها و پورت‌های زیادی ارائه می‌کند. وقتی نشانی پیش‌فرض بسته است، اسکنر نشانی‌ای پیدا می‌کند که بسته نیست.
  • پورت مبدأ تازه. وقتی handshakeها پشت سر هم شکست می‌خورند، دستگاه WireGuard یک سوکت تازه با پورت مبدأ تازه باز می‌کند. این کار وقتی کمک می‌کند که فیلتر یک اتصال را علامت زده باشد، یا نگاشت NAT در زمان خواب دستگاه منقضی شده باشد.

محدودیت‌ها: نویز در برابر فیلتری که همهٔ UDP یا همهٔ ترافیک به بازه‌های WARP کلادفلر را می‌بندد کمکی نمی‌کند. ترافیک بعد از نویز همچنان WireGuard است، پس فیلتری که کل جریان را بررسی کند هنوز می‌تواند آن را پیدا کند.

چطور کار می‌کند

دستگاه‌ها. WARP برای هر تونل به دستگاهی نیاز دارد که در کلادفلر ثبت شده باشد: یک دستگاه WireGuard، یک دستگاه AmneziaWG (دستگاه WireGuard جداگانه) و یک دستگاه MASQUE (دستگاهی که کلید MASQUE گرفته). فقط در حالت awg، اگر دستگاه AmneziaWG نباشد، دستگاه WireGuard ذخیره‌شده برداشته می‌شود تا دستگاه نسخه‌های قبلی کار کند. مگر آنکه cache_file.store_warp_config برابر false باشد (پیش‌فرض روشن است)، همهٔ دستگاه‌های ثبت‌شده در یک مخزن در فایل کش (کلید warp-profiles) نگه داشته می‌شوند که همهٔ endpointهای warp در آن شریک‌اند. هر endpoint دستگاه‌های خودش را اجاره می‌کند: دو endpoint روی یک دستگاه یکدیگر را از کلادفلر بیرون می‌اندازند. به این ترتیب برمی‌دارد:

  1. پروفایلی که در خود پیکربندی نوشته شده (private_key، interface، peers)، برای WireGuard؛ برای MASQUE، ‏masque.device، دستگاهی که جای دیگری ثبت شده (دستگاهِ لینک masque://). وقتی کلادفلر این دستگاه را رد کند (کلیدش هرگز ثبت نشده، یا دستگاه حذف شده)، ‏WARP این را در فایل کش به خاطر می‌سپارد، با ۲ و ۳ ادامه می‌دهد، و تا وقتی پیکربندی همان دستگاه را دارد دوباره امتحانش نمی‌کند.
  2. دستگاهی از همان نوع از مخزن که کنار گذاشته نشده و endpoint دیگری آن را اجاره نکرده: همانی که این endpoint (با unique_identifier یا tag) قبلاً به کار برده، وگرنه هر دستگاه آزاد. نه با profile.recreate (آن‌وقت هر شروع یک دستگاه تازه ثبت می‌کند). endpointی که بسته شود دستگاه‌هایش را پس می‌دهد.
  3. دستگاهی تازه که با API کلادفلر ثبت می‌شود. با profile.id و profile.auth_token همان دستگاه برداشته می‌شود، تا وقتی کنار گذاشته نشده. با profile.license لایسنس (مثلاً کلید WARP+) روی دستگاه WireGuard تازه اعمال می‌شود. درخواست‌ها، اگر profile.detour تنظیم شده باشد، از آن می‌روند؛ اگر شکست بخورد، WARP به‌نوبت از هر outbound دوباره امتحان می‌کند. ثبتی که شکست بخورد پس از ۱ ثانیه و هر بار با دو برابر فاصله، تا هر ۳۰ ثانیه، دوباره امتحان می‌شود تا کار کند یا endpoint بسته شود.

دستگاه‌هایی که نسخه‌های قبلی ذخیره کرده‌اند (هر کدام با یک کلید) به این فهرست افزوده می‌شوند.

چه وقت دستگاهی کنار گذاشته می‌شود. شبکه‌ای که WARP را مسدود کند دلیل دستگاه تازه نیست: دستگاه تازه هم همان‌طور مسدود می‌شود، و کلادفلر تعداد ثبت را محدود می‌کند. وقتی WARP ۳ دقیقه متصل نبوده، دربارهٔ دستگاهی که در حال استفاده است از کلادفلر می‌پرسد، حداکثر هر ۱۰ دقیقه یک بار. فقط وقتی کلادفلر پاسخ دهد که دستگاه دیگر وجود ندارد (HTTP 401، 403، 404 یا 410)، غیرفعال است، یا حسابش سهمیه‌اش را تمام کرده، دستگاه کنار گذاشته می‌شود: WARP با دستگاه ذخیره‌شدهٔ بعدی دوباره شروع می‌کند یا دستگاهی تازه ثبت می‌کند. وقتی API در دسترس نباشد، یا بگوید دستگاه سالم است، همان دستگاه به کار می‌رود. دستگاهی که در پیکربندی نوشته شده هرگز کنار گذاشته نمی‌شود.

تونل. ‏mode تونل را انتخاب می‌کند:

  • wg: ‏WireGuard، پیش‌فرض.
  • awg: ‏AmneziaWG، با تنظیم‌های awg، یا بدون آن‌ها با تنظیم‌های پیش‌تنظیم noise به نام dns-google. بلوک awg بدون mode هم یعنی awg.
  • masque: ‏MASQUE، روی HTTP/3 یا HTTP/2. بلوک masque (هر تنظیمی، یا enabled) بدون mode هم یعنی masque. اسکنر آن‌وقت دنبال endpointهای MASQUE می‌گردد. server و server_port سرور MASQUE را تعیین می‌کنند.
  • auto: ‏WARP یک دستگاه WireGuard، یک دستگاه AmneziaWG و یک دستگاه MASQUE می‌گیرد، سپس هم‌زمان با هر تونل یک دست‌دادن انجام می‌دهد (WireGuard با noise همین endpoint، ‏AmneziaWG با تنظیم‌های awg، ‏MASQUE با تنظیم‌های masque)، برای هر کدام دو بار در ۵ ثانیه، و سریع‌ترینی را که پاسخ داده راه می‌اندازد. هر تونل دستگاه خودش را دارد، پس دست‌دادن‌ها کلید مشترکی ندارند، و دست‌دادن‌اند نه تونل کامل تا مسابقه پس از پایان هزینه‌ای نداشته باشد. وقتی هیچ‌کدام پاسخ ندهد WireGuard به کار می‌رود تا اسکنر و چرخش پورت هنوز بتوانند راهی پیدا کنند. تا وقتی ۳ دقیقه متصل نبوده، دوباره مسابقه می‌دهد (حداکثر هر ۱۰ دقیقه) و به تونل دیگری که پاسخ دهد می‌رود. server و server_port فقط برای peer در WireGuard است. پیش از انتخاب، نوع نمایشی WARP · Auto است و هنگام مسابقه 🔍 Searching....

بدون mode، ‏awg و masque با هم پیکربندی را نامعتبر می‌کنند. وقتی اولین شروع شکست بخورد (AmneziaWG وقتی detourش هنوز کار نکند فوراً شکست می‌خورد)، مثل ثبت دوباره امتحان می‌شود.

Peer. تونل از نشانی IPv4 ‏peer پروفایل (و اگر IPv4 نداشته باشد، نشانی IPv6 آن) و یکی از پورت‌های آن، به انتخاب تصادفی، استفاده می‌کند. server و server_port جای آن‌ها را می‌گیرند. بدون اسکنر و بدون server_port، پورتی که در ۱۰ ثانیه هیچ دست‌دادنی کامل نکند با پورت بعدی پروفایل عوض می‌شود. "rotate_ports": false این چرخش را خاموش می‌کند. ‏fallback_address نشانی‌های WARP دیگری است که اگر نشانی در حال استفاده در ۱۵ ثانیه دست‌دادنی نگیرد، روی همان پورت امتحان می‌شوند (fallback_address در WireGuard). hiddify-core برای هر endpoint ‏warp پشت یک detour (هاپ امنیت بیشتر، WARP درون WARP) چرخش را خاموش می‌کند و یک نشانی IPv6 ‏WARP اینجا می‌گذارد، پس فقط نشانی IPv4 پروفایل، که بسته‌های کوچک‌تری لازم دارد و از پروکسی‌های بی IPv6 هم می‌گذرد، و سپس آن نشانی IPv6 را امتحان می‌کند.

وضعیت اتصال. هر ۲۵ ثانیه یک keepalive به peer فرستاده می‌شود، مثل اپ‌های WARP، تا تا وقتی مسیر کار می‌کند دست‌دادن تازه بماند. WARP فقط وقتی متصل حساب می‌شود (بدون «Connecting...») که آخرین دست‌دادن کمتر از ۳ دقیقه پیش بوده باشد؛ از طریق detourی که از کار بیفتد، دوباره «در حال اتصال» نشان داده می‌شود. روی MASQUE، تا وقتی اتصالی به سرور دارد متصل حساب می‌شود.

وضعیت و نوع نمایشی. نوعی که برای endpoint نشان داده می‌شود تونل را نام می‌برد: WARP · WG، WARP · AWG یا WARP · MASQUE؛ سپس، وقتی اسکنر انتخاب کرده باشد، · 🔍 <address:port> یا · 🔍 Not found. وضعیت در نوع نیست؛ برنامه آن را از وضعیتی که هسته می‌فرستد نشان می‌دهد، مثل همهٔ outboundها و endpointها:

وضعیت چه وقت
registering دستگاه در حال ثبت است.
searching اسکنر دنبال endpointی می‌گردد که پاسخ بدهد.
connecting هنوز وصل نشده است.
reconnecting وصل بوده و peer دیگر پاسخ نمی‌دهد.
failed پیکربندی نمی‌تواند کار کند (پروفایلی بدون peer، یا MASQUE در build نیست)؛ آن‌گاه نوع با دلیلش تمام می‌شود، : <error>.
ready ترافیک را عبور می‌دهد.

برای نمونه WARP · MASQUE · 🔍 162.159.198.1:443، یا وقتی شکست خورده، WARP · WG: <error>.

detour گروهی. وقتی detour یک گروه است (selector، URL test یا balancer)، WARP عضوی را که گروه به آن می‌رسد دنبال می‌کند، از میان گروه‌های تودرتو. وگرنه سوکت WireGuard یا AmneziaWG، یا اتصال MASQUE، روی عضوی می‌ماند که گروه ترکش کرده است. اینکه WARP چطور جابه‌جا شود به این بستگی دارد که چه کسی گروه را جابه‌جا کرده:

  • کاربر selector را عوض کرده: WARP فوراً از طریق عضو تازه دوباره وصل می‌شود، و در حالت auto دوباره بین تونل‌ها مسابقه می‌دهد.
  • گروه خودش جابه‌جا شده (URL test، balancer، fallback): WARP حداکثر هر ۳۰ ثانیه یک بار جابه‌جا می‌شود و جابه‌جایی‌های میان این فاصله را یکی می‌کند؛ گروهی که پیش از آن به همان عضو برگردد چیزی را عوض نمی‌کند. وقتی عضوی که گروه ترک کرده در آخرین تستش شکست خورده بود، یا وقتی WARP وصل نیست، فوراً جابه‌جا می‌شود. آن‌گاه کنار تونل فعلی، تونل تازه‌ای از طریق عضو تازه باز می‌کند (در حالت auto، پس از مسابقه‌ای تازه) و فقط وقتی ظرف ۲۵ ثانیه وصل شد ترافیک را به آن می‌برد؛ اگر وصل نشد، تونل قبلی می‌ماند.

خروجی مستقل masque هم همین قواعد را دنبال می‌کند و تونلش را دوباره وصل می‌کند.

نویز. دستگاه پیش از هر شروع handshake، به تعداد count بستهٔ جعلی می‌فرستد و میان آن‌ها به اندازهٔ تصادفی delay صبر می‌کند. در حالت پیش‌فرض هر بسته یک سرآیند کوتاه و size بایت تصادفی است. در حالت quic بستهٔ اول ClientHello برای sni را حمل می‌کند و بقیه فریم PING دارند، همان‌طور که ارسال‌های دوبارهٔ QUIC دارند. نویز برای حالت WireGuard است. با awg، تنظیمات junk خود AmneziaWG به کار می‌رود.

بازیابی handshake. بعد از ۳ شروع handshake بی‌پاسخ، وقتی نشست کارایی وجود ندارد، دستگاه سوکت خود را با پورت مبدأ تازه دوباره باز می‌کند. وقتی از یک handshake دست می‌کشد هم همین کار را می‌کند. این کار حداکثر هر ۹۰ ثانیه یک بار انجام می‌شود. listen_port اگر تنظیم شده باشد حفظ می‌شود.

اسکنر. با scanner.enabled، WARP پیش از اتصال دنبال یک endpoint (نشانی و پورت) می‌گردد که پاسخ بدهد:

  • هر probe یک handshake واقعی WireGuard با کلیدهای پروفایل است که بعد از نویز تنظیم‌شده، از dialer خود endpoint فرستاده می‌شود. detour و بستن به اینترفیس اعمال می‌شوند.
  • endpointها به این ترتیب امتحان می‌شوند: endpointهای شناخته‌شده روی این شبکه، بر اساس امتیاز؛ بعد endpointهایی که روی شبکه‌های دیگر امتیاز خوبی گرفته‌اند؛ بعد نشانی‌های تصادفی در cidrs روی ports؛ و در آخر endpointهای با کمترین امتیاز (‎-10).
  • endpointی که کندتر از max_rtt پاسخ بدهد شکست حساب می‌شود.
  • اسکن وقتی تمام می‌شود که یک endpoint با امتیاز ۳ یا بیشتر پاسخ بدهد، یا ۴ endpoint پاسخ داده باشند. میان پاسخ‌ها، امتیاز بالاتر برنده است و بعد زمان رفت‌وبرگشت کمتر.
  • بازه‌های IPv4 و IPv6 هر دو اسکن می‌شوند، اگر شبکه نشانی عمومی از آن خانواده داشته باشد. وقتی یک خانواده در دسترس نیست، تا پایان اسکن کنار گذاشته می‌شود.
  • اگر هیچ endpointی پاسخ ندهد، WARP از endpoint پروفایل استفاده می‌کند.
  • وقتی server تنظیم شده باشد، اسکنر خاموش است.

امتیازها. هر endpoint روی هر شبکه امتیازی از ‎-10 تا 10 دارد:

  • هر پاسخ ۱ امتیاز اضافه می‌کند، تا سقف ۱۰. پاسخ از امتیاز منفی، امتیاز را ۱ می‌کند.
  • هر شکست ۱ امتیاز کم می‌کند، حداکثر یک بار در ساعت، پس یک قطعی فقط یک امتیاز هزینه دارد.
  • endpointی که در ۷ روز گذشته پاسخ داده، هرگز زیر ‎-5 نمی‌رود.

وقتی cache_file روشن است، امتیازها در فایل کش نگه داشته می‌شوند. شبکه‌ای که ۹۰ روز دیده نشود فراموش می‌شود و هر شبکه ۶۴ endpoint برتر خود را نگه می‌دارد.

نام شبکه. هر شبکه با نوع اینترفیس پیش‌فرض (وای‌فای، شبکهٔ همراه، اترنت)، به‌علاوهٔ کشور و ‎/16 (IPv4) یا ‎/32 (IPv6) نشانی عمومی نام‌گذاری می‌شود. نشانی عمومی از https://www.cloudflare.com/cdn-cgi/trace گرفته می‌شود، یا اگر آن پاسخ ندهد از https://www.speedtest.net/cdn-cgi/trace. درخواست از dialer خود endpoint می‌گذرد. به این ترتیب مجموعه نشانی‌های یک اپراتور، یا ISPی که نشانی شما را عوض می‌کند، یک شبکه می‌ماند. نام وای‌فای به کار نمی‌رود، چون خواندن آن مجوز موقعیت مکانی می‌خواهد. وقتی هیچ‌کدام پاسخ ندهند، نوع اینترفیس به‌تنهایی نام شبکه است.

جایگزینی خودکار (failover). وقتی اسکنر روشن است، WARP endpoint در حال استفاده را بررسی می‌کند:

  • بعد از تغییر شبکه (۲ ثانیه صبر می‌کند و بعد شبکهٔ تازه را نام‌گذاری می‌کند)، و
  • هر دقیقه، وقتی ترافیک بیرون می‌رود ولی ۳ دقیقه است که هیچ handshakeی کامل نشده.

بررسی، endpoint فعلی را دو بار probe می‌کند. اگر پاسخ بدهد، امتیازش بالا می‌رود. اگر نه، امتیازش پایین می‌آید و WARP بدون آن دوباره اسکن می‌کند. یک endpoint درونی تازهٔ WireGuard روی بهترین پاسخ راه می‌اندازد، ترافیک را به آن می‌برد و بعد قبلی را می‌بندد. اگر اسکن چیزی پیدا نکند، WARP همان endpoint فعلی را نگه می‌دارد. اولین handshake هر endpoint هم یک پاسخ حساب می‌شود.

پیکربندی

{
  "experimental": {
    "cache_file": {
      "enabled": true,
      "store_warp_config": true
    }
  },
  "endpoints": [
    {
      "type": "warp",
      "tag": "warp",
      "noise": {
        "fake_packet": {
          "enabled": true,
          "mode": "quic",
          "count": "2-4",
          "delay": "10-30"
        }
      },
      "scanner": {
        "enabled": true
      }
    }
  ],
  "route": {
    "final": "warp"
  }
}

فیلدهای endpoint

فیلد نوع پیش‌فرض معنا
profile object روش گرفتن حساب WARP. پایین‌تر را ببینید.
unique_identifier string tag کلید پروفایل و امتیازهای ذخیره‌شده در فایل کش.
server string peer پروفایل نشانی peer به جای نشانی پروفایل. اسکنر را خاموش می‌کند.
server_port number یکی از پورت‌های پروفایل پورت peer به جای پورت پروفایل.
noise object خاموش بسته‌های جعلی پیش از هر handshake. پایین‌تر را ببینید.
awg object تنظیمات AmneziaWG (jc، jmin، jmax، s1 تا s4، h1 تا h4، i1 تا i5). وقتی هر کدام تنظیم شود، تونل به جای WireGuard از AmneziaWG استفاده می‌کند.
mode string از روی بلوک‌ها wg، awg، masque یا auto (سریع‌ترینی که پاسخ دهد). «طرز کار» را ببینید.
masque object تنظیمات MASQUE. وقتی هر کدام تنظیم شود، یا enabled، تونل به جای WireGuard از MASQUE استفاده می‌کند. پایین‌تر را ببینید. به تگ ساخت with_masque نیاز دارد.
scanner object خاموش اسکنر endpoint و جایگزینی خودکار. پایین‌تر را ببینید.
mtu number پیش‌فرض WireGuard MTU تونل.
mtu_discovery bool true کشف MTU در تونل WireGuard یا AmneziaWG. false همان mtu را نگه می‌دارد.
rotate_ports bool true بدون اسکنر و server_port، وقتی پورت در حال استفاده دست‌دادنی نگیرد، پورت بعدی پروفایل امتحان می‌شود.
fallback_address فهرست IP ندارد نشانی‌های WARP دیگر، که وقتی نشانی در حال استفاده دست‌دادنی نگیرد، به نوبت روی همان پورت امتحان می‌شوند (WireGuard و AmneziaWG).
system bool false استفاده از اینترفیس سیستمی، مانند endpoint wireguard.
name string نام اینترفیس وقتی system روشن است.
listen_port number تصادفی پورت UDP محلی.
udp_timeout duration مهلت NAT برای UDP، مانند endpoint wireguard.
workers number تعداد workerهای WireGuard، مانند endpoint wireguard.
private_key، interface، peers یک پروفایل کامل WARP در قالب کلادفلر. اگر داده شود، حسابی ثبت نمی‌شود.

فیلدهای dial (detour، bind_interface و بقیه) روی تونل، probeهای اسکنر و بررسی نام شبکه اعمال می‌شوند.

profile

فیلد نوع پیش‌فرض معنا
private_key string تصادفی کلید خصوصی WireGuard برای حساب تازه.
license string کلید لایسنس WARP برای اعمال روی حساب تازه (مثلاً WARP+).
id، auth_token string یک دستگاه موجود. با هر دو، به‌جای ثبت حساب تازه، همان دستگاه گرفته می‌شود و private_key لازم است: باید کلید خود آن دستگاه باشد.
detour string مستقیم tag آن outbound که برای رسیدن به API کلادفلر هنگام ثبت به کار می‌رود.
recreate bool false به جای برداشتن دستگاه ذخیره‌شده، در هر شروع دستگاهی تازه ثبت کن.

masque

یک object خالی masque هنگام خواندن کانفیگ حذف می‌شود، پس برای استفاده از MASQUE با همهٔ پیش‌فرض‌ها "masque": {"enabled": true} بنویسید.

فیلد نوع پیش‌فرض معنا
enabled bool false استفاده از MASQUE با همهٔ پیش‌فرض‌ها.
vhttp string auto h3، h2 یا auto (HTTP/3، با بازگشت به HTTP/2).
server_name string consumer-masque.cloudflareclient.com نام سرور TLS.
use_ipv6 bool false استفاده از endpoint ‏IPv6.
tls object insecure، cipher_suites، curve_preferences، fragment، fragment_fallback_delay، record_fragment، kernel_tx، kernel_rx، ech. ech شامل enabled، config و query_server_name است: در این حالت ClientHello فهرست پیکربندی رمزنگاری‌شده را همراه دارد. WARP خودش هیچ پیکربندی ECH منتشر نمی‌کند و پیکربندی عمومی را رد می‌کند، پس در صورت رد شدن، دست‌دادن به حالت ساده برمی‌گردد که کلید پین‌شدهٔ همتا همچنان آن را بررسی می‌کند.
udp_keepalive_period duration 30s keepalive در QUIC.
udp_initial_packet_size number اندازهٔ اولین بستهٔ QUIC.
reconnect_delay duration فاصلهٔ میان تلاش‌های اتصال.
device object دستگاهی که جای دیگری ثبت شده و پیش از دستگاه‌های ذخیره‌شده و ثبت به کار می‌رود: فیلدهای device در outbound ‏masque. دستگاهی که نتواند کار کند (کلیدی که خوانده نشود، بی‌نشانی) پیکربندی را رد می‌کند. برای دستگاهی که کلادفلر رد کند، «دستگاه‌ها» را در بالا ببینید.

فیلدهای mtu (روی MASQUE از ۱۲۸۰ تا ۹۰۰۰)، udp_timeout، scanner، server، server_port و فیلدهای dialer خود endpoint هم اعمال می‌شوند. noise، listen_port، workers، system و name تنظیمات WireGuard هستند و به کار نمی‌روند.

noise.fake_packet

بازه‌ها یک عدد (5)، یک رشته ("5-10") یا یک object ({"from": 5, "to": 10}) می‌پذیرند.

فیلد نوع پیش‌فرض معنا
enabled bool false فرستادن بسته‌های جعلی.
count range تعداد بسته‌ها پیش از هر handshake. اگر ۰ باشد چیزی فرستاده نمی‌شود.
delay range فاصلهٔ میان بسته‌ها، به میلی‌ثانیه.
mode string "" quic بسته‌های Initial واقعی QUIC می‌فرستد. raw به اندازهٔ size بایت تصادفی بدون سرآیند می‌فرستد، مثل noise تصادفی Xray و junk در AmneziaWG. خالی بسته‌های تصادفی پس از یک سرآیند کوتاه می‌فرستد.
packets list of strings اول، به‌ترتیب و همان‌طور که هستند فرستاده می‌شوند: قالب‌هایی با نحو i1 تا i5 در AmneziaWG (<b 0xHEX> بایت‌ها، <r N> بایت تصادفی، <rc N> حرف و رقم تصادفی، <rd N> رقم تصادفی، <t> زمان Unix، <qi SNI> یک Initial در QUIC). قالبی که ساخته نشود پیکربندی را نامعتبر می‌کند.
sni string www.google.com نام سرور در ClientHello در QUIC. فقط برای حالت quic.
size range تعداد بایت‌های تصادفی هر بسته. در حالت پیش‌فرض لازم است. در حالت quic به کار نمی‌رود.
header bytes (base64) بایت‌هایی که بایت اول هر بسته از میان آن‌ها انتخاب می‌شود. در حالت quic به کار نمی‌رود.
no_modify bool false بسته‌ها را همان‌طور که هستند بفرست، بدون تغییراتی که اتصال WireGuard روی بسته‌هایش می‌دهد. حالت quic همیشه آن‌ها را بی‌تغییر می‌فرستد.

scanner

فیلد نوع پیش‌فرض معنا
enabled bool false اسکن برای endpointی که پاسخ می‌دهد، و جایگزینی خودکار.
ports فهرست اعداد پورت‌های پروفایل، یا فهرست داخلی پورت‌های WARP پورت‌هایی که روی نشانی‌های تصادفی امتحان می‌شوند.
cidrs فهرست prefix بازه‌های WARP کلادفلر بازه‌هایی که نشانی‌های تصادفی از آن‌ها انتخاب می‌شوند.
max_rtt duration 1s کندترین handshake پذیرفتنی.
timeout duration 2s مدت انتظار هر probe برای پاسخ.
count number 64 حداکثر endpointهای امتحان‌شده در یک اسکن. endpointهای شناخته‌شده همیشه امتحان می‌شوند.
concurrency number 8 تعداد probeهای هم‌زمان.
search_noise bool false دنبال noiseی هم می‌گردد که عبور کند. پایین‌تر را ببینید.
noise_presets list of strings همهٔ پیش‌تنظیم‌ها پیش‌تنظیم‌هایی که search_noise به‌ترتیب امتحان می‌کند.

جست‌وجوی noise. با search_noise، وقتی هیچ endpointی با noise پیکربندی‌شده پاسخ ندهد، اسکن با هر پیش‌تنظیم noise دوباره انجام می‌شود، هر کدام روی حداکثر ۱۶ endpoint، و اولین پیش‌تنظیمی که پاسخ بگیرد به کار می‌رود: به‌عنوان noise در WireGuard، یا با awg به‌عنوان بسته‌های junk و ویژه (jc، jmin، jmax، i1 تا i5؛ تنظیم‌های دیگر awg حفظ می‌شوند). این پیش‌تنظیم برای آن شبکه در فایل cache به خاطر سپرده می‌شود و دفعهٔ بعد آن‌جا اول امتحان می‌شود. پیش‌تنظیم‌ها از پیکربندی‌های WARP که کار می‌کنند گرفته شده‌اند:

پیش‌تنظیم پیش از دست‌دادن چه می‌فرستد
xray-random ۵ بستهٔ تصادفی ۵ تا ۱۰ بایتی با فاصلهٔ ۲ تا ۵ میلی‌ثانیه، مثل noise در WARP برای Xray
quic ۲ تا ۴ بستهٔ Initial در QUIC برای www.google.com
dns-google پرس‌وجوهای DNS برای google.com (A، AAAA، HTTPS)، سپس ۶ بستهٔ junk ۵۶ تا ۱۶۰ بایتی
dns-cloudflare پرس‌وجوهای DNS برای cloudflare.com (A، AAAA)، سپس ۹ بستهٔ junk ۸۱ تا ۲۲۴ بایتی
dns-www-cloudflare پرس‌وجوهای DNS برای www.cloudflare.com (A، AAAA)، سپس ۶ بستهٔ junk ۴۳ تا ۱۰۹ بایتی
quic-mimic یک Initial در QUIC و یک بسته با سرآیند کوتاه، سپس ۴ بستهٔ junk ۶۰ تا ۱۹۹ بایتی
sip یک INVITE در SIP و پاسخ 100 Trying آن، سپس ۱۰ بستهٔ junk ۴۲ تا ۲۲۴ بایتی
stun ۲ درخواست Binding در STUN، سپس ۴ بستهٔ junk ۴۰ تا ۱۲۰ بایتی

probe همان چیزی را می‌فرستد که دستگاه می‌فرستد: noise پیکربندی‌شده، یا با awg بسته‌های junk و ویژهٔ آن.

بازه‌های پیش‌فرض: 162.159.192.0/24، 162.159.193.0/24، 162.159.195.0/24، 188.114.96.0/24 تا 188.114.99.0/24، 2606:4700:d0::/64 و 2606:4700:d1::/64.

نکته‌ها:

  • این endpoint به تگ ساخت with_wireguard نیاز دارد و awg به with_awg. هر دو در تگ‌های پیش‌فرض هستند.
  • پروفایل و امتیازها در فایل کش نگه داشته می‌شوند. بدون cache_file، هر اجرا یک حساب تازه ثبت می‌کند و اسکنر بدون سابقه شروع می‌کند.
  • تونل در پس‌زمینه راه می‌افتد. اتصال‌ها منتظر می‌مانند تا اولین راه‌اندازی تمام شود. اگر شکست خورده باشد، با خطای «endpoint not initialized» شکست می‌خورند.
  • اگر ثبت حساب یا اولین راه‌اندازی شکست بخورد، خطا در لاگ ثبت می‌شود و تا وقتی موفق شود یا endpoint بسته شود دوباره امتحان می‌شود.

همچنین ببینید


اخرین بروزرسانی: 26 فوریهٔ 2026

نظرات