یک VPN مبتنی بر SOCKS5 که ترافیک خام TCP را از طریق یک وب اپ Google Apps Script به سرور خروجی VPS کوچک خودتان تونل میکند. هر چیزی که در مسیر شبکه قرار دارد فقط TLS به یک IP گوگل با SNI=www.google.com میبیند. همه چیز در مسیر بهصورت سرتاسری با AES-256-GCM رمز میشود — گوگل هرگز متن خام را نمیبیند و کلید را نگه نمیدارد.
توضیح ساده: مرورگر/اپ شما از طریق SOCKS5 به این ابزار روی کامپیوترتان وصل میشود. ابزار هر بایت TCP را در فریمهای AES-GCM میپیچد و از طریق یک ارتباط HTTPS روبهگوگل به وب اپ Apps Script شما میفرستد. Apps Script آن بایتها را بدون تغییر به VPS شما فوروارد میکند، VPS رمزگشایی کرده و اتصال واقعی را باز میکند. برای فایروال/فیلتر انگار فقط دارید با گوگل حرف میزنید.
⚠️ برای سرور خروجی به یک VPS کوچک نیاز دارید. برخلاف پراکسیهای صرفاً Apps Script، این پروژه TCP خام را تونل میکند — هر چیزی که SOCKS5 حمل میکند — پس یک
net.Dialواقعی باید جایی انجام شود. یک VPS ارزان حدود ۴ دلار در ماه کافی است. در عوض میتوانید SSH، IMAP و هر پروتکل دلخواه را تونل کنید — نه فقط HTTP.
اگر این پروژه را دوست دارید، لطفاً با ستاره دادن در GitHub (⭐) از آن حمایت کنید. این کار باعث دیده شدن پروژه میشود.
اگر تمایل دارید، میتوانید به صورت مالی هم حمایت کنید:
TSxg2WAXYnkoR2UiUTzCxbmqNARAt91aqB0xe7b48d8fd5fbbb4e3fa9a06723a62a88585139eaUQDBzJqzJ5e7uZFPrmarTRSGGbD1UoFK2q5_jWh4D2nnNdUBtunnel_key را با کسی به اشتراک نگذارید. هر کسی این کلید را داشته باشد میتواند مثل شما از تونل/VPS استفاده کند.MasterHttpRelayVPN مخصوص معماری همان پروژه است و اینجا لازم نیست.GooseRelayVPN فقط برای اهداف آموزشی، تست و پژوهش ارائه شده است.
Browser/App
-> SOCKS5 (127.0.0.1:1080)
-> AES-256-GCM raw-TCP frames
-> HTTPS to a Google edge IP (SNI=www.google.com, Host=script.google.com)
-> Apps Script doPost() (dumb forwarder, never sees plaintext)
-> Your VPS :8443/tunnel (decrypts, demuxes by session_id, dials target)
<- Same path in reverse via long-polling
اپلیکیشن شما بایتهای TCP را از طریق شنونده SOCKS5 روی کامپیوترتان به این ابزار میفرستد. کلاینت هر تکه را با AES-256-GCM رمز میکند و batchها را روی یک ارتباط HTTPS با domain fronting برای وب اپ Apps Script شما POST میکند. Apps Script یک اسکریپت ~۳۰ خطی است که بدنه را بدون تغییر به VPS شما فوروارد میکند — هرگز رمزگشایی نمیکند و کلید AES هرگز به گوگل نمیرسد. VPS رمزگشایی میکند، مقصد واقعی را دایل میکند و بایتها را در همان مسیر برمیگرداند. فیلتر فقط TLS به گوگل میبیند.
به یک VPS لینوکسی با IP عمومی نیاز دارید. هر ارائهدهندهای کار میکند.
شما به دو برنامه جداگانه نیاز دارید:
- goose-client — روی کامپیوتر خودتان اجرا میشود. این همان چیزی است که هر روز اجرا میکنید.
- goose-server — روی VPS اجرا میشود. یکبار راهاندازی میکنید و همانجا میماند.
🚀 میانبر برای VPS لینوکسی: اگر سرور خروجی شما لینوکس است و دسترسی root دارید، اسکریپت نصب زیر مراحل ۲ تا ۷ مربوط به سرور (دانلود، تنظیمات، تولید tunnel_key، یونیت systemd، فایروال) را در یک دستور انجام میدهد. کلاینت و Apps Script (مراحل ۵ و ۸ به بعد) را باید خودتان روی کامپیوترتان انجام دهید.
bash bash <(curl -Ls https://raw.githubusercontent.com/Kianmhz/GooseRelayVPN/main/scripts/goose-server.sh)اسکریپت قبل از نصب، هش tarball را با
SHA256SUMS.txtمنتشرشده در ریلیز مقایسه میکند، یکtunnel_keyتازه میسازد که باید در کانفیگ کلاینت قرار دهید، و در اجرای بعدی منویinstall/update/uninstallو reconfigure را نشان میدهد.
گزینه A — دانلود نسخه آماده (پیشنهادی):
GooseRelayVPN-client-vX.Y.Z-windows-amd64.zipGooseRelayVPN-client-vX.Y.Z-darwin-amd64.tar.gzGooseRelayVPN-client-vX.Y.Z-darwin-arm64.tar.gzGooseRelayVPN-client-vX.Y.Z-linux-amd64.tar.gzGooseRelayVPN-client-vX.Y.Z-android-arm64.tar.gzbash
wget https://github.com/kianmhz/GooseRelayVPN/releases/latest/download/GooseRelayVPN-server-vX.Y.Z-linux-amd64.tar.gz
tar -xzf GooseRelayVPN-server-vX.Y.Z-linux-amd64.tar.gzGooseRelayVPN-server-vX.Y.Z-windows-amd64.zip را از صفحه Releases دانلود کنید و آن را در پوشهای مثل C:\goose-relay\ اکسترکت کنید. برای راهاندازی سرویس، مرحله ۸ (ویندوز) را ببینید.(عدد vX.Y.Z را با آخرین نسخه در صفحه Releases جایگزین کنید.)
💡 اگر صفحه Releases باز نمیشود، میتوانید مستقیماً با لینکهای زیر دانلود کنید (
vX.Y.Zرا با آخرین نسخه جایگزین کنید): - کلاینت — ویندوز:https://github.com/Kianmhz/GooseRelayVPN/releases/download/vX.Y.Z/GooseRelayVPN-client-vX.Y.Z-windows-amd64.zip- کلاینت — macOS (Apple Silicon):https://github.com/Kianmhz/GooseRelayVPN/releases/download/vX.Y.Z/GooseRelayVPN-client-vX.Y.Z-darwin-arm64.tar.gz- کلاینت — macOS (Intel):https://github.com/Kianmhz/GooseRelayVPN/releases/download/vX.Y.Z/GooseRelayVPN-client-vX.Y.Z-darwin-amd64.tar.gz- کلاینت — لینوکس:https://github.com/Kianmhz/GooseRelayVPN/releases/download/vX.Y.Z/GooseRelayVPN-client-vX.Y.Z-linux-amd64.tar.gz- کلاینت — اندروید/Termux:https://github.com/Kianmhz/GooseRelayVPN/releases/download/vX.Y.Z/GooseRelayVPN-client-vX.Y.Z-android-arm64.tar.gz- سرور — لینوکس:https://github.com/Kianmhz/GooseRelayVPN/releases/download/vX.Y.Z/GooseRelayVPN-server-vX.Y.Z-linux-amd64.tar.gz
گزینه B — ساخت از سورس (Go 1.22+) — توصیه نمیشود، ممکن است ناپایدار باشد:
git clone https://github.com/kianmhz/GooseRelayVPN.git
cd GooseRelayVPN
go build -o goose-client ./cmd/client
go build -o goose-server ./cmd/server
گزینه C — اجرای فقط سرور با Docker (GHCR):
اگر روی VPS استفاده از کانتینر را ترجیح میدهید، میتوانید goose-server را مستقیم از GHCR اجرا کنید:
docker pull ghcr.io/kianmhz/gooserelayvpn-server:latest
این دستور را یکبار اجرا کنید:
openssl rand -hex 32
رشته ۶۴ کاراکتری خروجی را کپی کنید. همان مقدار را هم در کانفیگ کلاینت و هم سرور میگذارید. محرمانه نگه دارید — هر کسی این کلید را داشته باشد میتواند از تونل شما استفاده کند.
فایلهای نمونه را کپی کنید:
cp client_config.example.json client_config.json
cp server_config.example.json server_config.json
هر دو فایل را باز کنید و کلید را در فیلد tunnel_key بگذارید. فعلاً script_keys را خالی بگذارید.
client_config.json:
{
"socks_host": "127.0.0.1",
"socks_port": 1080,
"google_host": "216.239.38.120",
"sni": "www.google.com",
"script_keys": ["PASTE_DEPLOYMENT_ID"],
"tunnel_key": "PASTE_OUTPUT_OF_GEN_KEY"
}
server_config.json:
{
"server_host": "0.0.0.0",
"server_port": 8443,
"tunnel_key": "SAME_VALUE_AS_CLIENT"
}
این بخش رایگانِ سمت گوگل است که ترافیک شما را پنهان میکند.
apps_script/Code.gs را جایگزین کنید.javascript
const VPS_URL = 'http://YOUR.VPS.IP:8443/tunnel';script_keys قرار دهید.script_keys داخل client_config.json هم وارد کنید.⚠️ هر بار که
Code.gsرا ویرایش میکنید باید یک deployment جدید بسازید (Deploy → New deployment) وscript_keysرا بهروزرسانی کنید. صرفاً ذخیره کردن کد کافی نیست.
نسخهٔ جدید Code.gs در doGet متادیتای نسخه/پروتکل را هم برمیگرداند تا بررسی pre-flight بتواند ناسازگاری نسخه را تشخیص دهد. اگر deployment قدیمی باشد، باید یکبار دوباره deploy کنید تا هشدار ناسازگاری نگیرید.
سرور باید از اینترنت روی پورت 8443 قابل دسترسی باشد. روی VPS اجرا کنید:
sudo ufw allow 8443/tcp
سپس از کامپیوتر خودتان تست کنید (IP واقعی VPS را جایگزین کنید):
curl http://YOUR.VPS.IP:8443/healthz
باید یک JSON مثل { "ok": true, "version": "vX.Y.Z", "protocol": 1 } با HTTP 200 بگیرید. اگر curl تایماوت شد یا خطا داد، فایروال ارائهدهنده ابری را هم بررسی کنید (در AWS/Hetzner به نام "Security Groups"، در DigitalOcean/Vultr به نام "Firewall Rules") و یک قانون ورودی برای TCP پورت 8443 اضافه کنید.
روی VPS این دستور را اجرا کنید:
لینوکس:
./goose-server -config server_config.json
ویندوز سرور:
.\goose-server.exe -config server_config.json
باید آدرس listening و آدرسهای healthz/tunnel را ببینید. این ترمینال را باز بگذارید، یا مرحله ۸ را انجام دهید تا بعد از ریبوت هم بالا بماند.
Docker (ایمیج GHCR):
⚠️ مهم: کانتینر فایل
server_config.jsonرا بهصورت خودکار نمیسازد. باید قبل از اجرا،server_config.jsonرا خودتان بسازید و باtunnel_keyخودتان پر کنید.
docker run -d \
--name goose-server \
--restart unless-stopped \
-p 8443:8443 \
-v $(pwd)/server_config.json:/app/server_config.json:ro \
ghcr.io/kianmhz/gooserelayvpn-server:latest
Docker Compose (پیشنهادی برای راهاندازی کانتینری):
cp server_config.example.json server_config.json
nano server_config.json
docker compose up -d
فایل docker-compose.yml داخل مخزن آماده است. بهصورت پیشفرض از ghcr.io/kianmhz/gooserelayvpn-server:latest استفاده میکند و برای پین کردن نسخه میتوانید override کنید:
GOOSE_SERVER_IMAGE=ghcr.io/kianmhz/gooserelayvpn-server:vX.Y.Z docker compose up -d
تست از روی کامپیوتر خودتان:
curl http://YOUR.VPS.IP:8443/healthz
اگر میخواهید سرور بعد از ریبوت VPS خودکار بالا بیاید، یک سرویس systemd بسازید.
روی VPS اجرا کنید:
sudo nano /etc/systemd/system/goose-relay.service
این را قرار دهید (اگر مسیر باینری شما فرق دارد، اصلاح کنید):
[Unit]
Description=GooseRelayVPN exit server
After=network.target
[Service]
Type=simple
WorkingDirectory=/root
ExecStart=/root/goose-server -config /root/server_config.json
Restart=always
RestartSec=3
StandardOutput=journal
StandardError=journal
[Install]
WantedBy=multi-user.target
بعد اجرا کنید:
sudo systemctl daemon-reload
sudo systemctl enable goose-relay
sudo systemctl start goose-relay
sudo systemctl status goose-relay --no-pager
اگر VPS شما ویندوز سرور دارد، به جای systemd از NSSM (Non-Sucking Service Manager) استفاده کنید تا goose-server را به عنوان یک سرویس ویندوز ثبت کنید. فایل goose-server.exe یک باینری ساده Go است و نیازی به نصب ندارد.
۱. باز کردن پورت ۸۴۴۳ در فایروال ویندوز (با دسترسی Administrator در Command Prompt):
netsh advfirewall firewall add rule name="GooseRelayVPN" protocol=TCP dir=in localport=8443 action=allow
همچنین یک قانون ورودی TCP/8443 در پنل فایروال ارائهدهنده ابری خود اضافه کنید (Security Groups / Firewall Rules).
۲. دانلود NSSM از آدرس https://nssm.cc/download، آن را اکسترکت کنید و مسیر nssm.exe را یادداشت کنید (مثلاً C:\nssm\win64\nssm.exe).
۳. ثبت و شروع سرویس (با دسترسی Administrator):
C:\nssm\win64\nssm.exe install GooseRelayVPN "C:\goose-relay\goose-server.exe"
C:\nssm\win64\nssm.exe set GooseRelayVPN AppParameters "-config C:\goose-relay\server_config.json"
C:\nssm\win64\nssm.exe set GooseRelayVPN AppDirectory "C:\goose-relay"
C:\nssm\win64\nssm.exe set GooseRelayVPN Start SERVICE_AUTO_START
C:\nssm\win64\nssm.exe start GooseRelayVPN
۴. بررسی اجرا بودن سرویس:
C:\nssm\win64\nssm.exe status GooseRelayVPN
curl http://YOUR.VPS.IP:8443/healthz
برای توقف یا حذف سرویس:
C:\nssm\win64\nssm.exe stop GooseRelayVPN
C:\nssm\win64\nssm.exe remove GooseRelayVPN confirm
```bash ./goose-client -config client_config.js
$ claude mcp add GooseRelayVPN \
-- python -m otcore.mcp_server <graph>