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 روی یک دستگاه یکدیگر را از کلادفلر بیرون میاندازند. به این ترتیب برمیدارد:
- پروفایلی که در خود پیکربندی نوشته شده (
private_key،interface،peers)، برای WireGuard؛ برای MASQUE، masque.device، دستگاهی که جای دیگری ثبت شده (دستگاهِ لینکmasque://). وقتی کلادفلر این دستگاه را رد کند (کلیدش هرگز ثبت نشده، یا دستگاه حذف شده)، WARP این را در فایل کش به خاطر میسپارد، با ۲ و ۳ ادامه میدهد، و تا وقتی پیکربندی همان دستگاه را دارد دوباره امتحانش نمیکند. - دستگاهی از همان نوع از مخزن که کنار گذاشته نشده و endpoint دیگری آن را اجاره نکرده: همانی که این endpoint (با
unique_identifierیا tag) قبلاً به کار برده، وگرنه هر دستگاه آزاد. نه باprofile.recreate(آنوقت هر شروع یک دستگاه تازه ثبت میکند). endpointی که بسته شود دستگاههایش را پس میدهد. - دستگاهی تازه که با 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 بسته شود دوباره امتحان میشود.