▀▀█▀▀ █ █ █▄ █ █▄ █ █▀▀ █ █▀▀ █▀█ █▀█ █▀▀ █▀▀
█ █ █ █ ▀█ █ ▀█ █▀▀ █ █▀ █ █ █▀█ █ █ █▀▀
█ ▀▀ █ █ █ █ ▀▀▀ ▀▀▀ █ ▀▀▀ █ █ ▀▀▀ ▀▀▀
کاملترین مدیر تانل SSH در یک فایل
یک اسکریپت. همه انواع تانل. رابط کاربری کامل. داشبورد زنده..
SOCKS5 • Local Forward • Remote Forward • Jump Host • رمزنگاری TLS • ربات تلگرام • Kill Switch • محافظت DNS
---
## شروع سریع
**نصب با یک دستور:**
```bash
curl -fsSL https://git.samnet.dev/SamNet-dev/tunnelforge/raw/branch/main/tunnelforge.sh -o tunnelforge.sh && sudo bash tunnelforge.sh install
```
جایگزین (میرور، برای مناطق محدود):
```bash
curl -fsSL https://samnet-mirror.98samh.workers.dev/SamNet-dev/tunnelforge/raw/branch/main/tunnelforge.sh -o tunnelforge.sh && sudo bash tunnelforge.sh install
```
**یا کلون ریپو:**
```bash
git clone https://git.samnet.dev/SamNet-dev/tunnelforge.git
cd tunnelforge
sudo bash tunnelforge.sh install
```
**اجرای منوی تعاملی:**
```bash
tunnelforge menu
```
**یا استفاده مستقیم از CLI:**
```bash
tunnelforge create # ساخت اولین تانل
tunnelforge start my-tunnel # شروع تانل
tunnelforge dashboard # داشبورد زنده
```
رابط کاربری تعاملی — مدیریت تانلها، امنیت، سرویسها و بیشتر از یک منو
---
## چرا TunnelForge؟
بیشتر ابزارهای مدیریت تانل SSH یا خیلی ساده هستند (فقط یک wrapper روی `ssh -D`) یا خیلی پیچیده (نیاز به Docker، Go، Python یا دهها فایل تنظیمات). TunnelForge متفاوت است:
| | TunnelForge | سایر ابزارها |
|---|---|---|
| **نصب** | یک فایل bash، بدون وابستگی | Python/Go/Node.js + package manager |
| **رابط کاربری** | منوی TUI کامل + CLI + داشبورد زنده | فقط CLI یا Web UI |
| **امنیت** | محافظت DNS، کیل سوییچ، امتیازدهی امنیتی | فقط SSH ساده |
| **رمزنگاری** | پوشش TLS + PSK برای عبور از DPI | ندارد |
| **مانیتورینگ** | نمودار پهنای باند لحظهای | فایلهای لاگ |
| **اطلاعرسانی** | ربات تلگرام با دستورات ریموت | ندارد |
| **پایداری** | سرویس systemd خودکار | تنظیم دستی |
| **آموزش** | منوی یادگیری داخلی با دیاگرام | مستندات خارجی |
| **اشتراکگذاری** | تولید اسکریپت اتصال (Linux + Windows) | تنظیم دستی |
**TunnelForge کاملترین مدیر تانل SSH موجود در یک فایل است.**
---
مروری بر امکانات
### مدیریت تانل
- **پراکسی SOCKS5 داینامیک** (`-D`) — مسیریابی تمام ترافیک از طریق سرور SSH
- **Port Forwarding محلی** (`-L`) — دسترسی محلی به سرویسهای ریموت
- **Port Forwarding معکوس** (`-R`) — نمایش سرویسهای محلی به بیرون
- **Jump Host / چند مرحلهای** (`-J`) — عبور از سرورهای واسط
- **AutoSSH** — اتصال مجدد خودکار
- **ControlMaster** — استفاده مجدد از اتصالات SSH
- **چند تانل همزمان** — اجرای دهها تانل به صورت موازی
### امنیت
- **محافظت از نشت DNS** — بازنویسی resolv.conf + قفل با `chattr`
- **کیل سوییچ** — مسدود کردن تمام ترافیک در صورت قطع تانل (IPv4 + IPv6)
- **ممیزی امنیتی ۶ نقطهای** — ارزیابی امتیازی وضعیت امنیتی
- **تولید کلید SSH** — ساخت کلیدهای ed25519، RSA یا ECDSA
- **استقرار کلید SSH** — ارسال کلید به سرور با یک دستور
- **تأیید اثرانگشت سرور** — بررسی هویت سرور قبل از اتصال
- **سختسازی سرور** — تنظیم خودکار sshd، فایروال، fail2ban و sysctl
### مانیتورینگ و داشبورد
- **داشبورد TUI زنده** — وضعیت لحظهای تانلها با رفرش خودکار
- **نمودار پهنای باند Sparkline** — نمودارهای ASCII (▁▂▃▄▅▆▇█) برای RX/TX
- **شمارنده ترافیک** — کل بایتهای ارسال و دریافت هر تانل
- **ردیابی Uptime** — نمایش زمان اتصال هر تانل
- **کیفیت اتصال** — اندازهگیری تأخیر با نشانگر رنگی
- **تست سرعت** — تست سرعت دانلود داخلی از طریق تانل
- **صفحهبندی** — ناوبری در صفحات مختلف برای تانلهای زیاد
داشبورد زنده با نمودار پهنای باند، اتصالات فعال، لاگ اتصال مجدد و منابع سیستم
### ربات تلگرام
- **اعلانهای لحظهای** — شروع، توقف، خطا، اتصال مجدد
- **دستورات ریموت** — `/tf_status`، `/tf_list`، `/tf_ip`، `/tf_config` و بیشتر
- **گزارشهای دورهای** — ارسال زمانبندی شده وضعیت به گوشی
- **اشتراکگذاری** — ارسال اسکریپت اتصال + PSK از طریق تلگرام
- **مسیریابی SOCKS5** — ربات از طریق تانل کار میکند وقتی تلگرام مسدود است
### رمزنگاری TLS (ضد سانسور)
- **پوشش TLS خروجی** — ترافیک SSH به شکل HTTPS از طریق stunnel
- **محافظت PSK ورودی** — لیسنر SOCKS5 با کلید پیشاشتراکی
- **تولید اسکریپت کلاینت** — ساخت خودکار اسکریپت اتصال برای Linux + Windows
- **راهاندازی خودکار سرور** — نصب و پیکربندی stunnel با یک دستور
- **عبور از DPI** — ترافیک مانند HTTPS معمولی روی پورت 443
### یکپارچگی سیستم
- **تولیدکننده سرویس Systemd** — ساخت خودکار فایلهای unit امن
- **پشتیبانگیری و بازیابی** — بکاپ کامل تنظیمات با چرخش
- **ویزارد سختسازی سرور** — آمادهسازی سرور تازه برای دریافت تانل
- **مدیریت پروفایل** — ساخت، ویرایش، حذف، وارد کردن پروفایل
- **مدیریت لاگ** — لاگ مجزا برای هر تانل با چرخش
- **حذف کامل** — پاکسازی تمام فایلها، سرویسها و تنظیمات
### آموزش داخلی
- **منوی یادگیری** — ۹ درس تعاملی درباره مفاهیم تانل SSH
- **سناریوهای واقعی** — راهنمای گام به گام با دیاگرام
- **دیاگرامهای ASCII** — نمایش بصری جریان ترافیک
---
انواع تانل
### پراکسی SOCKS5 داینامیک (`-D`)
**تمام** ترافیک TCP خود را از طریق سرور SSH مسیریابی کنید. ترافیک شما از IP سرور ارسال میشود.
```
Client :1080 ──── SSH (Encrypted) ────► Server ──── Direct ────► Internet
```
**کاربردها:** مرور خصوصی، عبور از محدودیتهای جغرافیایی، مخفی کردن IP، مسیریابی ترافیک.
```bash
tunnelforge create # انتخاب "SOCKS5 Proxy" → پورت 1080
tunnelforge start my-proxy
curl --socks5-hostname 127.0.0.1:1080 https://ifconfig.me
```
---
### Port Forwarding محلی (`-L`)
به یک **سرویس ریموت** دسترسی پیدا کنید انگار روی سیستم خودتان اجرا میشود.
```
Client :3306 ──── SSH (Encrypted) ────► Server ──── Local ────► MySQL :3306
```
**کاربردها:** دسترسی به دیتابیس ریموت، وب اپلیکیشنهای داخلی، پنلهای مدیریتی پشت فایروال.
```bash
tunnelforge create # انتخاب "Local Forward" → محلی 3306 → ریموت db:3306
tunnelforge start db-tunnel
mysql -h 127.0.0.1 -P 3306 -u admin -p
```
---
### Port Forwarding معکوس (`-R`)
یک **سرویس محلی** را از طریق سرور SSH در دسترس دنیای بیرون قرار دهید.
```
Local App :3000 ◄──── SSH (Encrypted) ────► Server :9090 ◄──── Users
```
**کاربردها:** توسعه webhook، اشتراکگذاری اپ برای تست، عبور از NAT، دمو به مشتری.
```bash
tunnelforge create # انتخاب "Remote Forward" → ریموت 9090 ← محلی 3000
tunnelforge start dev-share
```
---
### Jump Host / چند مرحلهای (`-J`)
به سرورهایی که پشت **چندین لایه** فایروال هستند از طریق سرورهای واسط دسترسی پیدا کنید.
```
Client ── SSH ──► Jump 1 ── SSH ──► Jump 2 ── SSH ──► Target
```
**کاربردها:** شبکههای سازمانی، معماری چند لایه، محیطهای ایزوله، مناطق امنیتی.
---
نصب
### پیشنیازها
| پیشنیاز | جزئیات |
|---|---|
| **سیستم عامل** | Linux (Ubuntu، Debian، CentOS، Fedora، Arch، Alpine) |
| **Bash** | نسخه ۴.۳ یا بالاتر |
| **دسترسی** | دسترسی root برای نصب |
| **SSH** | کلاینت OpenSSH (در اکثر سیستمها نصب است) |
| **اختیاری** | `autossh` (اتصال مجدد خودکار)، `stunnel` (رمزنگاری TLS)، `sshpass` (احراز هویت با رمز) |
### نصب
```bash
# روش ۱: کلون از Git
git clone https://git.samnet.dev/SamNet-dev/tunnelforge.git
cd tunnelforge
sudo bash tunnelforge.sh install
# روش ۲: دانلود مستقیم
curl -fsSL https://git.samnet.dev/SamNet-dev/tunnelforge/raw/branch/main/tunnelforge.sh -o tunnelforge.sh
sudo bash tunnelforge.sh install
```
جایگزین (میرور، برای مناطق محدود):
```bash
curl -fsSL https://samnet-mirror.98samh.workers.dev/SamNet-dev/tunnelforge/raw/branch/main/tunnelforge.sh -o tunnelforge.sh && sudo bash tunnelforge.sh install
```
### تأیید نصب
```bash
tunnelforge version
# TunnelForge v1.0.0
```
### ساختار دایرکتوری
```
/opt/tunnelforge/
├── tunnelforge.sh # اسکریپت اصلی
├── config/
│ └── tunnelforge.conf # تنظیمات کلی
├── profiles/
│ └── *.conf # پروفایل تانلها
├── pids/ # فایلهای PID تانلهای فعال
├── logs/ # لاگ هر تانل
├── backups/ # فایلهای پشتیبان
├── data/
│ ├── bandwidth/ # تاریخچه پهنای باند
│ └── reconnects/ # آمار اتصال مجدد
└── sockets/ # سوکتهای ControlMaster
```
---
مثالهای سریع
### مرور خصوصی با SOCKS5
```bash
tunnelforge create
# → نام: private-proxy
# → نوع: SOCKS5
# → سرور: user@myserver.com
# → پورت: 1080
tunnelforge start private-proxy
curl --socks5-hostname 127.0.0.1:1080 https://ifconfig.me
# تنظیم فایرفاکس: Settings → Network → Manual Proxy → SOCKS5: 127.0.0.1:1080
```
### دسترسی به دیتابیس ریموت
```bash
tunnelforge create
# → نام: prod-db
# → نوع: Local Forward
# → سرور: admin@db-server.internal
# → پورت محلی: 3306 → ریموت: localhost:3306
tunnelforge start prod-db
mysql -h 127.0.0.1 -P 3306 -u dbuser -p
```
### اشتراکگذاری سرور توسعه
```bash
tunnelforge create
# → نام: demo-share
# → نوع: Remote Forward
# → سرور: user@public-vps.com
# → پورت ریموت: 8080 ← محلی: localhost:3000
tunnelforge start demo-share
# لینک اشتراک: http://public-vps.com:8080
```
### عبور از سانسور با رمزنگاری TLS
```bash
# ۱. راهاندازی stunnel روی VPS
tunnelforge obfs-setup my-tunnel
# ۲. شروع تانل — SSH حالا در TLS پورت 443 پوشش داده شده
tunnelforge start my-tunnel
# DPI میبیند: ترافیک HTTPS عادی
# واقعیت: تانل SSH داخل TLS
# ۳. اشتراک با دیگران
tunnelforge client-script my-tunnel # تولید اسکریپت اتصال
tunnelforge telegram share my-tunnel # ارسال از طریق تلگرام
```
---
مرجع دستورات CLI
### دستورات تانل
| دستور | توضیح |
|---|---|
| `tunnelforge start ` | شروع تانل |
| `tunnelforge stop ` | توقف تانل |
| `tunnelforge restart ` | راهاندازی مجدد |
| `tunnelforge start-all` | شروع همه تانلهای خودکار |
| `tunnelforge stop-all` | توقف همه تانلها |
| `tunnelforge status` | نمایش وضعیت |
| `tunnelforge dashboard` | داشبورد زنده |
| `tunnelforge logs [name]` | مشاهده لاگ |
### دستورات پروفایل
| دستور | توضیح |
|---|---|
| `tunnelforge create` | ساخت پروفایل جدید (ویزارد) |
| `tunnelforge list` | لیست پروفایلها |
| `tunnelforge delete ` | حذف پروفایل |
### دستورات امنیتی
| دستور | توضیح |
|---|---|
| `tunnelforge audit` | ممیزی امنیتی ۶ نقطهای |
| `tunnelforge key-gen [type]` | تولید کلید SSH |
| `tunnelforge key-deploy ` | استقرار کلید روی سرور |
| `tunnelforge fingerprint ` | بررسی اثرانگشت سرور |
### دستورات تلگرام
| دستور | توضیح |
|---|---|
| `tunnelforge telegram setup` | پیکربندی ربات |
| `tunnelforge telegram test` | ارسال پیام آزمایشی |
| `tunnelforge telegram status` | نمایش تنظیمات |
| `tunnelforge telegram send ` | ارسال پیام |
| `tunnelforge telegram report` | ارسال گزارش وضعیت |
| `tunnelforge telegram share [name]` | اشتراک اسکریپتها |
### دستورات سرویس
| دستور | توضیح |
|---|---|
| `tunnelforge service ` | تولید سرویس systemd |
| `tunnelforge service enable` | فعالسازی سرویس |
| `tunnelforge service disable` | غیرفعالسازی |
| `tunnelforge service status` | وضعیت سرویس |
| `tunnelforge service remove` | حذف سرویس |
### دستورات سیستم
| دستور | توضیح |
|---|---|
| `tunnelforge menu` | منوی تعاملی |
| `tunnelforge install` | نصب TunnelForge |
| `tunnelforge server-setup` | سختسازی سرور |
| `tunnelforge obfs-setup ` | راهاندازی رمزنگاری TLS |
| `tunnelforge client-config ` | نمایش تنظیمات کلاینت |
| `tunnelforge client-script ` | تولید اسکریپت کلاینت |
| `tunnelforge backup` | پشتیبانگیری |
| `tunnelforge restore [file]` | بازیابی |
| `tunnelforge uninstall` | حذف کامل |
| `tunnelforge version` | نمایش نسخه |
| `tunnelforge help` | راهنما |
---
امنیت
### محافظت از نشت DNS
از ارسال درخواستهای DNS خارج از تانل جلوگیری میکند.
**نحوه کار:**
1. از `/etc/resolv.conf` فعلی بکاپ میگیرد
2. آن را با سرورهای DNS امن بازنویسی میکند (پیشفرض: 8.8.8.8)
3. فایل را با `chattr +i` قفل میکند تا سیستم نتواند آن را تغییر دهد
4. هنگام توقف تانل، DNS اصلی بازیابی میشود
### کیل سوییچ
اگر تانل قطع شود، **تمام ترافیک اینترنت مسدود میشود**.
**نحوه کار:**
1. زنجیره iptables سفارشی `TUNNELFORGE` ایجاد میکند
2. فقط ترافیک تانل SSH + loopback مجاز است
3. بقیه ترافیک مسدود (IPv4 + IPv6)
4. هنگام توقف تانل، قوانین حذف میشوند
### ممیزی امنیتی ۶ نقطهای
```bash
tunnelforge audit
```
| بررسی | توضیح |
|---|---|
| مجوزهای کلید SSH | بررسی 600 یا 400 بودن |
| دایرکتوری SSH | تأیید 700 بودن `~/.ssh` |
| محافظت DNS | وضعیت محافظت فعال |
| کیل سوییچ | فعال بودن زنجیره iptables |
| سلامت تانل | بررسی اعتبار PIDها |
| بستههای سیستم | ابزارهای امنیتی نصب شده |
### سختسازی سرور
```bash
tunnelforge server-setup
```
**تنظیمات:**
- **SSH** — غیرفعالسازی احراز هویت رمز عبور، غیرفعالسازی root login
- **فایروال** — قوانین UFW/iptables فقط برای SSH + پورتهای تانل
- **Fail2ban** — مسدودسازی خودکار بعد از تلاشهای ناموفق
- **Kernel** — سختسازی sysctl (محافظت SYN flood، ICMP)
---
رمزنگاری TLS (ضد سانسور)
در شبکههایی که بازرسی عمیق بسته (DPI) دارند، ترافیک SSH قابل شناسایی و مسدودسازی است. TunnelForge اتصال SSH شما را داخل یک لایه TLS میپیچد تا مانند ترافیک HTTPS عادی به نظر برسد.
### نحوه کار
```
بدون رمزنگاری TLS:
Client ──── SSH (قابل شناسایی) ────► VPS ← DPI میتواند مسدود کند
با رمزنگاری TLS:
Client ──── TLS/443 (شبیه HTTPS) ────► VPS ──── SSH ────► اینترنت
```
### راهاندازی سمت سرور
```bash
tunnelforge obfs-setup my-tunnel
```
این دستور به صورت خودکار:
1. `stunnel` را روی سرور ریموت نصب میکند
2. گواهی TLS خودامضا تولید میکند
3. پورت 443 (TLS) را به پورت 22 (SSH) مپ میکند
4. سرویس systemd فعال میکند
5. پورت فایروال باز میکند
### اشتراکگذاری با دیگران
```bash
# تولید اسکریپت برای Linux + Windows
tunnelforge client-script my-tunnel
# ارسال از طریق تلگرام
tunnelforge telegram share my-tunnel
```
اسکریپتهای تولید شده شامل تنظیمات stunnel، فایل PSK و مدیریت کامل اتصال هستند.
### کلاینت مستقل ویندوز
فایل **[`windows-client/tunnelforge-client.bat`](windows-client/tunnelforge-client.bat)** یک کلاینت مستقل ویندوز است که در ریپو موجود است. کاربران فقط دابلکلیک میکنند، اطلاعات اتصال را وارد میکنند و متصل میشوند. نیازی به PowerShell نیست.
**امکانات:**
- تنظیم تعاملی — سرور، پورت و PSK را میپرسد
- نصب خودکار stunnel (از طریق winget، Chocolatey یا لینک دانلود)
- ذخیره اتصال برای اتصال مجدد فوری
- دستورات: `tunnelforge-client.bat stop` / `status`
- نمایش تنظیمات پراکسی مرورگر (Firefox + Chrome)
```
توزیع:
1. فایل windows-client/tunnelforge-client.bat را به کاربر بدهید
2. اطلاعات PSK + سرور را بدهید (از: tunnelforge client-config
)
3. کاربر دابلکلیک → اطلاعات وارد → متصل
```
---
ربات تلگرام
اطلاعرسانی لحظهای تانلها روی گوشی و کنترل ریموت.
### راهاندازی
```bash
tunnelforge telegram setup
```
1. **ساخت ربات** — به [@BotFather](https://t.me/BotFather) پیام دهید و `/newbot` ارسال کنید
2. **وارد کردن توکن** — توکن ربات را در TunnelForge وارد کنید
3. **دریافت Chat ID** — به ربات `/start` ارسال کنید، TunnelForge خودکار شناسایی میکند
4. **تمام** — پیام آزمایشی تأیید ارسال میشود
### اعلانها
| رویداد | پیام |
|---|---|
| شروع تانل | نام، PID، نوع تانل |
| توقف تانل | نام پروفایل |
| خطای تانل | جزئیات خطا |
| اتصال مجدد | بازیابی خودکار AutoSSH |
| هشدار امنیتی | نشت DNS یا کیل سوییچ |
| گزارش وضعیت | مرور کلی تمام تانلها |
### دستورات ربات
| دستور | پاسخ |
|---|---|
| `/tf_status` | وضعیت تمام تانلها |
| `/tf_list` | لیست پروفایلها |
| `/tf_ip` | IP عمومی سرور |
| `/tf_config` | تنظیمات اتصال کلاینت |
| `/tf_uptime` | مدت فعالیت سرور |
| `/tf_report` | گزارش کامل وضعیت |
| `/tf_help` | لیست دستورات |
---
سرویس Systemd
تانلها را مقاوم در برابر ریبوت کنید:
```bash
tunnelforge service my-tunnel # تولید فایل سرویس
tunnelforge service my-tunnel enable # فعالسازی و شروع
tunnelforge service my-tunnel status # بررسی وضعیت
tunnelforge service my-tunnel disable # غیرفعالسازی
tunnelforge service my-tunnel remove # حذف سرویس
```
فایل سرویس تولید شده شامل سختسازی امنیتی (`ProtectSystem`، `PrivateTmp`، قابلیتهای محدود) است.
---
پشتیبانگیری و بازیابی
```bash
# پشتیبانگیری
tunnelforge backup
# بازیابی
tunnelforge restore
tunnelforge restore /path/to/backup.tar.gz
```
شامل: پروفایلها، تنظیمات، کلیدهای SSH و فایلهای سرویس systemd.
---
سناریوهای واقعی
هر سناریو قابل باز شدن است و **مراحل دقیق ویزارد** را نشان میدهد. هم نسخه SSH معمولی و هم TLS رمزنگاری شده پوشش داده شده.
سناریو ۱: مرور خصوصی با SOCKS5
**هدف:** ترافیک مرورگر را از طریق VPS مسیریابی کنید تا سایتها IP سرور را ببینند نه IP واقعی شما.
**پیشنیاز:** یک سرور VPS با دسترسی SSH.
#### مراحل ویزارد (SSH معمولی)
```
tunnelforge create
```
| مرحله | سوال | چه وارد کنید |
|---|---|---|
| 1 | Profile name | `private-proxy` |
| 2 | Tunnel type | `1` — SOCKS5 Proxy |
| 3 | SSH host | IP سرور (مثلاً `45.33.32.10`) |
| 4 | SSH port | `22` |
| 5 | SSH user | `root` |
| 6 | SSH password | رمز عبور (یا Enter برای کلید SSH) |
| 7 | Identity key | `~/.ssh/id_ed25519` (یا Enter) |
| 8 | Auth test | خودکار |
| 9a | Bind address | `127.0.0.1` |
| 9b | SOCKS5 port | `1080` |
| 10 | Connection mode | `1` — Regular SSH |
| 11 | Inbound protection | `1` — None |
| 12 | AutoSSH | `y` |
| 13 | Save & start | `y` سپس `y` |
#### مراحل ویزارد (TLS رمزنگاری — برای شبکه سانسور شده)
مانند بالا، اما در مرحله ۱۰:
| مرحله | سوال | چه وارد کنید |
|---|---|---|
| 10 | Connection mode | `2` — TLS Encrypted |
| 10a | TLS port | `443` (شبیه HTTPS) |
| 10b | Setup stunnel now? | `y` (نصب خودکار روی سرور) |
#### بعد از شروع
**Firefox:** Settings → proxy → SOCKS Host: `127.0.0.1` Port: `1080`
**Chrome:**
```bash
google-chrome --proxy-server="socks5://127.0.0.1:1080"
```
**تست:**
```bash
curl --socks5-hostname 127.0.0.1:1080 https://ifconfig.me
```
سناریو ۲: دسترسی به دیتابیس ریموت
**هدف:** به MySQL/PostgreSQL روی VPS دسترسی پیدا کنید انگار روی سیستم خودتان اجرا میشود.
**پیشنیاز:** یک VPS با دیتابیس فعال.
#### مراحل ویزارد
```
tunnelforge create
```
| مرحله | سوال | چه وارد کنید |
|---|---|---|
| 1 | Profile name | `prod-db` |
| 2 | Tunnel type | `2` — Local Port Forward |
| 3 | SSH host | IP سرور (مثلاً `45.33.32.10`) |
| 4 | SSH port | `22` |
| 5 | SSH user | `root` |
| 6 | SSH password | رمز عبور |
| 7 | Identity key | Enter |
| 8 | Auth test | خودکار |
| 9a | Bind address | `127.0.0.1` |
| 9b | Local port | `3306` (پورت روی سیستم شما) |
| 9c | Remote host | `127.0.0.1` (یعنی "روی خود VPS") |
| 9d | Remote port | `3306` (پورت MySQL روی VPS) |
| 10 | Connection mode | `1` — Regular SSH |
| 11 | Inbound protection | `1` — None |
| 12 | AutoSSH | `y` |
| 13 | Save & start | `y` سپس `y` |
#### بعد از شروع
```bash
mysql -h 127.0.0.1 -P 3306 -u dbuser -p # MySQL
psql -h 127.0.0.1 -p 5432 -U postgres # PostgreSQL
redis-cli -h 127.0.0.1 -p 6379 # Redis
```
| سرویس | پورت محلی | پورت ریموت |
|---|---|---|
| MySQL | 3306 | 3306 |
| PostgreSQL | 5432 | 5432 |
| Redis | 6379 | 6379 |
| پنل وب | 8080 | 8080 |
سناریو ۳: اشتراکگذاری سرور توسعه
**هدف:** وبسایت محلی (مثلاً پورت 3000) را از طریق VPS در دسترس اینترنت قرار دهید.
**پیشنیاز:** یک سرویس محلی فعال + VPS با IP عمومی.
#### مراحل ویزارد
```
tunnelforge create
```
| مرحله | سوال | چه وارد کنید |
|---|---|---|
| 1 | Profile name | `dev-share` |
| 2 | Tunnel type | `3` — Remote/Reverse Forward |
| 3 | SSH host | IP سرور (مثلاً `45.33.32.10`) |
| 4-8 | SSH credentials | مانند سناریوهای قبل |
| 9a | Remote bind | `0.0.0.0` (دسترسی عمومی) |
| 9b | Remote port | `9090` (پورت روی VPS) |
| 9c | Local host | `127.0.0.1` |
| 9d | Local port | `3000` (اپ شما) |
| 10 | Connection mode | `1` — Regular SSH |
| 12 | AutoSSH | `y` |
| 13 | Save & start | `y` سپس `y` |
**مهم:** اگر bind روی `0.0.0.0` است، باید `GatewayPorts yes` در sshd سرور فعال باشد.
#### بعد از شروع
```bash
# تست از هرجا:
curl http://45.33.32.10:9090
# لینک اشتراک: http://45.33.32.10:9090
```
سناریو ۴: عبور از چند فایروال (Jump Host)
**هدف:** به سروری که مستقیماً از اینترنت قابل دسترسی نیست از طریق سرورهای واسط (bastion) دسترسی پیدا کنید.
#### مراحل ویزارد (SOCKS5 در مقصد)
```
tunnelforge create
```
| مرحله | سوال | چه وارد کنید |
|---|---|---|
| 1 | Profile name | `corp-access` |
| 2 | Tunnel type | `4` — Jump Host |
| 3 | SSH host | IP **مقصد** (مثلاً `10.0.50.100`) |
| 4 | SSH port | `22` |
| 5 | SSH user | `admin` (کاربر روی **مقصد**) |
| 6 | SSH password | رمز **مقصد** |
| 8 | Auth test | ممکن است خطا بدهد — ادامه دهید |
| 9a | Jump hosts | `root@bastion.example.com:22` |
| 9b | Tunnel type at destination | `1` — SOCKS5 |
| 9c | Bind address | `127.0.0.1` |
| 9d | SOCKS5 port | `1080` |
| 10 | Connection mode | `1` — Regular SSH |
| 13 | Save & start | `y` سپس `y` |
> **مهم:** مراحل ۳ تا ۷ برای سرور **مقصد** هستند. اطلاعات سرور واسط در مرحله 9a وارد میشود.
#### چند سرور واسط
```
Jump hosts: user1@hop1.com:22,user2@hop2.com:22
```
سناریو ۵: عبور از سانسور DPI (یک VPS)
**هدف:** ISP شما SSH را شناسایی و مسدود میکند. SSH را در TLS بپیچید تا مانند HTTPS عادی به نظر برسد.
```
بدون TLS: PC ──── SSH (مسدود توسط DPI) ────► VPS
با TLS: PC ──── TLS/443 (شبیه HTTPS) ────► VPS ──► Internet
```
#### مراحل ویزارد
```
tunnelforge create
```
| مرحله | سوال | چه وارد کنید |
|---|---|---|
| 1 | Profile name | `bypass-proxy` |
| 2 | Tunnel type | `1` — SOCKS5 Proxy |
| 3 | SSH host | IP سرور خارج از کشور |
| 4-8 | SSH credentials | مانند سناریوهای قبل |
| 9a | Bind address | `127.0.0.1` |
| 9b | SOCKS5 port | `1080` |
| **10** | **Connection mode** | **`2` — TLS Encrypted** |
| 10a | TLS port | `443` (شبیه HTTPS) |
| 10b | Setup stunnel? | `y` (نصب خودکار) |
| 11 | Inbound protection | `1` — None |
| 12 | AutoSSH | `y` |
| 13 | Save & start | `y` سپس `y` |
#### DPI چه میبیند
```
PC ──── HTTPS:443 ──► VPS IP
نتیجه: ترافیک عادی وب. مجاز.
```
سناریو ۶: زنجیره دو سرور TLS
**هدف:** پراکسی اشتراکی برای چند کاربر. VPS-A = ورودی (relay). VPS-B = خروجی. هر دو مسیر TLS رمزنگاری شده.
```
Users ── TLS+PSK:1443 ──► VPS-A ── TLS:443 ──► VPS-B ──► Internet
```
#### مراحل ویزارد (اجرا روی VPS-A)
```
tunnelforge create
```
| مرحله | سوال | چه وارد کنید |
|---|---|---|
| 1 | Profile name | `double-hop` |
| 2 | Tunnel type | `1` — SOCKS5 |
| 3 | SSH host | IP **VPS-B** |
| 4-8 | SSH credentials | اطلاعات VPS-B |
| 9a | Bind address | `127.0.0.1` |
| 9b | SOCKS5 port | `1080` |
| **10** | **Connection mode** | **`2` — TLS Encrypted** |
| 10a | TLS port | `443` |
| 10b | Setup stunnel on VPS-B? | `y` |
| **11** | **Inbound protection** | **`2` — TLS + PSK** |
| 11a | Inbound TLS port | `1443` |
| 11b | PSK | خودکار تولید میشود |
| 12 | AutoSSH | `y` |
| 13 | Save & start | `y` سپس `y` |
#### تولید اسکریپت برای کاربران
```bash
tunnelforge client-script double-hop # تولید اسکریپت
tunnelforge telegram share double-hop # ارسال با تلگرام
```
#### کاربران چه میکنند
```bash
# Linux:
./tunnelforge-connect.sh # اتصال
./tunnelforge-connect.sh stop # قطع
# پراکسی مرورگر: 127.0.0.1:1080
```
```powershell
# Windows PowerShell:
powershell -ExecutionPolicy Bypass -File tunnelforge-connect.ps1
# پراکسی مرورگر: 127.0.0.1:1080
```
```
# Windows Batch (کلاینت مستقل):
tunnelforge-client.bat # دابلکلیک، سرور/پورت/PSK وارد کنید
tunnelforge-client.bat stop # قطع
tunnelforge-client.bat status # بررسی
# پراکسی مرورگر: 127.0.0.1:1080
```
سناریو ۷: اشتراک تانل با دیگران
**هدف:** تانل TLS+PSK فعال دارید و میخواهید دیگران هم استفاده کنند. TunnelForge یک اسکریپت مستقل تولید میکند.
**پیشنیاز:** تانل فعال با Inbound TLS+PSK (سناریو ۵ یا ۶).
#### مرحله ۱ — تولید اسکریپت
```bash
tunnelforge client-script my-tunnel
```
دو فایل تولید میشود:
- `tunnelforge-connect.sh` — برای Linux/Mac
- `tunnelforge-connect.ps1` — برای Windows PowerShell
**یا از کلاینت مستقل ویندوز استفاده کنید:** فایل `windows-client/tunnelforge-client.bat` را از ریپو به کاربر بدهید — فقط دابلکلیک، اطلاعات اتصال وارد، متصل. نیازی به تولید اسکریپت نیست.
#### مرحله ۲ — ارسال به کاربران
```bash
tunnelforge telegram share my-tunnel # ارسال با تلگرام
```
یا از طریق واتساپ، ایمیل، فلش و غیره.
برای کاربران ویندوز: فایل `windows-client/tunnelforge-client.bat` را هم بفرستید (یا فقط فایل bat با اطلاعات PSK کافیست).
#### مرحله ۳ — اجرا توسط کاربر
```bash
# Linux:
chmod +x tunnelforge-connect.sh
./tunnelforge-connect.sh # اتصال (stunnel خودکار نصب میشود)
./tunnelforge-connect.sh stop # قطع
./tunnelforge-connect.sh status # بررسی وضعیت
# پراکسی مرورگر: 127.0.0.1:1080
```
```powershell
# Windows PowerShell:
powershell -ExecutionPolicy Bypass -File tunnelforge-connect.ps1
powershell -ExecutionPolicy Bypass -File tunnelforge-connect.ps1 stop
powershell -ExecutionPolicy Bypass -File tunnelforge-connect.ps1 status
# پراکسی مرورگر: 127.0.0.1:1080
```
```
# Windows Batch (کلاینت مستقل):
tunnelforge-client.bat # دابلکلیک، سرور/پورت/PSK وارد کنید
tunnelforge-client.bat stop # قطع
tunnelforge-client.bat status # بررسی
# پراکسی مرورگر: 127.0.0.1:1080
```
#### لغو دسترسی کاربر
1. PSK را در پروفایل تغییر دهید
2. اسکریپت جدید تولید کنید: `tunnelforge client-script my-tunnel`
3. تانل را ریستارت کنید: `tunnelforge restart my-tunnel`
4. اسکریپتهای قدیمی دیگر کار نمیکنند
---
منوی یادگیری
TunnelForge شامل سیستم آموزشی تعاملی است (کلید `l` در منوی اصلی):
| # | موضوع | توضیح |
|---|---|---|
| ۱ | تانل SSH چیست؟ | مبانی کانال رمزنگاری شده |
| ۲ | پراکسی SOCKS5 | مسیریابی ترافیک با `-D` |
| ۳ | Port Forwarding محلی | دسترسی به سرویس ریموت با `-L` |
| ۴ | Port Forwarding معکوس | نمایش سرویس محلی با `-R` |
| ۵ | Jump Host | عبور از سرورهای واسط با `-J` |
| ۶ | ControlMaster | استفاده مجدد از اتصالات |
| ۷ | AutoSSH | بازیابی خودکار تانل |
| ۸ | رمزنگاری TLS | پوشش SSH در TLS |
| ۹ | احراز هویت PSK | کلید پیشاشتراکی |
---
## مجوز و نویسنده
**TunnelForge** تحت مجوز [GNU General Public License v3.0](LICENSE) منتشر شده است.
حق نشر (C) ۲۰۲۶ **SamNet Technologies, LLC**