discover · compare · collections · requirements · contribute · feed · watching · stats · help with your tokens
dreamboxone/gozarbin · source
Snapshot 0 · 2026-11-04T12:47:28Z · Rust · AGPL-3.0
Content fingerprint
6a563c4726d43ba827ab34a899982057f502678cf05646fbe6c44f3a33a5f6c9GitHub description at capture
A rust core proxy client for openwrt routers and more
README at capture
<div dir="rtl"> # گذربین — پراکسی و تفکیک ترافیک برای OpenWrt > **گذربین نسخهای تغییریافته از [Aether](https://github.com/CluvexStudio/Aether) است.** > هستهٔ تونل کار CluvexStudio است و تحت AGPL-3.0 منتشر شده. > این مخزن آن را در سال ۲۰۲۶ تغییر داده و برایش بستهبندی OpenWrt، سرویس، قواعد فایروال، > هستهٔ اختصاصی sing-box و یک رابط کاربری فارسی اضافه کرده و نامش را گذربین گذاشته است. > نام Aether علامت تجاری CluvexStudio است و برای نسخهٔ تغییریافته مجوز ندارد؛ نام متفاوت > به همین دلیل است. فهرست دقیق اینکه کدام بخش کار چه کسی است در [NOTICE](NOTICE) آمده. راهنمای کامل نصب و استفاده. اگر فقط میخواهید شروع کنید، [نصب سریع](#نصب-سریع) کافی است؛ باقی متن توضیح تکتک امکانات است. هسته با Aether `2.4.0` در کامیت بالادست `d58f9d5` همگام شده است؛ شمارهٔ نسخهٔ بستههای گذربین مستقل میماند. این ارتقا اصلاحات ثبت WARP، شنوندههای پایدار پراکسی، اتصال Psiphon از پشت پراکسی و بررسی گواهی MASQUE برای Zero Trust را دارد. سرویس OpenWrt گزینهٔ `enroll_address` ذخیرهشده را با آرگومان جدید `--api-address` به هسته میفرستد؛ تنظیمات موجود حفظ میشوند. رابط فارسی برای موبایل و تم Material تنظیم شده است. پیامهای عملیات زیر دکمهها نمایش داده میشوند. جزئیات [بهروزرسانی داخلی تفاضلی](Docs/internal-update.md) و [تطبیق کامل تنظیمات اتر](Docs/aether-compatibility.md) نیز در دسترس است. از نسخهٔ `5.7.29` شمارهٔ انتشار از تاریخ شمسی تهران گرفته میشود: `(سال − ۱۴۰۰).ماه.روز`؛ برای نمونه ۱۴۰۵/۷/۲۹ برابر `5.7.29` است. اجرای `bash scripts/set-release-version.sh` بدون آرگومان، نسخهٔ روز را در سورس بستهها تنظیم میکند؛ شماره هسته اتر مستقل میماند. برای ویرایش مجدد در همان روز، پسوند `rN` اضافه میشود؛ برای نمونه `bash scripts/set-release-version.sh 5.7.29r2` ویرایش دوم را آماده میکند. برچسب انتشار با پیشوند `v` ساخته میشود. سربرگ «بهروزرسانی» نسخهٔ فعلی، آخرین انتشارهای GitHub شامل Pre-release و مراحل فعال دریافت و نصب را نمایش میدهد. در ویرایش `5.7.29r2`، دکمهٔ روز و شب در سربرگ قرار دارد و انتخاب آن در مرورگر ذخیره میشود. کارت یکپارچهٔ مصرف ترافیک بازههای ۱ روز، ۷ روز و ۳۰ روز را نشان میدهد؛ تاریخچه مستقل از مرورگر روی روتر ثبت میشود. دادهٔ روزهای قبل از فعالشدن این قابلیت موجود نیست. برای کاهش نوشتن روی فلش، تاریخچه هر ۱۵ دقیقه و پیش از بازسازی شمارندهها ذخیره میشود؛ قطع برق ناگهانی ممکن است نمونههای پس از آخرین ذخیره را از دست بدهد. --- ## گذربین چه کار میکند؟ گذربین یک کلاینت عبور از فیلترینگ است که روی خود روتر اجرا میشود. یک تونل رمزنگاریشده به بیرون باز میکند و آن را به سه شکل در اختیار شما میگذارد: | حالت | چه اتفاقی میافتد | مناسب چه کسی | | --- | --- | --- | | **پراکسی شفاف (TProxy)** | تمام ترافیک دستگاههای شبکه بدون هیچ تنظیمی از تونل رد میشود | حالت پیشفرض و پیشنهادی | | **کارت شبکهٔ مجازی (TUN)** | یک اینترفیس مجازی ساخته میشود و مسیریابی از آن عبور میکند | روترهایی که TProxy در آنها مشکل دارد | | **فقط SOCKS5** | تنها یک پراکسی محلی باز میشود و ترافیک شبکه دستنخورده میماند | وقتی میخواهید فقط بعضی برنامهها از تونل رد شوند | بخش SOCKS5 داخل خود هستهٔ تونل پیادهسازی شده است. حالت شفاف و حالت TUN با کمک **sing-box** انجام میشود؛ گذربین هستهٔ sing-box خودش را دارد و به هستهٔ Passwall2 دست نمیزند — توضیحش [پایینتر](#هستهٔ-sing-box) آمده. تونل پیشفرض **WARP از راه Psiphon** است: Psiphon راه خروج را پیدا میکند و WARP (MASQUE) داخل آن وصل میشود، چون روی شبکههای فیلترشده دستدادن مستقیم MASQUE اغلب قطع میشود. حالتهای دیگر هم هست (MASQUE مستقیم، WireGuard و ترکیبهایشان). **Psiphon** داخل همین بسته است — بهتنهایی یا زنجیرشده با WARP از هر دو طرف — و **کشور خروجی** را خودتان انتخاب میکنید. توضیحش در بخش [Psiphon و انتخاب کشور](#psiphon-و-انتخاب-کشور) آمده. --- ## پیشنیازها هنگام نصب بسته، همهٔ موارد زیر بهطور خودکار توسط `apk` یا `opkg` نصب میشوند. نیازی نیست چیزی را دستی نصب کنید: | بسته | برای چه لازم است | | --- | --- | | `kmod-nft-tproxy` | ماژول کرنل برای هدایت ترافیک به تونل | | `kmod-nft-socket` | ماژول کرنل مکمل TProxy | | `kmod-tun` | ماژول کرنل برای حالت TUN | | `nftables` | نوشتن قواعد فایروال | | `ip-full` | قواعد مسیریابی بر اساس fwmark | | `ca-bundle` و `libustream-mbedtls` | دانلود امن فهرستها روی HTTPS | | `curl`، `jsonfilter`، `ucode` و `ucode-mod-fs` | بررسی انتشار، دریافت تفاضلی و بازسازی بستهٔ بهروزرسانی | اگر روتر بعداً یکی از این بستهها را از دست بدهد (مثلاً بعد از بازیابی نسخهٔ پشتیبان)، صفحهٔ تنظیمات آن را در کارت «پیشنیازها» نشان میدهد و دکمهٔ **«نصب پیشنیازهای جا افتاده»** آن را نصب میکند. همین کار از خط فرمان: </div> ```sh gozarbinctl deps # گزارش وضعیت gozarbinctl install-deps # نصب موارد جا افتاده ``` <div dir="rtl"> سرویس هم پیش از شروع حالت شفاف همین بررسی را انجام میدهد و اگر چیزی کم باشد، بهجای خرابی خاموش، پیام آن را در `logread` مینویسد. --- ## هستهٔ sing-box حالت شفاف و حالت TUN به sing-box نیاز دارند، ولی **گذربین هستهٔ خودش را دارد** و در `/usr/libexec/gozarbin/sing-box` نگه میدارد. دلیلش ساده است: روی روترهایی که Passwall2 نصب است، بستهٔ `sing-box` معمولاً از فید خود Passwall میآید و **همان موتوری است که Passwall2 در همین لحظه رویش کار میکند**. گذربین نه از آن استفاده میکند و نه بهروزرسانیاش میکند، تا چیزی که کار میکند از زیر پای شما کشیده نشود. قاعدهاش این است: | روی روتر چه هست | گذربین چه میکند | | --- | --- | | هستهٔ اختصاصی گذربین نصب است | از همان استفاده میکند | | `sing-box` از فید Passwall و خود Passwall یا Passwall2 هم نصب است | استفاده نمیکند؛ هستهٔ خودش را میخواهد | | `sing-box` از فید Passwall ولی خود Passwall نصب نیست | از آن استفاده میکند (مال کسی نیست) | | `sing-box` از فید معمولی OpenWrt | از آن استفاده میکند (مال کسی نیست) | | هیچکدام | حالت شفاف بالا نمیآید و دکمهٔ «نصب هسته» در صفحه ظاهر میشود | نصب یا بهروزرسانی هسته از صفحهٔ تنظیمات با یک دکمه انجام میشود، یا از خط فرمان: </div> ```sh gozarbinctl install-singbox # آخرین نسخهٔ پایدار از SagerNet gozarbinctl singbox --state # وضعیت هسته gozarbinctl singbox --origin # own | system | passwall | none ``` <div dir="rtl"> > ⚠️ فایل رسمی SagerNet حدود **۷۰ مگابایت** است و برای باز کردنش حدود ۱۵۰ مگابایت فضای خالی لازم است. روی روترهای با فلش ۱۶ یا ۳۲ مگابایتی این کار شدنی نیست؛ آنجا بستهٔ `sing-box` فید رسمی OpenWrt را نصب کنید تا گذربین از آن استفاده کند. ### بررسی خودکار نسخهٔ جدید گذربین روزی یک بار صفحهٔ انتشار SagerNet را نگاه میکند و اگر نسخهٔ **پایدار** تازهای آمده باشد، بالای صفحهٔ تنظیمات پیامی با دکمهٔ «بهروزرسانی» نشان میدهد. سه قید دارد: - فقط وقتی انجام میشود که تا آن لحظه **بیش از ۱۰۰ مگابایت** از تونل دانلود شده باشد. - حداکثر روزی یک بار. - اگر روتر آفلاین بود یا GitHub در دسترس نبود، **هیچ پیامی داده نمیشود**. خطا به کاربر نشان داده نمیشود چون این حالت روی چنین روتری عادی است، نه خبر. --- ## نصب سریع ۱. فایل `gozarbin-openwrt-<نسخه OpenWrt>-<معماری>.apk` یا فایل `.ipk` متناسب با روتر را از [آخرین انتشار](https://github.com/dreamboxone/gozarbin/releases/latest) دانلود کنید و در `/tmp` روتر قرار دهید. فایل Source code یا بستهٔ انتشار قدیمی را انتخاب نکنید. هر فایل APK یا IPK شامل برنامه و رابط LuCI همان نسخه است. در دستورهای زیر نام دقیق فایل دانلودشده را بهجای مقدار `archive` قرار دهید. دستورها را در یک نشست SSH اجرا کنید؛ بستهها در پوشهٔ داخلی آرشیو هستند. ۲. روی OpenWrt 25.12 (که از `apk` استفاده میکند): </div> ```sh cd /tmp apk add --allow-untrusted ./gozarbin-openwrt-25.12.5-arm_cortex-a7_neon-vfpv4.apk ``` <div dir="rtl"> روی OpenWrt 24.10 با `opkg`: </div> ```sh cd /tmp opkg install ./gozarbin-openwrt-24.10.8-arm_cortex-a7_neon-vfpv4.ipk ``` <div dir="rtl"> ۳. در LuCI به **خدمات ← گذربین** بروید. ۴. گزینهٔ **«فعال کردن برنامه»** را روشن کنید و **ذخیره و اعمال** را بزنید. همین. پراکسی SOCKS5 روی `127.0.0.1:1819` بالا میآید و ترافیک شبکه از تونل عبور میکند. فهرستهای ایران در اولین اتصال خودکار دریافت میشوند. ### Psiphon Psiphon از نسخهٔ بعد از ۲.۲.۲ داخل خود بستهٔ `gozarbin` است و نصب جداگانه ندارد. این بسته حدود **۲۰ مگابایت** فضای فلش بیشتر میگیرد. اگر از نسخهٔ ۲.۲.x بهروز میکنید و بستهٔ قدیمی `gozarbin-psiphon` را دارید، بستهٔ جدید فایل قدیمی Psiphon را پاک میکند. بعد از نصب، بستهٔ خالیِ باقیمانده را حذف کنید. روی روتری که فلش کمی دارد، بهتر است این کار را **قبل از** بهروزرسانی انجام دهید: </div> ```sh apk del gozarbin-psiphon # OpenWrt 25.12 opkg remove gozarbin-psiphon # OpenWrt 24.10 ``` <div dir="rtl"> --- ## صفحهٔ تنظیمات ### داشبورد بالای صفحه هفت کارت که هر سه ثانیه بهروز میشوند: | کارت | چه چیزی نشان میدهد | | --- | --- | | **وضعیت سرویس** | روشن/خاموش، حالت کار و مدت اجرا | | **ارسال (آپلود)** | سرعت لحظهای و مجموع بایتهای ارسالی | | **دریافت (دانلود)** | سرعت لحظهای و مجموع بایتهای دریافتی | | **مصرف کل** | جمع دو جهت و تعداد بستهها | | **نوع دستگاه** | مدل روتر، نسخهٔ OpenWrt و معماری | | **سرور و اسکن** | سرور فعلی، پینگ، کشور خروجی، و در حالت Psiphon وضعیت اتصال آن | | **پیشنیازها و Passwall2** | وضعیت هستهٔ sing-box، ماژولهای کرنل، TUN، Psiphon و Passwall2 | اعداد مصرف بر حسب **مگابایت** و **مگابایت بر ثانیه** نوشته میشوند و از شمارندههای واقعی `nftables` روی مسیر پراکسی خوانده میشوند، نه از تخمین. شمارندهها با هر بار راهاندازی مجدد سرویس از صفر شروع میشوند. اگر حالت شفاف بالا نیامده باشد، کارت «وضعیت سرویس» **دلیل دقیقش** را مینویسد — Passwall2 فعال است، یا یک پیشنیاز کم است، یا هستهٔ sing-box نصب نیست — نه حدس و نه چند احتمال با هم. ### دکمههای عملیات - **راهاندازی سرویس** — معادل `/etc/init.d/gozarbin restart`؛ سرویس خاموش را روشن میکند و روشن را دوباره راه میاندازد - **توقف سرویس** — سرویس را خاموش میکند بدون آنکه گزینهٔ «فعال بودن» تغییر کند - **بهروزرسانی GeoIP و GeoSite** — فهرستهای ایران و تبلیغات را دوباره دانلود میکند (اگر مستقیم نشد، از تونل) - **نصب پیشنیازهای جا افتاده** — بستههای کم را نصب میکند ### برگهٔ «عمومی» | گزینه | توضیح | | --- | --- | | **فعال کردن برنامه** | روشن و خاموش کردن گذربین. | | **حالت کار** | پراکسی شفاف (TProxy)، کارت شبکهٔ مجازی (TUN)، یا فقط پراکسی SOCKS5. | | **اجرا همزمان با Passwall2** | پیشفرض خاموش؛ پایینتر توضیح داده شده. | | **پروتکل تونل** | MASQUE، WireGuard، WARP-in-WARP، WireGuard داخل MASQUE یا MASQUE-in-MASQUE. | | **Psiphon** | خاموش، Psiphon داخل WARP، WARP از راه Psiphon، یا فقط Psiphon. پایینتر توضیح داده شده. | | **کشور خروجی Psiphon** | کشوری که Psiphon از آن خارج میشود، یا «خودکار». | | **شیوهٔ اتصال Psiphon** | خودکار، فقط از راه CDN، یا مستقیم. | | **حالت اسکن سرور** | از `turbo` (سریع) تا `ironclad` (مطمئن). | | **پورت SOCKS5** | پیشفرض ۱۸۱۹. | | **پورت پراکسی HTTP** | صفر یعنی خاموش؛ برای برنامههایی که فقط HTTP proxy میپذیرند. | **کدام پروتکل؟** اگر نمیدانید، `MASQUE` را دست نزنید. اگر شبکه QUIC را میبندد، `WireGuard` را امتحان کنید. `gool` و `mim` دو پرش پشت سر هم میسازند و IP خروجی را عوض میکنند، به قیمت سرعت کمتر. «WireGuard داخل MASQUE» یک هویت WireGuard را داخل تونل MASQUE میبرد و از همانجا ثبتش میکند، پس IP خروجی خارجی است نه ایرانی؛ مثل MASQUE هم از راه Tor وصل میشود. **کدام حالت اسکن؟** `balanced` پیشفرض است. روی شبکهای که همهچیز بسته بهنظر میرسد `thorough`، و اگر شبکه به اسکن حساس است `stealth`. ### برگهٔ «مسیریابی و تفکیک ترافیک» | گزینه | توضیح | | --- | --- | | **عبور مستقیم ترافیک ایران** | سایتها و سرویسهای ایرانی، هم بر اساس IP و هم بر اساس نام دامنه، بدون تونل باز میشوند. پیشفرض روشن. | | **عبور DNS از تونل** | دامنهها از داخل تونل پاسخ میگیرند تا فیلترینگ نتواند جواب جعلی بدهد. پیشفرض روشن؛ فقط در حالت شفاف. | | **خروجی غیرایرانی برای سرویسهای تحریمی** | دامنههای فهرست از وارپی عبور میکنند که از راه Tor وصل شده، تا سرویس ایران را تشخیص ندهد. پیشفرض خاموش؛ پایینتر توضیح داده شده. | | **دامنههای خروجی غیرایرانی** | Anthropic، OpenAI، Spotify، Gemini و Meta AI بهطور پیشفرض؛ هر دامنه زیردامنههایش را هم در بر میگیرد. | | **منبع GeoIP** | نشانی فایل `.srs` یا `.json`؛ هر نشانی دلخواهی را میتوانید وارد کنید. | | **منبع GeoSite** | همان، برای فهرست دامنهها. | | **مسدود کردن تبلیغات و ردیابها** | ترافیک مقصدهای فهرست تبلیغات مسدود میشود. | | **منبع فهرست تبلیغات** | نشانی فهرست تبلیغات؛ فقط وقتی مسدودسازی روشن باشد دانلود میشود. | | **فایل پیکربندی گذربین** | مسیر فایل هویت و قواعد مسیریابی اختصاصی هستهٔ تونل. | ### برگهٔ «پیشرفته» | گزینه | توضیح | | --- | --- | | **نسخهٔ IP** | فقط IPv4، فقط IPv6، یا هر دو. | | **پروفایل استتار** | از `off` تا `aggressive`؛ روی شبکههای سختگیر `gfw` را امتحان کنید. | | **پروفایل مصرف منابع** | روی روتر `low` بگذارید. | | **بررسی گواهی TLS** | گواهی API وارپ، DoH و لبهٔ MASQUE را بررسی میکند تا جلوی جعل وسط راه گرفته شود. پیشفرض خاموش است، چون روی شبکهای که TLS را رهگیری میکند تونل با آن وصل نمیشود. | | **اتصال سریع با آخرین سرور موفق** | از اسکن دوباره در هر بار راهاندازی جلوگیری میکند. | | **شمارش مصرف آپلود و دانلود** | شمارندههای nftables؛ خاموش کردنش نمایش مصرف را غیرفعال میکند. | | **سطح گزارش گذربین** | برای عیبیابی `debug`. | | **سطح گزارش sing-box** | گزارش موتور حالت شفاف و TUN. | | **رابطهای شبکهٔ داخلی** | ترافیک این رابطها به تونل هدایت میشود؛ معمولاً `br-lan`. | | **پورت TProxy** | فقط اگر با برنامهٔ دیگری تداخل داشت تغییر دهید. | | **علامت فایروال (fwmark)** | همان، برای علامت بستهها. | | **شمارهٔ جدول مسیریابی** | همان، برای جدول مسیریابی اختصاصی. | | **نام کارت شبکهٔ مجازی** | فقط در حالت TUN. | | **نشانی IPv4 کارت مجازی** | فقط در حالت TUN. | | **نشانی IPv6 کارت مجازی** | فقط در حالت TUN. | | **MTU کارت مجازی** | فقط در حالت TUN. | | **پورت داخلی Psiphon** | پیشفرض ۱۸۲۵، فقط روی `127.0.0.1`؛ نباید با پورتهای دیگر یکی باشد. | | **نشانی شنود پراکسی** | پیشفرض `127.0.0.1` و برای کار عادی درست است؛ پایینتر توضیح داده شده. | **دربارهٔ «نشانی شنود پراکسی»:** مقدار پیشفرض `127.0.0.1` است و برای کار عادی **همین درست است** — حالت شفاف و حالت TUN هر دو از روی خود روتر به پراکسی وصل میشوند، پس نیازی به تغییر ندارد. مقدار `0.0.0.0` فقط برای حالتی است که بخواهید دستگاههای شبکه **مستقیماً** پراکسی SOCKS5 را تنظیم کنند. > ⚠️ با `0.0.0.0` پراکسی **بدون رمز عبور** برای کل شبکه باز میشود. فقط وقتی این کار را بکنید که فایروال روتر آن پورت را از سمت WAN بسته باشد. --- ## تفکیک ترافیک ایران گزینهٔ **«عبور مستقیم ترافیک ایران»** از یک منبع استفاده میکند — فایلهای GeoIP و GeoSite — ولی آن را در دو جا به کار میبرد: - **بر اساس IP، در خود کرنل:** محدودههای IP داخل GeoIP به `nftables` داده میشوند، پس ترافیک به نشانی ایرانی اصلاً به sing-box نمیرسد و هزینهٔ پردازشی ندارد. - **بر اساس نام دامنه، در sing-box:** سایت ایرانیای که روی سرور یا CDN خارجی است با نامش شناخته میشود (GeoSite) و آن هم مستقیم میرود. فایلها در `/etc/gozarbin/geo/` مینشینند. اگر نباشند، بعد از بالا آمدن تونل خودکار دریافت میشوند؛ برای دریافت دستی: </div> ```sh gozarbinctl update-geo ``` <div dir="rtl"> منابع پیشفرض: | فهرست | نشانی پیشفرض | | --- | --- | | GeoIP ایران | `https://raw.githubusercontent.com/Chocolate4U/Iran-sing-box-rules/rule-set/geoip-ir.srs` | | GeoSite ایران | `https://raw.githubusercontent.com/Chocolate4U/Iran-sing-box-rules/rule-set/geosite-ir.srs` | | تبلیغات | `https://raw.githubusercontent.com/Chocolate4U/Iran-sing-box-rules/rule-set/geosite-category-ads-all.srs` | هر سه نشانی در صفحهٔ تنظیمات قابل ویرایشاند. دریافت اول مستقیم امتحان میشود و اگر جواب نداد از داخل تونل. اگر GitHub اصلاً در دسترس نبود، نشانی یک آینه را بگذارید. هم فایل `.srs` (فرمت باینری سینگباکس) و هم `.json` (فرمت متنی) پذیرفته میشود؛ تشخیص از روی پسوند نشانی انجام میشود و فایل فقط وقتی جایگزین میشود که واقعاً یک rule-set معتبر باشد. ### DNS فیلترینگ فقط اتصال را نمیبندد؛ به پرسوجوی DNS هم جواب جعلی میدهد. مثلاً برای `www.youtube.com` نشانی صفحهٔ فیلتر برمیگردد — حتی اگر دستگاه از `8.8.8.8` بپرسد، چون پورت ۵۳ در مسیر شنود میشود. دستگاهی که چنین جوابی بگیرد به نشانی اشتباه وصل میشود و هیچ پراکسیای بعد از آن کمکی نمیکند. برای همین است که مثلاً تلگرام (که با IP ثابت وصل میشود) کار میکند ولی یوتیوب روی تلویزیون نه. با **«عبور DNS از تونل»** در حالت شفاف: - دستگاههایی که از روتر میپرسند: dnsmasq به sing-box ارجاع داده میشود و sing-box نام را با DNS-over-HTTPS از داخل تونل میپرسد (پیشفرض `1.1.1.1`). - دستگاههایی که DNS خودشان را دارند (مثل تلویزیونی که مستقیم از `8.8.8.8` میپرسد): sing-box پرسوجو را وسط راه میگیرد و همانطور جواب میدهد. - دامنههای ایرانی (GeoSite) از DNS اینترنت خودتان پاسخ میگیرند تا به سرورهای داخلی برسند. این تغییر فقط در `/tmp` نوشته میشود، نه در `/etc/config/dhcp`: با خاموش شدن سرویس، قطع تونل، یا راهاندازی مجدد روتر، DNS خودکار به حالت عادی برمیگردد. وقتی Passwall2 فعال است، DNS در اختیار همان میماند. </div> ```sh gozarbinctl dns state # on یا off ``` <div dir="rtl"> ### سرویسهایی که ایران را تحریم کردهاند وارپ از فیلترینگ عبور میکند ولی موقعیت شما را پنهان نمیکند: Cloudflare خروجی وارپ را همان کشوری ثبت میکند که اتصال از آن شروع شده، پس از ایران، `loc=IR`. برای همین Claude، ChatGPT، Gemini، Spotify و Meta AI حتی با گذربین هم ایران را میبینند. با **«خروجی غیرایرانی برای سرویسهای تحریمی»** یک هستهٔ دوم، اتصال وارپ خودش را **از راه Tor** برقرار میکند. چون اتصال به Cloudflare از یک خروجی Tor در خارج شروع میشود، خروجی وارپ هم خارج از ایران ثبت میشود — یک نشانی عادی Cloudflare، نه نشانی Tor که همین سرویسها معمولاً میبندند. فقط دامنههای فهرست از این مسیر میروند؛ بقیهٔ ترافیک مثل قبل از وارپ مستقیم. چند نکته که باید بدانید: - **کشور خروجی ثابت نیست.** هر بار که Tor مسیرش را عوض کند ممکن است عوض شود (مثلاً فرانسه یا سوئد). - **کندتر است** و برای چت و موسیقی کافی است، نه برای ویدیو. - **اتصال اول حدود دو دقیقه طول میکشد.** کارت «وضعیت سرویس» مینویسد «در حال اتصال» یا «آماده». - **تا آماده نشده، این سایتها باز نمیشوند.** عمداً به مسیر ایران برنمیگردند. - **حافظه:** حدود ۳۰ مگابایت. - **سرویسهای پشت Cloudflare** ممکن است گاهی یک بررسی «آیا انسان هستید» نشان دهند. </div> ```sh gozarbinctl unblock # خروجی غیرایرانی الان کجاست (ip و کشور) ``` <div dir="rtl"> ### Psiphon و انتخاب کشور گزینهٔ **«Psiphon»** در برگهٔ «عمومی» سه حالت دارد: | حالت | مسیر | خروجی | | --- | --- | --- | | **Psiphon داخل WARP** | شما ← WARP ← Psiphon ← اینترنت | Psiphon، در کشوری که انتخاب کردهاید. شبکه فقط WARP را میبیند. | | **WARP از راه Psiphon** | شما ← Psiphon ← WARP ← اینترنت | WARP؛ شبکه هرگز WARP را نمیبیند. فقط با MASQUE (روی HTTP/2). | | **فقط Psiphon** | شما ← Psiphon ← اینترنت | Psiphon، بدون WARP. | در هر سه حالت **پورت SOCKS5 خروجی نهایی است**، پس حالت شفاف، TUN، شمارش مصرف و هر برنامهای که به پورت ۱۸۱۹ وصل است بدون تغییر کار میکنند. - **کشور خروجی** از فهرست انتخاب میشود (با نام فارسی و پرچم). اگر Psiphon در آن لحظه در کشور انتخابشده سروری نداشته باشد، ممکن است اصلاً وصل نشود؛ پس اگر کشور خاصی لازم ندارید، «خودکار» بگذارید. کارت «سرور و اسکن» کشور واقعی خروجی را نشان میدهد. کشورهایی که Psiphon همین حالا ارائه میکند در فهرست با ✓ مشخص میشوند. - **اگر Psiphon وصل نمیشود**، «شیوهٔ اتصال Psiphon» را روی «فقط از راه CDN» بگذارید. - **اتصال اول** ممکن است تا سه دقیقه طول بکشد. - دادههای Psiphon در حافظهٔ RAM نگه داشته میشوند تا حافظهٔ فلش فرسوده نشود. مصرف حافظه حدود ۳۰ تا ۵۰ مگابایت است. - Psiphon یا Tor، فقط یکی میتواند اتصال تونل را برقرار کند؛ با «WARP از راه Psiphon» یا «فقط Psiphon» گزینههای Tor نادیده گرفته میشوند. </div> ```sh gozarbinctl psiphon chain DE # Psiphon داخل WARP با خروجی آلمان gozarbinctl psiphon only auto # فقط Psiphon، کشور خودکار gozarbinctl psiphon off ``` <div dir="rtl"> ### قواعد دستی خود گذربین هستهٔ تونل مسیریابی مستقل خودش را هم دارد که با فایل پیکربندی کار میکند. در فایلی که در «فایل پیکربندی گذربین» معرفی کردهاید میتوانید بنویسید: </div> ```ini [direct] example.com full:bank.ir keyword:arvancloud 10.0.0.0/8 private [block] doubleclick.net port:25 ``` <div dir="rtl"> `block` اول بررسی میشود، بعد `direct`، و باقی ترافیک از تونل میرود. --- ## همزیستی با Passwall2 ### مهم: علامت فایروال Passwall2 (و Passwall و ShadowSocksR) **هر بستهای را که خود روتر میفرستد** به پراکسی خودشان میبرند، مگر آنکه بایت آخر علامت فایروال آن بسته `ff` باشد. قاعدهشان دقیقاً این است: </div> ``` meta mark & 0x000000ff == 0x000000ff return ``` <div dir="rtl"> پس اگر علامت گذربین به `ff` ختم نشود، ترافیک خودِ تونل هم دزدیده میشود. نتیجه بدترین حالت ممکن است: تونل **وصل میشود**، صفحه میگوید «متصل»، ولی هیچ ترافیکی از آن رد نمیشود و هیچ خطایی هم داده نمیشود. پیشفرض `0x0aff` است و درست است. اگر دستی عوضش کردید، بایت آخر را `ff` نگه دارید. صفحه ناسازگاری را تشخیص میدهد و دکمهٔ «اصلاح علامت» نشان میدهد. از خط فرمان: </div> ```sh gozarbinctl fix-mark ``` <div dir="rtl"> اگر Passwall2 روی روتر فعال باشد، دو برنامه سر قواعد `nftables` و جدول مسیریابی با هم تداخل میکنند. به همین دلیل: - گذربین وضعیت Passwall2 را میخواند و اگر فعال بود، **حالت شفاف را بالا نمیآورد** و در `logread` دلیلش را مینویسد. - پراکسی SOCKS5 در هر حال بالا میآید، پس میتوانید همچنان از آن استفاده کنید. - اگر میدانید چه میکنید و آنها را روی پورتها و مارکهای جدا تنظیم کردهاید، گزینهٔ **«اجرا همزمان با Passwall2»** این محافظ را برمیدارد. --- ## خط فرمان </div> ```sh gozarbinctl on # روشن کردن و راهاندازی gozarbinctl off # خاموش کردن gozarbinctl restart # راهاندازی مجدد gozarbinctl status # گزارش کامل: سرویس، Passwall2، پیشنیازها و مصرف gozarbinctl version # نسخهٔ بسته و نسخهٔ هسته gozarbinctl traffic # یک خط JSON از شمارندههای زنده gozarbinctl deps # گزارش پیشنیازها gozarbinctl install-deps # نصب پیشنیازهای جا افتاده gozarbinctl update-geo # بهروزرسانی GeoIP و GeoSite gozarbinctl dns state # آیا DNS شبکه از تونل میرود gozarbinctl unblock # کشور خروجی غیرایرانی gozarbinctl singbox # وضعیت هستهٔ sing-box gozarbinctl install-singbox # نصب یا بهروزرسانی هستهٔ اختصاصی gozarbinctl mode tun # تغییر حالت کار: tproxy | tun | socks gozarbinctl psiphon chain NL # Psiphon: off | chain | reverse | only، و کشور خروجی ``` <div dir="rtl"> خود هستهٔ تونل هم دهها گزینهٔ دیگر دارد که با `gozarbin --help` فهرست میشوند (Tor، Psiphon، Zero Trust، ECH، تکهتکه کردن ClientHello و…). --- ## تنظیمات در UCI همهٔ گزینههای صفحهٔ تنظیمات در `/etc/config/gozarbin` ذخیره میشوند و مستقیماً هم قابل ویرایشاند: </div> ```sh uci set gozarbin.main.mode=tun uci set gozarbin.main.protocol=wg uci set gozarbin.main.geo_enabled=1 uci set gozarbin.main.psiphon=chain # off | chain | reverse | only uci set gozarbin.main.psiphon_region=DE # خالی = خودکار uci set gozarbin.main.psiphon_mode=auto # auto | cdn | direct uci commit gozarbin /etc/init.d/gozarbin restart ``` <div dir="rtl"> این فایل جزو `conffiles` بسته است، یعنی ارتقای نسخه آن را پاک نمیکند. گزینههای جدیدِ هر نسخه هنگام ارتقا با مقدار پیشفرض به آن اضافه میشوند. --- ## عیبیابی **سرویس روشن است ولی اینترنت ندارم** </div> ```sh logread -e gozarbin | tail -50 ``` <div dir="rtl"> اگر پیام مربوط به Passwall2 دیدید، یکی از دو برنامه را خاموش کنید. اگر پیام کمبود پیشنیاز دیدید، `gozarbinctl install-deps` را بزنید. **کارت مصرف صفر میماند** مطمئن شوید «شمارش مصرف آپلود و دانلود» در برگهٔ پیشرفته روشن است، و سرویس بعد از روشن کردن آن یک بار راهاندازی مجدد شده باشد. **سایتهای ایرانی کند شدهاند** مطمئن شوید «عبور مستقیم ترافیک ایران» روشن است و دکمهٔ «بهروزرسانی GeoIP و GeoSite» را یک بار بزنید. **یک سایت روی یک دستگاه باز نمیشود ولی روی دستگاه دیگر باز میشود** تقریباً همیشه DNS است. مطمئن شوید «عبور DNS از تونل» روشن است و بعد روی روتر ببینید چه جوابی برمیگردد: </div> ```sh gozarbinctl dns state nslookup www.youtube.com 127.0.0.1 ``` <div dir="rtl"> اگر نشانیای شبیه `10.10.34.x` برگشت، جواب از فیلترینگ آمده و DNS هنوز از تونل نمیرود. **تونل وصل نمیشود** پروفایل استتار را روی `gfw` و حالت اسکن را روی `thorough` بگذارید. اگر باز هم نشد، پروتکل را به `WireGuard` تغییر دهید. اگر WARP روی این شبکه اصلاً وصل نمیشود، «فقط Psiphon» یا «WARP از راه Psiphon» را امتحان کنید. **Psiphon وصل نمیشود یا کارت میگوید «Psiphon وصل نشد»** «شیوهٔ اتصال Psiphon» را روی «فقط از راه CDN» بگذارید. اگر گزینههای Psiphon اثری ندارند، فایل Psiphon روی روتر نیست؛ `gozarbinctl psiphon` این را میگوید و نصب دوبارهٔ بستهٔ `gozarbin` آن را برمیگرداند. گزارشهای Psiphon را اینطور ببینید: </div> ```sh gozarbinctl psiphon logread -e gozarbin | grep -i psiphon | tail -20 ``` <div dir="rtl"> **کشور خروجی با کشوری که انتخاب کردم فرق دارد** Psiphon فقط کشورهایی را میدهد که همان لحظه در آنها سرور دارد و اگر کشور انتخابی نبود، کشور دیگری میدهد. کشورهای در دسترس در فهرست انتخاب کشور با ✓ مشخص میشوند. در حالت «WARP از راه Psiphon» خروجی WARP است و کشورش را Cloudflare تعیین میکند، معمولاً نزدیک به کشور Psiphon. **میخواهم ببینم دقیقاً چه قواعدی نصب شدهاند** </div> ```sh nft list table inet gozarbin_proxy ip rule list cat /var/run/gozarbin/sing-box.json ``` <div dir="rtl"> --- ## حذف </div> ```sh gozarbinctl off apk del gozarbin # OpenWrt 24.10 به بعد opkg remove gozarbin # نسخههای قدیمیتر ``` <div dir="rtl"> پیش از حذف، سرویس خودش قواعد فایروال و مسیریابی را پاک میکند. --- ## ساخت از سورس </div> ```sh cargo build --release --manifest-path aether/Cargo.toml bash psiphon-build.sh linux arm ./pt 7 # اختیاری: Psiphon، مثلاً برای armv7 ./scripts/build-openwrt-packages.sh <sdk-directory> <core-binary> <output-directory> [psiphon-binary] ``` <div dir="rtl"> اسکریپت بالا بسته یکپارچه `gozarbin` شامل LuCI را با OpenWrt SDK میسازد و در پوشهٔ خروجی میگذارد؛ اگر باینری Psiphon را هم بدهید، داخل همان بستهٔ `gozarbin` قرار میگیرد. `psiphon-build.sh` خودش دقیقاً همان نسخهٔ Go را که Psiphon لازم دارد دریافت میکند، چون Psiphon ساختهشده با نسخهٔ دیگر هنگام اجرا از کار میافتد. --- ## ساخت بستهٔ «مبهمسازیشده» اسکریپتهای shell و فایلهای رابط کاربری که روی روتر نصب میشوند میتوانند پیش از بستهبندی از توضیحات، خطوط خالی و تورفتگی خالی شوند، بهطوریکه فقط کد اجراشدنی و هدر کپیرایت باقی بماند: </div> ```sh GOZARBIN_OBFUSCATE=1 ./scripts/build-openwrt-packages.sh <sdk> <binary> <output> ``` <div dir="rtl"> ابزارش [openwrt/tools/obfuscate.py](openwrt/tools/obfuscate.py) است و بهتنهایی هم قابل اجراست: </div> ```sh python3 openwrt/tools/obfuscate.py --check openwrt/files luci-app-gozarbin/htdocs ``` <div dir="rtl"> این کار محافظهکارانه است: هیچ نامی تغییر نمیکند و هیچ چیزی دوباره کدگذاری نمیشود، پس برنامه دقیقاً همان برنامه میماند. **اما صریح بگویم:** این کار فقط کپیبرداری را پرزحمتتر میکند و جلوی آن را نمیگیرد. هستهٔ تونل تحت AGPL-3.0 منتشر شده و هر اثر مشتقشدهای هم باید AGPL-3.0 بماند؛ یعنی هر کسی که بسته را میگیرد، قانوناً حق دارد سورس واقعی را هم داشته باشد. چیزی که واقعاً جلوی انتشار مجدد به نام شخص دیگر را میگیرد اینهاست: - **لایسنس** — AGPL-3.0 استفادهٔ تجاری بدون انتشار سورس و بدون حفظ همین لایسنس را ممنوع میکند. - **هدر کپیرایت** — روی تکتک فایلها هست و حذف یا تغییر آن نقض لایسنس است. - **نشان تجاری** — نام و لوگوی گذربین طبق [TRADEMARK.md](TRADEMARK.md) قابل استفاده در فورک تغییر دادهشده نیست. - **تاریخچهٔ عمومی مخزن** — کامیتهای زماندار و Releaseهای امضاشده مدرک تقدم شما هستند. --- ## لایسنس این پروژه تحت **AGPL-3.0-only** منتشر شده است. متن کامل در [LICENSE](LICENSE) و نشان تجاری در [TRADEMARK.md](TRADEMARK.md). هستهٔ تونل کار [CluvexStudio](https://github.com/CluvexStudio/Aether) است. بستهبندی OpenWrt و رابط کاربری فارسی در این مخزن نگهداری میشود. جزئیات در [NOTICE](NOTICE). </div> --- <div dir="rtl"> ## 💚 حمایت از این پروژه اگر این پروژه به کارتان آمده، میتوانید با واریز تتر از آن حمایت کنید: **USDT (تتر) — فقط شبکه BEP20 (BSC)** </div> ``` 0x56daaa6b76d88ee0c8dba8042121f4b77de0a813 ``` <div dir="rtl"> > ⚠️ این آدرس فقط برای واریز تتر در شبکه BEP20 (BSC) است. واریز ارز دیگر یا از شبکه دیگر به این آدرس از دست میرود. </div>