مدیریت جامع تونل برای عبور از DPI و فیلترینگ
اسکریپت تکفایلی Bash برای راهاندازی، مدیریت و پایش تونل بین سرور ایران و خارج (Kharej) با پشتیبانی از روشهای مستقیم (Direct) و معکوس (Reverse).
- معرفی
- امکانات
- معماری
- پیشنیازها
- نصب
- شروع سریع
- نقش سرور (ایران/خارج)
- روشهای تونلزنی
- منوی تعاملی
- مرجع دستورات CLI
- مدیریت پروفایل
- پشتیبانگیری و بازیابی
- بهینهسازی سیستم
- ساختار فایلها
- مدیریت سرویسها
- نکات امنیتی
- رفع اشکال
- حذف کامل
- مشارکت
- مجوز
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.shgit 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):
- روی سرور ایران: نقش را
Iranانتخاب کن → گزینه7) frp Reverse→ نقش server. - روی سرور خارج: نقش را
Kharejانتخاب کن → گزینه7) frp Reverse→ نقش client. - همان 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 را ببینید.
با روش 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
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) در دسترس است.
- برای frp حتماً یک
tokenقوی تنظیم کنید. - برای Chisel از
--authو--fingerprintبرای امنیت بیشتر استفاده کنید. - پورتهای استفادهنشده را با
ufwببندید. - روی سرور ایران fail2ban فعال کنید.
- بهصورت دورهای باینریها را آپدیت کنید (گزینهٔ
12— Reinstall). - فایلهای پروفایل و کانفیگ با مجوز
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.