Skip to content
dreamboxonePublic

About

A rust core proxy client for openwrt routers and more

Topics

Resources

Stars

21 stars

Watchers

0 watching

Forks

Repository files navigation

گذربین — پراکسی و تفکیک ترافیک برای OpenWrt

گذربین نسخه‌ای تغییر‌یافته از Aether است. هستهٔ تونل کار CluvexStudio است و تحت AGPL-3.0 منتشر شده. این مخزن آن را در سال ۲۰۲۶ تغییر داده و برایش بسته‌بندی OpenWrt، سرویس، قواعد فایروال، هستهٔ اختصاصی sing-box و یک رابط کاربری فارسی اضافه کرده و نامش را گذربین گذاشته است. نام Aether علامت تجاری CluvexStudio است و برای نسخهٔ تغییر‌یافته مجوز ندارد؛ نام متفاوت به همین دلیل است. فهرست دقیق اینکه کدام بخش کار چه کسی است در NOTICE آمده.

راهنمای کامل نصب و استفاده. اگر فقط می‌خواهید شروع کنید، نصب سریع کافی است؛ باقی متن توضیح تک‌تک امکانات است.


گذربین چه کار می‌کند؟

‏گذربین یک کلاینت عبور از فیلترینگ است که روی خود روتر اجرا می‌شود. یک تونل رمزنگاری‌شده به بیرون باز می‌کند و آن را به سه شکل در اختیار شما می‌گذارد:

حالت چه اتفاقی می‌افتد مناسب چه کسی
**پراکسی شفاف (TProxy)**‏ تمام ترافیک دستگاه‌های شبکه بدون هیچ تنظیمی از تونل رد می‌شود حالت پیش‌فرض و پیشنهادی
**کارت شبکهٔ مجازی (TUN)**‏ یک اینترفیس مجازی ساخته می‌شود و مسیریابی از آن عبور می‌کند روترهایی که TProxy در آن‌ها مشکل دارد
فقط SOCKS5‏ تنها یک پراکسی محلی باز می‌شود و ترافیک شبکه دست‌نخورده می‌ماند وقتی می‌خواهید فقط بعضی برنامه‌ها از تونل رد شوند

بخش SOCKS5 داخل خود هستهٔ تونل پیاده‌سازی شده است. حالت شفاف و حالت TUN با کمک sing-box انجام می‌شود؛ گذربین هستهٔ sing-box خودش را دارد و به هستهٔ Passwall2 دست نمی‌زند — توضیحش پایین‌تر آمده.

تونل پیش‌فرض WARP از راه Psiphon است: Psiphon راه خروج را پیدا می‌کند و WARP (MASQUE) داخل آن وصل می‌شود، چون روی شبکه‌های فیلترشده دست‌دادن مستقیم MASQUE اغلب قطع می‌شود. حالت‌های دیگر هم هست (MASQUE مستقیم، WireGuard و ترکیب‌هایشان). Psiphon داخل همین بسته است — به‌تنهایی یا زنجیرشده با WARP از هر دو طرف — و کشور خروجی را خودتان انتخاب می‌کنید. توضیحش در بخش Psiphon و انتخاب کشور آمده.


پیش‌نیازها

هنگام نصب بسته، همهٔ موارد زیر به‌طور خودکار توسط apk یا opkg نصب می‌شوند. نیازی نیست چیزی را دستی نصب کنید:

بسته برای چه لازم است
‏kmod-nft-tproxy‏ ماژول کرنل برای هدایت ترافیک به تونل
‏kmod-nft-socket‏ ماژول کرنل مکمل TProxy‏
‏kmod-tun‏ ماژول کرنل برای حالت TUN‏
‏nftables‏ نوشتن قواعد فایروال
‏ip-full‏ قواعد مسیریابی بر اساس fwmark‏
‏ca-bundle و libustream-mbedtls‏ دانلود امن فهرست‌ها روی HTTPS‏

اگر روتر بعداً یکی از این بسته‌ها را از دست بدهد (مثلاً بعد از بازیابی نسخهٔ پشتیبان)، صفحهٔ تنظیمات آن را در کارت «پیش‌نیازها» نشان می‌دهد و دکمهٔ «نصب پیش‌نیازهای جا افتاده» آن را نصب می‌کند. همین کار از خط فرمان:

gozarbinctl deps          # گزارش وضعیت
gozarbinctl install-deps  # نصب موارد جا افتاده

سرویس هم پیش از شروع حالت شفاف همین بررسی را انجام می‌دهد و اگر چیزی کم باشد، به‌جای خرابی خاموش، پیام آن را در 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‏ از آن استفاده می‌کند (مال کسی نیست)‏
هیچ‌کدام حالت شفاف بالا نمی‌آید و دکمهٔ «نصب هسته» در صفحه ظاهر می‌شود

نصب یا به‌روزرسانی هسته از صفحهٔ تنظیمات با یک دکمه انجام می‌شود، یا از خط فرمان:

gozarbinctl install-singbox     # آخرین نسخهٔ پایدار از SagerNet
gozarbinctl singbox --state     # وضعیت هسته
gozarbinctl singbox --origin    # own | system | passwall | none

⚠️ فایل رسمی SagerNet حدود ۷۰ مگابایت است و برای باز کردنش حدود ۱۵۰ مگابایت فضای خالی لازم است. روی روترهای با فلش ۱۶ یا ۳۲ مگابایتی این کار شدنی نیست؛ آنجا بستهٔ sing-box فید رسمی OpenWrt را نصب کنید تا گذربین از آن استفاده کند.

بررسی خودکار نسخهٔ جدید

‏گذربین روزی یک بار صفحهٔ انتشار SagerNet را نگاه می‌کند و اگر نسخهٔ پایدار تازه‌ای آمده باشد، بالای صفحهٔ تنظیمات پیامی با دکمهٔ «به‌روزرسانی» نشان می‌دهد. سه قید دارد:

  • فقط وقتی انجام می‌شود که تا آن لحظه بیش از ۱۰۰ مگابایت از تونل دانلود شده باشد.
  • حداکثر روزی یک بار.
  • اگر روتر آفلاین بود یا GitHub در دسترس نبود، هیچ پیامی داده نمی‌شود. خطا به کاربر نشان داده نمی‌شود چون این حالت روی چنین روتری عادی است، نه خبر.

نصب سریع

۱. فایل gozarbin-openwrt-<نسخهٔ OpenWrt>-<معماری>.tar.gz متناسب با روتر را از بخش Releases دانلود کنید، باز کنید و محتوایش را روی روتر کپی کنید.

۲. روی OpenWrt 25.12 (که از apk استفاده می‌کند):

apk add --allow-untrusted ./gozarbin-2*.apk ./luci-app-gozarbin-*.apk

روی OpenWrt 24.10 با opkg:

opkg install ./gozarbin_*.ipk ./luci-app-gozarbin_*.ipk

۳. در LuCI به خدمات ← گذربین بروید.

۴. گزینهٔ «فعال کردن برنامه» را روشن کنید و ذخیره و اعمال را بزنید.

همین. پراکسی SOCKS5 روی 127.0.0.1:1819 بالا می‌آید و ترافیک شبکه از تونل عبور می‌کند. فهرست‌های ایران در اولین اتصال خودکار دریافت می‌شوند.

Psiphon

‏Psiphon از نسخهٔ بعد از ۲.۲.۲ داخل خود بستهٔ gozarbin است و نصب جداگانه ندارد. این بسته حدود ۲۰ مگابایت فضای فلش بیشتر می‌گیرد.

اگر از نسخهٔ ۲.۲.x به‌روز می‌کنید و بستهٔ قدیمی gozarbin-psiphon را دارید، بستهٔ جدید فایل قدیمی Psiphon را پاک می‌کند. بعد از نصب، بستهٔ خالیِ باقی‌مانده را حذف کنید. روی روتری که فلش کمی دارد، بهتر است این کار را قبل از به‌روزرسانی انجام دهید:

apk del gozarbin-psiphon        # OpenWrt 25.12
opkg remove gozarbin-psiphon    # OpenWrt 24.10

صفحهٔ تنظیمات

داشبورد بالای صفحه

هفت کارت که هر سه ثانیه به‌روز می‌شوند:

کارت چه چیزی نشان می‌دهد
وضعیت سرویس روشن/خاموش، حالت کار و مدت اجرا
**ارسال (آپلود)**‏ سرعت لحظه‌ای و مجموع بایت‌های ارسالی
**دریافت (دانلود)**‏ سرعت لحظه‌ای و مجموع بایت‌های دریافتی
مصرف کل جمع دو جهت و تعداد بسته‌ها
نوع دستگاه مدل روتر، نسخهٔ 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/ می‌نشینند. اگر نباشند، بعد از بالا آمدن تونل خودکار دریافت می‌شوند؛ برای دریافت دستی:

gozarbinctl update-geo

منابع پیش‌فرض:

فهرست نشانی پیش‌فرض
‏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 در اختیار همان می‌ماند.

gozarbinctl dns state   # on یا off

سرویس‌هایی که ایران را تحریم کرده‌اند

وارپ از فیلترینگ عبور می‌کند ولی موقعیت شما را پنهان نمی‌کند: Cloudflare خروجی وارپ را همان کشوری ثبت می‌کند که اتصال از آن شروع شده، پس از ایران، loc=IR. برای همین Claude، ChatGPT، Gemini، Spotify و Meta AI حتی با گذربین هم ایران را می‌بینند.

با «خروجی غیرایرانی برای سرویس‌های تحریمی» یک هستهٔ دوم، اتصال وارپ خودش را از راه Tor برقرار می‌کند. چون اتصال به Cloudflare از یک خروجی Tor در خارج شروع می‌شود، خروجی وارپ هم خارج از ایران ثبت می‌شود — یک نشانی عادی Cloudflare، نه نشانی Tor که همین سرویس‌ها معمولاً می‌بندند. فقط دامنه‌های فهرست از این مسیر می‌روند؛ بقیهٔ ترافیک مثل قبل از وارپ مستقیم.

چند نکته که باید بدانید:

  • کشور خروجی ثابت نیست. هر بار که Tor مسیرش را عوض کند ممکن است عوض شود (مثلاً فرانسه یا سوئد).
  • کندتر است و برای چت و موسیقی کافی است، نه برای ویدیو.
  • اتصال اول حدود دو دقیقه طول می‌کشد. کارت «وضعیت سرویس» می‌نویسد «در حال اتصال» یا «آماده».
  • تا آماده نشده، این سایت‌ها باز نمی‌شوند. عمداً به مسیر ایران برنمی‌گردند.
  • حافظه: حدود ۳۰ مگابایت.
  • سرویس‌های پشت Cloudflare ممکن است گاهی یک بررسی «آیا انسان هستید» نشان دهند.
gozarbinctl unblock     # خروجی غیرایرانی الان کجاست (ip و کشور)

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 نادیده گرفته می‌شوند.
gozarbinctl psiphon chain DE    # Psiphon داخل WARP با خروجی آلمان
gozarbinctl psiphon only auto   # فقط Psiphon، کشور خودکار
gozarbinctl psiphon off

قواعد دستی خود گذربین

هستهٔ تونل مسیریابی مستقل خودش را هم دارد که با فایل پیکربندی کار می‌کند. در فایلی که در «فایل پیکربندی گذربین» معرفی کرده‌اید می‌توانید بنویسید:

[direct]
example.com
full:bank.ir
keyword:arvancloud
10.0.0.0/8
private

[block]
doubleclick.net
port:25

‏block اول بررسی می‌شود، بعد direct، و باقی ترافیک از تونل می‌رود.


هم‌زیستی با Passwall2

مهم: علامت فایروال

Passwall2 (و Passwall و ShadowSocksR) هر بسته‌ای را که خود روتر می‌فرستد به پراکسی خودشان می‌برند، مگر آنکه بایت آخر علامت فایروال آن بسته ff باشد. قاعده‌شان دقیقاً این است:

meta mark & 0x000000ff == 0x000000ff  return

پس اگر علامت گذربین به ff ختم نشود، ترافیک خودِ تونل هم دزدیده می‌شود. نتیجه بدترین حالت ممکن است: تونل وصل می‌شود، صفحه می‌گوید «متصل»، ولی هیچ ترافیکی از آن رد نمی‌شود و هیچ خطایی هم داده نمی‌شود.

پیش‌فرض 0x0aff است و درست است. اگر دستی عوضش کردید، بایت آخر را ff نگه دارید. صفحه ناسازگاری را تشخیص می‌دهد و دکمهٔ «اصلاح علامت» نشان می‌دهد. از خط فرمان:

gozarbinctl fix-mark

اگر Passwall2 روی روتر فعال باشد، دو برنامه سر قواعد nftables و جدول مسیریابی با هم تداخل می‌کنند. به همین دلیل:

  • ‏گذربین وضعیت Passwall2 را می‌خواند و اگر فعال بود، حالت شفاف را بالا نمی‌آورد و در logread دلیلش را می‌نویسد.
  • پراکسی SOCKS5 در هر حال بالا می‌آید، پس می‌توانید همچنان از آن استفاده کنید.
  • اگر می‌دانید چه می‌کنید و آن‌ها را روی پورت‌ها و مارک‌های جدا تنظیم کرده‌اید، گزینهٔ «اجرا هم‌زمان با Passwall2» این محافظ را برمی‌دارد.

خط فرمان

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، و کشور خروجی

خود هستهٔ تونل هم ده‌ها گزینهٔ دیگر دارد که با gozarbin --help فهرست می‌شوند (Tor، Psiphon، Zero Trust، ECH، تکه‌تکه کردن ClientHello و…).


تنظیمات در UCI

همهٔ گزینه‌های صفحهٔ تنظیمات در /etc/config/gozarbin ذخیره می‌شوند و مستقیماً هم قابل ویرایش‌اند:

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

این فایل جزو conffiles بسته است، یعنی ارتقای نسخه آن را پاک نمی‌کند. گزینه‌های جدیدِ هر نسخه هنگام ارتقا با مقدار پیش‌فرض به آن اضافه می‌شوند.


عیب‌یابی

سرویس روشن است ولی اینترنت ندارم

logread -e gozarbin | tail -50

اگر پیام مربوط به Passwall2 دیدید، یکی از دو برنامه را خاموش کنید. اگر پیام کمبود پیش‌نیاز دیدید، gozarbinctl install-deps را بزنید.

کارت مصرف صفر می‌ماند

مطمئن شوید «شمارش مصرف آپلود و دانلود» در برگهٔ پیشرفته روشن است، و سرویس بعد از روشن کردن آن یک بار راه‌اندازی مجدد شده باشد.

سایت‌های ایرانی کند شده‌اند

مطمئن شوید «عبور مستقیم ترافیک ایران» روشن است و دکمهٔ «به‌روزرسانی GeoIP و GeoSite» را یک بار بزنید.

یک سایت روی یک دستگاه باز نمی‌شود ولی روی دستگاه دیگر باز می‌شود

تقریباً همیشه DNS است. مطمئن شوید «عبور DNS از تونل» روشن است و بعد روی روتر ببینید چه جوابی برمی‌گردد:

gozarbinctl dns state
nslookup www.youtube.com 127.0.0.1

اگر نشانی‌ای شبیه 10.10.34.x برگشت، جواب از فیلترینگ آمده و DNS هنوز از تونل نمی‌رود.

تونل وصل نمی‌شود

پروفایل استتار را روی gfw و حالت اسکن را روی thorough بگذارید. اگر باز هم نشد، پروتکل را به WireGuard تغییر دهید. اگر WARP روی این شبکه اصلاً وصل نمی‌شود، «فقط Psiphon» یا «WARP از راه Psiphon» را امتحان کنید.

‏Psiphon وصل نمی‌شود یا کارت می‌گوید «Psiphon وصل نشد»

«شیوهٔ اتصال Psiphon» را روی «فقط از راه CDN» بگذارید. اگر گزینه‌های Psiphon اثری ندارند، فایل Psiphon روی روتر نیست؛ gozarbinctl psiphon این را می‌گوید و نصب دوبارهٔ بستهٔ gozarbin آن را برمی‌گرداند. گزارش‌های Psiphon را این‌طور ببینید:

gozarbinctl psiphon
logread -e gozarbin | grep -i psiphon | tail -20

کشور خروجی با کشوری که انتخاب کردم فرق دارد

‏Psiphon فقط کشورهایی را می‌دهد که همان لحظه در آن‌ها سرور دارد و اگر کشور انتخابی نبود، کشور دیگری می‌دهد. کشورهای در دسترس در فهرست انتخاب کشور با ✓ مشخص می‌شوند. در حالت «WARP از راه Psiphon» خروجی WARP است و کشورش را Cloudflare تعیین می‌کند، معمولاً نزدیک به کشور Psiphon.

می‌خواهم ببینم دقیقاً چه قواعدی نصب شده‌اند

nft list table inet gozarbin_proxy
ip rule list
cat /var/run/gozarbin/sing-box.json

حذف

gozarbinctl off
apk del luci-app-gozarbin gozarbin      # OpenWrt 24.10 به بعد
opkg remove luci-app-gozarbin gozarbin  # نسخه‌های قدیمی‌تر

پیش از حذف، سرویس خودش قواعد فایروال و مسیریابی را پاک می‌کند.


ساخت از سورس

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]

اسکریپت بالا بسته‌های gozarbin و luci-app-gozarbin را با OpenWrt SDK می‌سازد و در پوشهٔ خروجی می‌گذارد؛ اگر باینری Psiphon را هم بدهید، داخل همان بستهٔ gozarbin قرار می‌گیرد. ‏psiphon-build.sh خودش دقیقاً همان نسخهٔ Go را که Psiphon لازم دارد دریافت می‌کند، چون Psiphon ساخته‌شده با نسخهٔ دیگر هنگام اجرا از کار می‌افتد.


ساخت بستهٔ «مبهم‌سازی‌شده»

اسکریپت‌های shell و فایل‌های رابط کاربری که روی روتر نصب می‌شوند می‌توانند پیش از بسته‌بندی از توضیحات، خطوط خالی و تورفتگی خالی شوند، به‌طوری‌که فقط کد اجراشدنی و هدر کپی‌رایت باقی بماند:

GOZARBIN_OBFUSCATE=1 ./scripts/build-openwrt-packages.sh <sdk> <binary> <output>

ابزارش openwrt/tools/obfuscate.py است و به‌تنهایی هم قابل اجراست:

python3 openwrt/tools/obfuscate.py --check openwrt/files luci-app-gozarbin/htdocs

این کار محافظه‌کارانه است: هیچ نامی تغییر نمی‌کند و هیچ چیزی دوباره کدگذاری نمی‌شود، پس برنامه دقیقاً همان برنامه می‌ماند.

اما صریح بگویم: این کار فقط کپی‌برداری را پرزحمت‌تر می‌کند و جلوی آن را نمی‌گیرد. هستهٔ تونل تحت AGPL-3.0 منتشر شده و هر اثر مشتق‌شده‌ای هم باید AGPL-3.0 بماند؛ یعنی هر کسی که بسته را می‌گیرد، قانوناً حق دارد سورس واقعی را هم داشته باشد. چیزی که واقعاً جلوی انتشار مجدد به نام شخص دیگر را می‌گیرد این‌هاست:

  • لایسنس — AGPL-3.0 استفادهٔ تجاری بدون انتشار سورس و بدون حفظ همین لایسنس را ممنوع می‌کند.
  • هدر کپی‌رایت — روی تک‌تک فایل‌ها هست و حذف یا تغییر آن نقض لایسنس است.
  • نشان تجاری — نام و لوگوی گذربین طبق TRADEMARK.md قابل استفاده در فورک تغییر داده‌شده نیست.
  • تاریخچهٔ عمومی مخزن — کامیت‌های زمان‌دار و Releaseهای امضاشده مدرک تقدم شما هستند.

لایسنس

این پروژه تحت AGPL-3.0-only منتشر شده است. متن کامل در LICENSE و نشان تجاری در TRADEMARK.md.

هستهٔ تونل کار CluvexStudio است. بسته‌بندی OpenWrt و رابط کاربری فارسی در این مخزن نگهداری می‌شود. جزئیات در NOTICE.


💚 حمایت از این پروژه

اگر این پروژه به کارتان آمده، می‌توانید با واریز تتر از آن حمایت کنید:

USDT (تتر) — فقط شبکه BEP20 (BSC)

0x56daaa6b76d88ee0c8dba8042121f4b77de0a813

⚠️ این آدرس فقط برای واریز تتر در شبکه BEP20 (BSC) است. واریز ارز دیگر یا از شبکه دیگر به این آدرس از دست می‌رود.

About

A rust core proxy client for openwrt routers and more

Topics

Resources

Stars

21 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages