GooseRelay
GooseRelay ترافیک شما را از طریق یک وباپ Google Apps Script به سرور خودتان میفرستد. از دید
شبکه، دستگاه شما فقط با یک نشانی گوگل و با نام www.google.com روی HTTPS حرف میزند. این یک
outbound است: "type": "gooserelay" در فهرست outbounds. این خروجی سمت کلاینت پروژهٔ
GooseRelayVPN است.
چرا از آن استفاده کنیم
- در شبکههایی کار میکند که بیشتر سرورها را میبندند ولی مجبورند گوگل را باز بگذارند.
- هر اتصال TCP را میبرد، نه فقط صفحههای وب، چون یک سرور واقعی از آن شما اتصالها را باز میکند.
دو چیز را باید از قبل آماده کنید: یک سرور کوچک (VPS) که سرور خروجی GooseRelayVPN روی آن اجرا شود، و یک یا چند استقرار (deployment) از اسکریپت فرستندهٔ GooseRelayVPN در Google Apps Script. پروژهٔ GooseRelayVPN هر دو را توضیح میدهد. هر استقرار سقف روزانهای برای تعداد درخواستهایی دارد که گوگل برایش اجرا میکند، پس برای مصرف زیاد چند استقرار لازم است.
چطور از فیلترینگ عبور میکند
خروجی به یک نشانی گوگل وصل میشود و www.google.com (یا نامهای sni) را بهعنوان نام سرور
TLS به کار میبرد. درون همان اتصال TLS، درخواستها به script.google.com میروند. به این کار
domain fronting میگویند: فیلتر اتصالی به گوگل میبیند و گوگل درخواست را به Apps Script شما
میرساند. اسکریپت دادهها را بدون خواندن به سرور شما میفرستد.
همهچیز با AES-256-GCM و کلید tunnel_key رمز میشود که فقط دستگاه شما و سرور شما آن را
میدانند. کلید هرگز به دست گوگل نمیرسد.
وقتی نشانی گوگل در google_host مسدود باشد، یا گوگل دیگر این درخواستها را مسیریابی نکند،
کمکی نمیکند.
چطور کار میکند
- پس از شروع، خروجی همهٔ استقرارهای
script_keysرا همزمان بررسی میکند. بررسی تأیید میکند که استقرار عمومی است و فرستنده را اجرا میکند، سپس یک کاوش رمزشده میفرستد تا ببیند سرور شما در دسترس است و کلید درست است. خروجی با قبول شدن یک استقرار آماده میشود، و اگر همه رد شوند ناموفق است. پیامهای لاگ میگویند مشکل چیست، مثلاً شناسهٔ استقرار اشتباه یا کلید نادرست. - هر اتصال یک نشست میشود. دادههایش در دستههای رمزشده به صورت درخواستهای HTTPS فرستاده میشوند و پاسخها با long polling برمیگردند. سرور شما اتصال واقعی به مقصد را باز میکند.
- درخواستها میان استقرارهای
script_keysو میان نامهایsniپخش میشوند. هر نام اتصالهای TLS خودش را دارد.
پیکربندی
{
"type": "gooserelay",
"tag": "goose",
"script_keys": ["<Apps Script deployment ID>"],
"tunnel_key": "<64 hex characters, same as on the server>"
}
| فیلد | نوع | پیشفرض | معنی |
|---|---|---|---|
script_keys |
list of strings | الزامی | شناسههای استقرار Apps Script. فقط شناسه را بگذارید، نه نشانی کامل را. |
tunnel_key |
string | الزامی | کلید AES-256 به صورت ۶۴ نویسهٔ hex. باید با سرور یکی باشد. |
google_host |
string | "216.239.38.120:443" |
نشانی و درگاه گوگل برای اتصال. نشانیهای دیگر گوگل هم کار میکنند. |
sni |
list of strings | ["www.google.com"] |
نامهای سرور TLS. چند نام بار را پخش میکند. |
handshake_timeout |
duration | 10s |
بیشترین زمان بررسی هنگام شروع. |
debug_timing |
bool | false |
جزئیات زمانبندی رله را در لاگ بنویس. |
udp_over_tcp |
object | تنظیم UDP over TCP از sing-box. این خروجی از مسیریاب فقط TCP میپذیرد، پس ترافیک UDP مسیریابیشده از آن استفاده نمیکند. |
این خروجی اتصالهایش به گوگل را خودش میسازد، پس فیلدهای اتصال مثل detour برای آنها به
کار نمیروند.