Skip to content

iPmartNetwork/TunnelMaster

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 

Repository files navigation

🚀 TunnelMaster

مدیریت جامع تونل برای عبور از DPI و فیلترینگ

اسکریپت تک‌فایلی Bash برای راه‌اندازی، مدیریت و پایش تونل بین سرور ایران و خارج (Kharej) با پشتیبانی از روش‌های مستقیم (Direct) و معکوس (Reverse).

Shell Platform License Backends


📌 فهرست مطالب


🎯 معرفی

TunnelMaster یک ابزار مدیریت تونل است که پیچیدگی راه‌اندازی ابزارهای حرفه‌ای تونل‌زنی (Gost، Chisel، frp) را پشت یک منوی تعاملی ساده پنهان می‌کند. هدف اصلی، عبور پایدار از بازرسی عمیق بسته (DPI) و فیلترینگ با کمترین پیچیدگی برای کاربر است.

مناسب برای:

  • اتصال پایدار سرور ایران به سرور خارج (پنل، Xray، کانفیگ و ...)
  • عبور از DPI با پوشش TLS/WebSocket
  • سناریوهای IP کثیف ایران با تونل معکوس

✨ امکانات

دسته امکانات
تونل مستقیم Gost Simple، Gost WSS+MUX (ضد DPI)، Gost QUIC، Chisel
تونل معکوس Chisel Reverse، Chisel Reverse+TLS، frp Reverse، Gost Reverse WSS
نقش سرور انتخاب یک‌بارهٔ ایران/خارج و اعمال خودکار در همهٔ تونل‌ها
مدیریت پروفایل ذخیره، لیست، مشاهده، ویرایش (ویزارد و خام) و حذف هر تونل
پشتیبان‌گیری بکاپ/بازیابی کامل با چرخش خودکار و بازسازی سرویس‌ها
پایداری سرویس‌های systemd با Restart=always
بهینه‌سازی فعال‌سازی BBR و تیونینگ کرنل برای throughput بالا
نصب خودکار دانلود و نصب باینری‌ها برای amd64 / arm64 / armv7
رابط کاربری منوی تعاملی فارسی/انگلیسی + دستورات CLI

نسخهٔ باینری‌های نصب‌شده:

ابزار نسخه
Chisel 1.11.5
Gost 2.12.0
frp 0.69.1

🏗 معماری

        ┌─────────────────────┐                 ┌─────────────────────┐
        │   سرور ایران (Iran)  │                 │  سرور خارج (Kharej)  │
        │                     │   تونل امن      │                     │
   کاربران ───►│  TunnelMaster   │◄──────────────►│  TunnelMaster   │───►  سرویس‌ها
        │                     │  (Direct/Reverse) │  (Xray/پنل/کانفیگ)  │
        └─────────────────────┘                 └─────────────────────┘
  • Direct (مستقیم): ترافیک از سرور ایران به سرور خارج ارسال می‌شود (ایران = client).
  • Reverse (معکوس): سرور خارج به سرور ایران متصل می‌شود — مناسب IP کثیف و عبور از DPI (ایران = server).

📋 پیش‌نیازها

مورد جزئیات
سیستم‌عامل Ubuntu 20.04 / 22.04 / 24.04 یا Debian 11 / 12
دسترسی root (با sudo)
معماری x86_64 / aarch64 / armv7l
شبکه دسترسی به GitHub برای دانلود باینری‌ها

وابستگی‌ها (wget, curl, unzip, jq, openssl) به‌صورت خودکار نصب می‌شوند.


📥 نصب

روش ۱ — نصب با یک دستور

sudo wget -qO install.sh https://raw.githubusercontent.com/iPmartNetwork/TunnelMaster/master/install.sh \
  && sudo chmod +x install.sh \
  && sudo bash install.sh

یا با curl:

curl -fsSL https://raw.githubusercontent.com/iPmartNetwork/TunnelMaster/master/install.sh -o install.sh \
  && sudo bash install.sh

روش ۲ — کلون مخزن

git clone https://github.com/iPmartNetwork/TunnelMaster.git
cd TunnelMaster
sudo bash install.sh

در اولین اجرا، باینری‌ها نصب و سپس نقش سرور (ایران/خارج) از شما پرسیده می‌شود.


⚡ شروع سریع

# اجرای منوی تعاملی
sudo bash install.sh

# فقط نصب باینری‌ها
sudo bash install.sh install

# تعیین/تغییر نقش سرور
sudo bash install.sh role

# مشاهده وضعیت
sudo bash install.sh status

یک نمونه سناریو (Reverse با frp):

  1. روی سرور ایران: نقش را Iran انتخاب کن → گزینه 7) frp Reverse → نقش server.
  2. روی سرور خارج: نقش را Kharej انتخاب کن → گزینه 7) frp Reverse → نقش client.
  3. همان token مشترک را در هر دو وارد کن. تمام.

🌐 نقش سرور (ایران/خارج)

در اولین اجرا، اسکریپت می‌پرسد این سرور ایران است یا خارج، و انتخاب را در /etc/tunnelmaster/tunnelmaster.conf ذخیره می‌کند. پس از آن، هنگام ساخت هر تونل، نقش (server/client) به‌صورت خودکار تعیین می‌شود و دیگر نیازی به انتخاب دستی نیست.

نقش فعلی در بالای منوی اصلی نمایش داده می‌شود.

sudo bash install.sh role     # تغییر نقش سرور

نگاشت خودکار نقش:

نوع تونل روی ایران روی خارج
Direct (WSS / QUIC / Chisel) client server
Reverse (Chisel / frp / Gost) server client
Gost Simple فقط ایران (تک‌طرفه)

نکته: تونل Gost Simple فقط روی سرور ایران اجرا می‌شود؛ بقیه تونل‌ها روی هر دو سرور (هر کدام با نقش خودش) راه‌اندازی می‌شوند.


🔀 روش‌های تونل‌زنی

# روش ابزار جهت ویژگی
1 Gost Simple Gost Direct فوروارد ساده TCP/UDP، سریع، بدون رمزنگاری
2 Gost WSS + MUX ★ Gost Direct WebSocket روی TLS، شبیه HTTPS، با SNI camouflage
3 Gost QUIC Gost Direct انتقال UDP، مناسب شبکه‌های پر packet-loss
4 Chisel Chisel Direct تونل HTTP با رمزنگاری SSH و reconnect خودکار
5 Chisel Reverse Chisel Reverse WebSocket + SSH، مناسب IP کثیف ایران
6 Chisel Reverse + TLS ★ Chisel Reverse TLS + SNI، حداکثر مخفی‌کاری
7 frp Reverse ★ frp Reverse هاب چندسروری: چند خارج → یک ایران، چند پورت، داشبورد وب
8 Gost Reverse WSS ★ Gost Reverse relay + WebSocket TLS، ضد DPI قوی

★ = پیشنهادشده برای عبور از DPI.

برای توضیح کامل هر روش و سناریوهای پیشنهادی، فایل GUIDE.md را ببینید.

🌐 حالت چندسروری (Multi-Server Hub با frp)

با روش 7) frp Reverse می‌توانید چند سرور خارج را به یک سرور ایران متصل کنید، هر کدام روی پورت‌های متفاوت:

        ┌──────── Kharej-A (label: de1)  → Iran:443
Iran ───┤
(frp Hub)├──────── Kharej-B (label: fi)   → Iran:8443
        └──────── Kharej-C (label: nl)   → Iran:9443
  • روی ایران: یک‌بار هاب frp را بسازید (نقش server). در صورت تمایل داشبورد وب را فعال کنید تا همهٔ سرورهای خارجِ متصل را در یک صفحه ببینید.
  • روی هر خارج: یک کلاینت با برچسب (label) یکتا بسازید و یک یا چند پورت را هم‌زمان به هاب ایران expose کنید. همان token هاب را وارد کنید.

هر سرور خارج پروفایل جداگانهٔ خود را دارد (reverse-frpc-<label>) و از طریق منوی p (Manage Profiles) مدیریت می‌شود. جزئیات کامل در GUIDE.md.


🖥 منوی تعاملی

╔═══════════════════════════════════════════════╗
║         TunnelMaster v2.0                     ║
║     Anti-DPI Tunnel Manager                   ║
╚═══════════════════════════════════════════════╝

   Server role: IRAN (داخل)

 ── Direct Tunnels (Iran → Kharej) ──────────────
  1) Gost Simple         (TCP/UDP, no encryption)
  2) Gost WSS + MUX      (Anti-DPI, TLS, SNI camouflage) ★
  3) Gost QUIC           (UDP transport, fast)
  4) Chisel              (HTTP tunnel, SSH encryption)

 ── Reverse Tunnels (Kharej → Iran) ─────────────
  5) Chisel Reverse      (WebSocket + SSH)
  6) Chisel Reverse+TLS  (TLS + SNI, maximum stealth) ★
  7) frp Reverse         (Multi-port, auth, stable)
  8) Gost Reverse WSS    (Relay + WSS, Anti-DPI) ★

 ── System & Management ──────────────────────────
  p)  Manage Profiles    (list, start/stop, edit, remove)
  b)  Backup / Restore   (save & restore configs)
  r)  Change Server Role (Iran / Kharej)
  9)  Optimize System    (BBR + Kernel tuning)
  10) Show Status
  11) Stop/Remove a Tunnel
  12) Reinstall Binaries
  13) Uninstall Everything

  0)  Exit

🧰 مرجع دستورات CLI

sudo bash install.sh [COMMAND] [ARGS]
دستور توضیح
install نصب وابستگی‌ها و باینری‌ها
role تعیین/تغییر نقش سرور (ایران/خارج)
list لیست همهٔ پروفایل‌های تونل با وضعیت زنده
start-all شروع همهٔ تونل‌ها
stop-all توقف همهٔ تونل‌ها
backup ساخت بکاپ از کانفیگ‌ها و پروفایل‌ها
restore [FILE] بازیابی از آخرین بکاپ یا فایل مشخص
status نمایش وضعیت باینری‌ها، BBR و سرویس‌ها
optimize فعال‌سازی BBR و تیونینگ کرنل
uninstall حذف کامل (سرویس‌ها، باینری‌ها، کانفیگ‌ها)
(بدون آرگومان) اجرای منوی تعاملی

📂 مدیریت پروفایل

هر تونل هنگام ساخت به‌صورت یک فایل کانفیگ خوانا در /etc/tunnelmaster/profiles/ ذخیره می‌شود. این فایل منبع حقیقت (source of truth) آن تونل است و سرویس systemd از روی آن ساخته می‌شود.

نمونهٔ یک پروفایل:

NAME="reverse-frpc-443"
METHOD="reverse-frp"
DESC="frp Client R:443->:2083"
SERVICE="tm-reverse-frpc-443"
CREATED="2026-06-16 22:10:00"
CMD="/usr/local/bin/frpc -c /etc/tunnelmaster/frpc-443.toml"
ROLE="client"
IRAN_IP="1.2.3.4"
REMOTE_PORT="443"
LOCAL_PORT="2083"
TOKEN="secret123"

از منوی p (Manage Profiles) می‌توانید برای هر تونل:

  • مشاهده جزئیات کامل (روش، نقش، پورت‌ها، وضعیت، پارامترها)
  • Start / Stop / Restart
  • ویرایش با دو حالت:
    • Edit (wizard) — تونل حذف و ویزارد ساخت همان نوع دوباره اجرا می‌شود (ساده)
    • Edit raw conf — ویرایش مستقیم فایل پروفایل در ویرایشگر و بازسازی سرویس از روی CMD (حرفه‌ای)
  • حذف تونل (پروفایل + سرویس + فایل‌های مرتبط)
sudo bash install.sh list        # لیست همه پروفایل‌ها
sudo bash install.sh start-all   # شروع همه تونل‌ها
sudo bash install.sh stop-all    # توقف همه تونل‌ها

💾 پشتیبان‌گیری و بازیابی

بکاپ از کل پوشهٔ کانفیگ گرفته می‌شود: پروفایل‌ها، فایل‌های *.toml مربوط به frp، گواهی‌های TLS، wrapperها و فایل تنظیمات. هنگام بازیابی، سرویس‌های systemd به‌صورت خودکار از روی پروفایل‌ها بازسازی می‌شوند.

sudo bash install.sh backup            # ساخت بکاپ
sudo bash install.sh restore           # بازیابی از آخرین بکاپ
sudo bash install.sh restore FILE.tar.gz   # بازیابی از فایل مشخص
  • بکاپ‌ها در /etc/tunnelmaster/backups/ ذخیره می‌شوند.
  • چرخش خودکار: فقط ۱۰ نسخهٔ اخیر نگه‌داری می‌شود.
  • در منوی تعاملی، گزینه b (Backup / Restore) همین کارها را فراهم می‌کند.

⚙️ بهینه‌سازی سیستم

گزینهٔ 9 (یا install.sh optimize) موارد زیر را اعمال می‌کند:

  • فعال‌سازی BBR (tcp_bbr + fq)
  • افزایش بافرهای TCP تا ۶۴ مگابایت
  • فعال‌سازی TCP Fast Open
  • افزایش somaxconn، netdev_max_backlog، nf_conntrack_max
  • افزایش محدودیت file descriptor تا 1048576
  • فعال‌سازی IP forwarding (IPv4 + IPv6)

برخی تنظیمات برای اعمال کامل نیاز به ریبوت دارند.


🗂 ساختار فایل‌ها

/etc/tunnelmaster/
├── tunnelmaster.conf        # تنظیمات کلی (نقش سرور)
├── profiles/                # پروفایل هر تونل (.conf)
├── backups/                 # بکاپ‌های فشرده (tar.gz)
├── frps.toml / frpc-*.toml  # کانفیگ frp
├── server.crt / server.key  # گواهی TLS (برای Chisel TLS)
└── run-*.sh                 # wrapper scriptها (برای Gost WSS client)

/usr/local/bin/
├── chisel · gost · frps · frpc   # باینری‌ها

/etc/systemd/system/
└── tm-*.service             # سرویس‌های تونل

🔧 مدیریت سرویس‌ها

تمام تونل‌ها به‌صورت سرویس systemd با پیشوند tm- اجرا می‌شوند.

# مشاهده وضعیت همهٔ تونل‌ها
systemctl status 'tm-*'

# ری‌استارت یک تونل
systemctl restart tm-reverse-frpc-443

# مشاهدهٔ لاگ زنده
journalctl -u tm-reverse-frpc-443 -f

مدیریت ساده‌تر از طریق منوی p (Manage Profiles) در دسترس است.


🔒 نکات امنیتی

  1. برای frp حتماً یک token قوی تنظیم کنید.
  2. برای Chisel از --auth و --fingerprint برای امنیت بیشتر استفاده کنید.
  3. پورت‌های استفاده‌نشده را با ufw ببندید.
  4. روی سرور ایران fail2ban فعال کنید.
  5. به‌صورت دوره‌ای باینری‌ها را آپدیت کنید (گزینهٔ 12 — Reinstall).
  6. فایل‌های پروفایل و کانفیگ با مجوز 600 ذخیره می‌شوند (شامل token).

🩺 رفع اشکال

مشکل راه‌حل
دانلود باینری ناموفق دسترسی به GitHub را بررسی کنید؛ در صورت نیاز از DNS/پراکسی استفاده کنید
سرویس بالا نمی‌آید journalctl -u tm-<name> -f را بررسی کنید
تونل وصل نمی‌شود پورت‌ها و فایروال هر دو سرور را بررسی کنید (ufw status)
frp وصل نمی‌شود یکسان بودن token در دو سرور را بررسی کنید
تغییرات BBR اعمال نشد یک‌بار سرور را ریبوت کنید
اعتبارسنجی اسکریپت bash -n install.sh && echo OK

🧹 حذف کامل

sudo bash install.sh uninstall

این دستور همهٔ سرویس‌ها، باینری‌ها، کانفیگ‌ها و تنظیمات کرنل افزوده‌شده را پاک می‌کند.


🤝 مشارکت

Pull Requestها و Issueها در مخزن iPmartNetwork/TunnelMaster خوش‌آمد هستند. برای تغییرات بزرگ، ابتدا یک Issue باز کنید تا دربارهٔ آن گفت‌وگو شود.


📄 مجوز

این پروژه تحت مجوز MIT منتشر شده است. جزئیات در فایل LICENSE.

About

Deploy and manage multiple reverse-tunnel types from one unified toolkit

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages