یک سیستم تونل معکوس با کارایی بالا برای عبور از NAT و فایروال، با پشتیبانی از TCP/WS/WSS و حالتهای مولتیپلکس، بههمراه وبپنل نظارتی، Sniffer اختیاری و تیونینگ خودکار پارامترها.
- نسخه برنامه: v1.0.0
- زبان: Go 1.23+
- مخزن گیتهاب: Backhaul-Pro
- لایسنس: AGPL-3.0
- معرفی و معماری
- قابلیتها و مزایا
- ترنسپورتها و سناریوهای استفاده
- امنیت و احراز هویت
- وبپنل و APIهای نظارتی
- تیونینگ خودکار (Auto-Tune)
- Hot Reload پیکربندی
- Client Whitelist (محدودیت دسترسی کلاینت)
- نصب و بهروزرسانی (با استفاده از installer.sh)
- نصب دستی از سورس
- اجرای سرویس (systemd) و مدیریت سرویسها
- نمونه پیکربندی سرور و کلاینت با تیونینگ فعال
- نکات عملیاتی و عیبیابی
- ساختار کد و فایلهای مهم
- لایسنس و حمایت
Backhaul برای عبور امن و مقیاسپذیر ترافیک از پشت NAT/فایروال طراحی شده است. این سیستم از یک باینری واحد تشکیل شده که بسته به محتوای config.toml در نقش سرور یا کلاینت اجرا میشود.
-
فرایند اصلی (
main.go):- پردازش فلگها (
-c,-v,--no-auto-tune,--tune-interval) - اعمال تیونینگ موقت TCP سیستمعامل (startup)
- راهاندازی عملیات اصلی از طریق
cmd.Run - راهاندازی تیونر پویا (در صورت فعال بودن)
- Hot Reload: مانیتور خودکار فایل کانفیگ؛ تغییرات فوری و امن بدون توقف سرویس
- مدیریت خاموشی امن و Force Shutdown
- پردازش فلگها (
-
ماژول فرمان (
cmd/):- بارگذاری TOML، اعمال پیشفرضها (
cmd/defaults.go) - انتخاب نقش: سرور (
internal/server) یا کلاینت (internal/client)
- بارگذاری TOML، اعمال پیشفرضها (
-
پشته انتقالها (Transport):
- TCP, TCPMUX, WS/WSS, WSMUX/WSSMUX, UDP
- مولتیپلکسینگ با SMUX (کانفیگ پارامترهای
mux_*)
-
وبپنل و Sniffer (
internal/web/):- داشبورد HTML داخلی (Tailwind)
- Endpointهای
/,/stats,/data,/config,/api/health-score - ذخیره و ارائه گزارشهای مصرف پورتها در JSON
- HTTPS خودکار (با یا بدون گواهی)
- کارایی بالا: پیادهسازی بهینه برای تعداد زیاد اتصال همزمان.
- ترنسپورتهای متنوع:
tcp,tcpmux,ws,wss,wsmux,wssmux,udp. - مولتیپلکس (SMUX): تجمیع چند اتصال در یک تونل با کنترل جریان.
- وبپنل مانیتورینگ: آمار لحظهای سیستم و تونل + مشاهده کانفیگ جاری.
- Health Score API: نمرات سلامت سیستم Hybrid (میانگین سرور + کلاینت) برای نظارت بر عملکرد.
- Sniffer اختیاری: ثبت مصرف پورتها در فایل JSON با تبدیل خوانا.
- تیونینگ خودکار: تنظیم پویای
keepalive,mux_*,channel_size,connection_pool,heartbeat,mux_con. - Hot Reload: تغییرات کانفیگ بهصورت امن اعمال میشوند.
- HTTPS: API و Sniffer با HTTPS و گواهی خودامضاء (یا معتبر) ایمنسازی میشوند.
- PPROF: پروفایلینگ اختیاری روی پورتهای 6060/6061 (Server/Client).
توجه: در این پروژه، پشتیبانی از QUIC حذف شده است. تمرکز روی TCP/WS/WSS (+MUX) و UDP است.
- TCP: ساده و سریع؛ مناسب شبکههای پایدار.
- TCPMUX: کاهش تعداد کانکشنهای فیزیکی با چندجریانی در یک اتصال.
- WS/WSS: عبور از پروکسی/فایروالهای لایه HTTP؛ در WSS با TLS امن میشود.
- WSMUX/WSSMUX: ترکیب مزایای WS/WSS با مولتیپلکس.
- UDP: تونلکردن UDP (و یا عبور UDP روی TCP سمت سرور با
accept_udp).
سناریوها:
- بایپس محدودیتها با
wssروی پورتهای عمومی 443/8443. - تراکم اتصال بالا با
tcpmuxیاwsmux/wssmuxو تنظیمmux_*. - محیطهای محدود TCP با
ws/wssو گزینهیedge_ip(CDN-Friendly).
- توکن: تمامی درخواستهای تونل با
tokenاحراز میشوند. مقدار قوی و تصادفی تعریف کنید. - TLS (فقط WSS/WSSMUX): از گواهی معتبر استفاده کنید. نمونه ساخت گواهی خودامضاء در انتهای فایل آمده است.
- Client Whitelist: محدودیت دسترسی تونل به IPهای یا دامنههای مشخصی با کنترل دقیق، از جمله پشتیبانی از رنجهای CIDR و آدرسهای IPv6.
- وبپنل: دسترسی را محدود کنید (IP Whitelist/Firewall/Reverse Proxy) یا روی اینترفیس لوکال ارائه دهید.
با مقداردهی web_port > 0 فعال میشود. تمامی اتصالات با HTTPS محفوظ میشوند (درصورت وجود گواهی، با HTTP fallback).
/داشبورد HTML برای مشاهده کانفیگ، وضعیت تونل، و آمار سیستم/statsخروجی JSON: CPU/RAM/Disk/Swap/Traffic/BackhaulTraffic/Connections/Status/dataخروجی JSON از مصرف پورتها (فقط وقتیsniffer=true)/configکانفیگ جاری بدون فیلدهای حساس؛?type=clientبرای دریافت کانفیگ کلاینت/api/health-scoreخروجی JSON از امتیازات سلامت سیستم Hybrid (میانگین سرور + کلاینت)
نمونه پاسخ /api/health-score:
{
"resource_score": 75,
"network_score": 82,
"timestamp": 1731850000
}توضیح نمرات Hybrid:
- ResourceScore: میانگین مصرف منابع سرور و کلاینت (CPU، RAM) - بیشتر=بهتر
- NetworkScore: میانگین کیفیت شبکه سرور و کلاینت (Latency، PacketLoss، Throughput) - بیشتر=بهتر
- اگر کلاینت متصل نباشد، فقط نمرات سرور استفاده میشود
روش محاسبه:
- سرور معیارهای خود را محاسبه میکند (CPU، RAM، Latency، etc)
- سرور معیارهای کلاینت را از طریق
/api/health-scoreکلاینت دریافت میکند (توسط Tuner) - نمره نهایی = میانگین نمرات سرور و کلاینت
همگامسازی پویا (سمت کلاینت):
- کلاینت بهصورت دورهای برخی پارامترها (مانند
keepalive_periodوmux_*) را با/configسرور همگام میکند.
بهصورت پیشفرض فعال است و میتوان با --no-auto-tune غیرفعال کرد. بازه اجرای تیونینگ با --tune-interval (پیشفرض 10m) قابل تنظیم است.
- ورودیهای تصمیم: CPU، RAM، Latency (TCP Dial)، Packet Loss، Throughput
- خروجیهای تنظیم:
- سمت کلاینت:
connection_pool - سمت سرور:
channel_size,mux_*(framesize/receivebuffer/streambuffer),heartbeat,mux_con - هر دو:
keepalive_periodو همگامسازی آنها
- سمت کلاینت:
- تنظیم پویا و تغییر بازه تیونینگ بر اساس پایداری شبکه (Variance/Avg)
فایل مشخصشده با -c پایش میشود؛ با تغییر زمان ویرایش:
- توقف امن instance قبلی (cancel context) و ایجاد instance جدید
- توقف/راهاندازی مجدد Tuner در صورت فعال بودن
پشتیبانی از خطا و بازگشت خودکار:
- اگر تغییری از طریق API یا مستقیم در فایل انجام شود و باعث خطا در برنامه گردد، سیستم خودکار کانفیگ را به آخرین نسخهی موفق بازمیگرداند
- این ویژگی از قطعشدگی ناخواسته سرویس جلوگیری میکند
فیلد allowed_clients در کانفیگ سرور، تونل را تنها برای کلاینتهای خاص باز میکند.
ویژگیها:
- IP Filtering: محدودیت دسترسی به IPهای خاص و رنجهای CIDR
- IPv4 و IPv6: پشتیبانی کامل از هر دو نسخه پروتکل
- CIDR Ranges: تعریف رنجهای شبکه (مثلاً
192.168.0.0/24) - تمام ترنسپورتها: TCP, TCPMUX, WS/WSS, WSMUX/WSSMUX, UDP, QUIC
مثال کانفیگ:
[server]
bind_addr = "0.0.0.0:8080"
transport = "tcp"
token = "your_secure_token"
# فقط این IPها میتوانند تونل را استفاده کنند
allowed_clients = [
"192.168.1.100", # IP خاص
"192.168.1.0/24", # رنج CIDR
"10.0.0.0/8" # رنج دسته A
]رفتار:
- اگر لیست خالی باشد (یا موجود نباشد)، تمام کلاینتها قبول میشوند
- اگر IP/دامنه کلاینت در لیست نباشد، اتصال فوری بسته میشود
- رد شدنهای اتصال در log ثبت میشوند
برای جزئیات کامل، فایل CLIENT_WHITELIST.md را ببینید.
اسکریپت نصب تعاملی، نصب آنلاین/آفلاین، ایجاد سرویس systemd، ساخت یا ویرایش فایل کانفیگ و مدیریت متمرکز را خودکار میکند.
- دانلود/اجرای اسکریپت (روی Debian/Ubuntu با sudo):
curl -LO https://raw.githubusercontent.com/ArashAfkandeh/Backhaul-Pro/main/installer.sh
sudo bash installer.sh- اجرای مستقیم بدون ذخیره فایل:
bash <(curl -fsSL https://raw.githubusercontent.com/ArashAfkandeh/Backhaul-Pro/main/installer.sh)- اجرای مستقیم با آرگومانها (بدون ذخیره فایل):
bash <(curl -fsSL https://raw.githubusercontent.com/ArashAfkandeh/Backhaul-Pro/main/installer.sh) uninstallbash <(curl -fsSL https://raw.githubusercontent.com/ArashAfkandeh/Backhaul-Pro/main/installer.sh) manage-
حالت نصب:
- Online: نصب وابستگیها با apt، دانلود بسته باینری و استخراج به
/root/backhaul_pro - Offline: نصب از آرشیو محلی
/root/backhaul_pro.tar.gzو مخزن آفلاین بستهها
- Online: نصب وابستگیها با apt، دانلود بسته باینری و استخراج به
-
مراحل کلیدی:
- آمادهسازی سیستم و وابستگیها (wget, curl, openssl, tar, net-tools)
- ایجاد پوشه
/root/backhaul_pro - استخراج بسته و کپی باینری
backhaul_pro - انتخاب نقش (Server/Client)، پورت تونل، پروتکل (udp/tcp/tcpmux/ws/wss/wsmux/wssmux)، تولید/ورود Token، تعیین
web_port - (برای سرور) تعریف
portsبا اعتبارسنجی و چک اشغالبودن پورتهای محلی - تولید فایل
config.tomlمناسب نقش انتخابی - ایجاد سرویس systemd مانند
backhaul_pro.service(یا شمارهدار) - فعالسازی و راهاندازی سرویس، نمایش وضعیت
- نصب ابزار مدیریت مرکزی
bh-pدر/usr/local/bin
-
مدیریت سرویسها با
bh-p:- لیست سرویسها، وضعیت/لاگ زنده، ریاستارت، ویرایش کانفیگ، نمایش اطلاعات اتصال (Server)، حذف سرویس
-
حذف سرویسها:
sudo bash installer.sh uninstall
# یا ابزار مدیریت مرکزی
sudo bh-p # گزینههای Uninstall در منویادداشت: اگر config.toml موجود باشد، اسکریپت امکان جایگزینی/ایجاد فایل شمارهدار جدید و مدیریت سرویس متناظر را میدهد.
git clone https://github.com/ArashAfkandeh/Backhaul-Pro.git
cd Backhaul-Pro
go build -o backhaul_pro
./backhaul_pro -c /path/to/config.toml- نمایش نسخه:
./backhaul_pro -v - غیرفعالسازی تیونینگ خودکار:
--no-auto-tune - تغییر بازه تیونینگ:
--tune-interval 15m
تیونینگ خودکار بهصورت پیشفرض فعال و بر روی مقدار 10 دقیقه است؛ کافیست بدون --no-auto-tune اجرا کنید. در مثالها وبپنل برای مانیتورینگ روشن است.
- سرور (مثال WSSMUX روی 443 با مولتیپلکس و Sniffer فعال):
[server]
bind_addr = "0.0.0.0:443"
transport = "wssmux"
token = "YOUR_TOKEN"
web_port = 2060
# نگاشت پورتها
# تک پورت، بازه، یا نگاشت به سرویس داخلی
# همچنین میتوانید پورت تکراری را برای چند مقصد مشخص کنید تا
# یک الگوریتم بارگذاری ترکیبی فعال شود: اتصال اول هر منبع به مقصد با بار
# کمتر هدایت میشود و سپس همان منبع بهصورت ثابت به آن مقصد متصل میماند.
#
# به خاطر سپردن آدرسهای مبدا و مقصد میتواند در طول زمان منجر به جمع شدن
# دادههای قدیمی در حافظه شود. برنامه یک API ساده در `internal/utils`
# دارد:
#
# ResetState(dst)
# ResetAllStates()
#
# این پاکسازی اکنون به طور خودکار هنگام راهاندازی برنامه فعال میشود
# با بازههای پیشفرض (۶۰ دقیقه بررسی، ۲۴ ساعت عمر مجاز). همچنین میتوانید
# با صدا زدن مستقیم `StartAutoCleanup`/`StopAutoCleanup` رفتار را سفارشی کنید.
# تابع `StopAutoCleanup` برای متوقف کردن گوروتین مربوط به کاربر وجود دارد، ولی
# در حالت عادی نیاز نیست آنرا فراخوانی کنید چون هنگام قطع شدن کانتکست
# برنامه، گوروتین به طور خودکار متوقف میشود (ما `defer` را در `main` گذاشتهایم).
ports = [
# نمونههای نگاشت پورت و مسیریابی مبتنی بر Host/SNI
# 1) نگاشت ساده host:port -> backend (تطبیق دقیق، case-insensitive)
"in1.example.com:6701=64.49.15.175:8080",
"in2.example.com:6701=45.67.139.173:8080",
"in3.example.com:6701=45.43.92.164:8080",
# 2) Alias (نام مستعار): وقتی سرور SNI یا Host متفاوت میبیند میتوانید
# همان مقصد را برای نام دیگر هم اضافه کنید (مثلاً CDN یا رکنماد)
"de1.example.com:6701=45.67.139.173:8080", # معادل in2.example.com
# 3) Fallback / Load-balance: چند مقصد برای یک listener (انتخاب براساس
# ترکیب src/dst و حالت sticky load-balancer انجام میشود)
":16445=45.92.219.26:16445",
":16445=45.67.139.215:15346",
":16445=5.253.31.5:4973",
":16445=194.76.147.13:1373",
]اجرای سرور با تیونینگ فعال (بازه 10 دقیقه):
./backhaul_pro -c /root/backhaul_pro/config.toml --tune-interval 10m- کلاینت (مثال WSSMUX با همگامسازی از وبپنل سرور):
[client]
remote_addr = "SERVER_IP:443"
transport = "wssmux"
token = "YOUR_TOKEN"
web_port = 2061
# اختیاری برای سناریوهای CDN در WS/WSS
edge_ip = ""اجرای کلاینت با تیونینگ فعال:
./backhaul_pro -c /root/backhaul_pro/config.toml --tune-interval 10m- نکته: تیونینگ در هر دو سمت فعال است و Keepalive بین سرور/کلاینت همگام میشود. برای غیرفعالسازی:
--no-auto-tune.
اسکریپت نصب فایل سرویس را ایجاد میکند. نمونه سرویس (اگر نیاز به ساخت دستی داشتید):
[Unit]
Description=Backhaul Pro Reverse Tunnel Service
After=network.target
[Service]
Type=simple
ExecStart=/root/backhaul_pro/backhaul_pro -c /root/backhaul_pro/config.toml
Restart=always
RestartSec=3
LimitNOFILE=1048576
[Install]
WantedBy=multi-user.targetدستورات رایج:
sudo systemctl daemon-reload
sudo systemctl enable backhaul_pro.service
sudo systemctl start backhaul_pro.service
sudo systemctl status backhaul_pro.service
sudo journalctl -u backhaul_pro.service -f- Token قوی تعریف و بهصورت امن توزیع کنید.
- دسترسی به وبپنل را محدود کنید یا فقط روی لوکال ارائه دهید.
- روی پورتهای عمومی (443) از WSS/WSSMUX با گواهی معتبر استفاده کنید.
- اگر کانفیگ تغییر نکرد اجرا نمیشود: مسیر
-cرا بررسی کنید. لاگها را ببینید. - برای تاخیر بالا/نوسان شبکه، از MUX و تنظیم
mux_*استفاده و به تیونینگ فرصت تطبیق بدهید. - اگر پورت اشغال است، در اسکریپت نصب پیام خطا دریافت میکنید؛ پورت دیگری را انتخاب کنید.
openssl genpkey -algorithm RSA -out server.key -pkeyopt rsa_keygen_bits:2048
openssl req -new -key server.key -out server.csr
openssl x509 -req -in server.csr -signkey server.key -out server.crt -days 365main.go: اجرای برنامه، سیگنالها، Hot Reload، تیونرcmd/: بارگذاری/اعتبارسنجی کانفیگ، اعمال پیشفرضها، انتخاب نقش اجراinternal/config/: انواع و ساختار کانفیگهاinternal/server,internal/client: راهاندازی ترنسپورتها بر اساس نوع انتخابیinternal/*/transport: پیادهسازیهایtcp,tcpmux,ws/wss,wsmux/wssmux,udpinternal/web/: داشبورد و APIها (/,/stats,/data,/config)internal/tuning/: منطق تیونینگ پویا و همگامسازی پارامترهاinternal/utils/logger.go: Logger سفارشی رنگی
این پروژه تحت مجوز AGPL-3.0 منتشر شده است. به فایل LICENSE مراجعه کنید.
از همراهی شما سپاسگزاریم.
برای عبور از DPI و فیلترینگ، در حالتهای مبتنی بر وبسوکت (WS/WSS/W(S)MUX) لایههای ابهامسازی در سطح HTTP/TLS/مسیر اعمال میشود تا ترافیک تا حد ممکن شبیه ترافیک واقعی مرورگر باشد:
- هدرهای HTTP واقعنما (Accept, Accept-Language, Accept-Encoding, DNT, Connection و…)
- چرخش User-Agent بین مقادیر رایج (Chrome/Firefox/Safari/Edge روی پلتفرمهای مختلف)
- مسیرهای وبسوکت شبهواقعی و پویا مانند
/api/v1/stream,/cdn/assets,/ws/chat, … - تنظیمات TLS شبیه مرورگرهای مدرن (TLS 1.2/1.3، منحنیهای X25519 و P-256)
- امکان افزودن هدرهای سفارشی برای ابهامسازی بیشتر (در پیادهسازی وبسوکت)
مزایا:
- شباهت به ترافیک HTTPS/WS معمول و کاهش ریسک تشخیص توسط DPI
- انعطافپذیری و قابلیت گسترش الگوها
- سازگاری عقبرو با کلاینتهای بدون ابهامسازی
محدودیتها:
- هیچ روش ابهامسازیای کامل نیست؛ DPIهای پیشرفته ممکن است همچنان توانایی تشخیص داشته باشند
- سربار اندک پردازشی و نیاز به بهروزرسانی دورهای مجموعه User-Agent ها
برای درک عمیقتر، سند OBFUSCATION.md را ببینید.
برای سناریوهای تست یا محیطهایی که گواهی معتبر در دسترس نیست، میتوانید بهسادگی یک گواهی خودامضاء بسازید. نمونه دستورات در همین فایل آمده است. همچنین در صورت خالیبودن مسیرهای TLS در سرور، مقادیر پیشفرض به صورت خودکار روی مسیرهای زیر تنظیم میشوند:
- پوشه کاری/ssl/server.crt
- پوشه کاری/ssl/server.key
پیشنهاد عملیاتی: در محیط تولید حتماً از گواهی معتبر استفاده کنید و کلید خصوصی را با دسترسی محدود نگهداری کنید.
برای عیبیابی و پروفایلینگ، PPROF را میتوانید در سرور و کلاینت فعال کنید:
- سرور: وقتی
PPROF = trueباشد، سرویس روی0.0.0.0:6060بالا میآید - کلاینت: وقتی
PPROF = trueباشد، سرویس روی0.0.0.0:6061بالا میآید با ابزارهای استاندارد Go/pprof یا مرورگر میتوانید به این آدرسها وصل شوید. فعالسازی را فقط در محیط امن انجام دهید.
وقتی web_port > 0 باشد:
/صفحه داشبورد HTML/statsخروجی JSON از آمار سیستم و وضعیت تونل (CPU/RAM/Disk/Swap/Traffic/Connections/Status)/dataخروجی JSON مصرف پورتها (اگرsniffer=true)/configکانفیگ جاری بدون فیلدهای حساس (پارامتر?type=clientبرای دریافت کانفیگ کلاینت)
نمونه مصرف /stats:
curl http://127.0.0.1:2060/stats | jq .منطق تیونینگ در internal/tuning/tuner.go اجرا میشود و بهصورت دورهای (قابل تغییر با --tune-interval) شاخصهای زیر را میسنجد:
- بار CPU، مصرف RAM
- تاخیر شبکه (TCP Dial) و تاریخچه آن (میانگین/واریانس)
- Packet Loss و Throughput تقریبی
پارامترهای تنظیمشونده:
- کلاینت:
connection_pool - سرور:
channel_size,mux_framesize,mux_recievebuffer,mux_streambuffer,heartbeat,mux_con - هر دو:
keepalive_period(همگامسازی سمت کلاینت با وبپنل سرور نیز انجام میشود)
تنظیم پویا بازه تیونینگ:
- در نوسان بالای تاخیر، بازه کوتاهتر میشود (تیونینگ سریعتر)
- در پایداری بالا، بازه بلندتر میشود (سربار کمتر)
پروندهی کانفیگ مشخصشده با -c مانیتور میشود. به محض تغییر زمان ویرایش:
- اگر تیونینگ فعال است، Tuner فعلی متوقف میشود
- کانتکست اجرای قبلی لغو و instance جدید با کانتکست تازه راهاندازی میشود
- تیونینگ (در صورت فعال بودن) با مقادیر جدید مجدداً شروع میشود
خطاشناسی و بازگشت خودکار:
- اگر تغییری از طریق API (مثلاً POST
/api/config) در کانفیگ ایجاد شود و باعث خطا در برنامه گردد، سیستم خودکار و بدون مداخله کاربر کانفیگ را به آخرین نسخهی موفق بازمیگرداند - اگر تغییری مستقیم در فایل
config.tomlانجام شود و باعث خطا شود، نسخهی قبلی بارگذاری میشود - این حفاظت از سرویس جلوگیری میکند تا در صورت اشتباه تنظیمات قطع نشود
وقتی web_port > 0 باشد، تمامی APIها از طریق HTTPS در دسترس هستند (اگر گواهی موجود باشد؛ در غیر اینصورت HTTP).
اندپوینتهای اصلی:
GET /صفحه داشبورد HTMLGET /statsآمار سیستم و تونل (JSON)GET /dataمصرف پورتها (JSON، اگرsniffer=true)GET /configکانفیگ جاری (JSON)GET /api/health-scoreامتیازات سلامت سیستم (JSON)
نمونه استفاده:
# دریافت amتیازات سلامت
curl --insecure https://127.0.0.1:2060/api/health-score | jq .
# دریافت آمار
curl --insecure https://127.0.0.1:2060/stats | jq .
# دریافت کانفیگ
curl --insecure https://127.0.0.1:2060/config | jq .- تولید خودکار: برنامه بهصورت خودکار گواهیهای SSL خودامضاء مورد نیاز را تولید میکند. اگر فایلهای
fullchain.crtوprivkey.keyدر پوشهcerts/کنار executable موجود نباشند، سیستم آنها را خودکار ایجاد میکند. - دستی: اگر میخواهید گواهی سفارشی استفاده کنید، فایلهای
fullchain.crtوprivkey.keyرا در پوشهcerts/قرار دهید:
openssl genpkey -algorithm RSA -out privkey.key -pkeyopt rsa_keygen_bits:2048
openssl req -new -x509 -days 365 -key privkey.key -out fullchain.crtسپس برنامه این گواهیها را برای HTTPS استفاده میکند.
- تولید اول اجرا: عند اولین اجرا، اگر گواهی موجود نباشد، برنامه خودکار آن را میسازد و در
certs/ذخیره میکند.
اگر طی 5 ثانیه خاموشی امن کامل نشود، خاموشی اجباری اعمال میشود.
قابلیتها:
- نصب Online/Offline وابستگیها (apt) و مدیریت آرشیو آفلاین
- دانلود/استخراج بسته باینری و ایجاد ساختار
/root/backhaul_pro - ایجاد/ویرایش
config.toml(Server/Client) با اعتبارسنجی IP/Port و بررسی اشغالبودن پورتها - انتخاب پروتکل:
udp,tcp,tcpmux,ws,wss,wsmux,wssmux - تولید توکن تصادفی یا دریافت توکن سفارشی
- تنظیم
web_portو تعریفportsبرای سرور (با الگوهای443-600,443-600:5201,127.0.0.2:443=1.1.1.1:5201, ...) - ساخت سرویس systemd (شمارهدار در صورت چند کانفیگ)
- راهاندازی و فعالسازی سرویس + نمایش وضعیت
- نصب ابزار مدیریت مرکزی
bh-p
ورود به منوی مدیریت مرکزی:
sudo bh-pامکانات منو:
- نمایش وضعیت سرویس، لاگ زنده، ریاستارت
- ویرایش تعاملی کانفیگ و اعمال خودکار
- نمایش اطلاعات اتصال سمت سرور (Server Connection Info)
- حذف سرویس انتخابی (Uninstall) با پاکسازی هوشمند فایلها و سرویس
حذف کامل سرویسها (Batch):
sudo bash installer.sh uninstallاسکریپت سرویسهایی با الگوهای backhaul_pro*.service و utunnel*.service را تشخیص و مدیریت میکند. در صورت نبود فایلها/باینری باقیمانده، پوشه کاری نیز قابل حذف است. اگر هیچ سرویس مرتبط باقی نماند، دستور bh-p نیز حذف میشود.
accept_udp(سرور TCP): عبور UDP روی تونل TCPchannel_size(سرور): ظرفیت صف پیامها؛ از افت بسته جلوگیری/یا کنترل ازدحامconnection_pool(کلاینت): پیشاتصالها برای کاهش تاخیر اولیه؛ در حالت aggressive مدیریت تهاجمیتر استnodelay: فعالسازی TCP_NODELAY برای بهبود تاخیر (ممکن است پهنای باند مؤثر را کمی کاهش دهد)mux_session,mux_version: پارامترهای SMUX (با پیشفرضهای امن و کارای تعریفشده)- Sniffer: ذخیره JSON مرتبشده از مصرف پورتها و تبدیل خودکار به مقادیر خوانا (KB/MB/GB)
- Logger رنگی: سطحبندی قابل تنظیم با
log_level