Skip to content

Latest commit

 

History

History
322 lines (239 loc) · 24.1 KB

README_FA.md

File metadata and controls

322 lines (239 loc) · 24.1 KB

لوگوی هه‌واڵ

⚡ هه‌واڵ (Hawal) — سامانه یکپارچه مدیریت تانل‌های چند‌هسته‌ای

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

وضعیت تست‌ها و بیلد تحلیل امنیتی آلرت‌های امنیتی نسخه ریلیز نسخه Go نسخه Python کانال تلگرام لایسنس MIT داکر

هه‌واڵ (Hawal - در زبان کُردی به‌معنای «همراه، دوست یا پیام‌رسان») پاسخی مهندسی، بومی و دانش‌بنیان به چالش‌های مسدودی شبکه و اختلالات پروتکل است که کلیه تنظیمات، کلیدهای ارتباطی و تله‌متری را در یک رابط وب متمرکز مدیریت کرده و به‌صورت زنده به ایجنت‌های سبک روی سرورها همگام‌سازی می‌نماید.

🌐 زبان‌ها: English Documentation | فارسی | 💬 جامعه تلگرام: t.me/dallrep


📑 فهرست مطالب


✨ قابلیت‌ها و نقاط قوت کلیدی

  • ‏🌐 کنترل‌پنل مدرن با معماری Ant Design: رابط کاربری ارگونومیک، واکنش‌گرا و آنی با پشتیبانی از تم‌های تیره و روشن، مانیتورهای پهنای باند و نمودارهای تاریخی.
  • ‏⚡ اتصال خودکار نودها (Zero-Touch Enrollment): استقرار ایجنت روی سرور نود تنها با یک دستور curl امن حاوی توکن یک‌بارمصرف، بدون نیاز به دسترسی SSH از پنل به سرورها یا ویرایش دستی کانفیگ‌ها.
  • ‏🚀 چهار هسته مستقل و قدرتمند ارتباطی:
    • ‏• هسته بومی هوال (Hawal Core v2.5.1): موتور اختصاصی و فوق‌العاده سریع به زبان Go، مجهز به لایه پکت‌های خام (Raw-TCP)، فیلترهای بسته درون کرنل (cBPF/eBPF)، رمزنگاری ناپایدار Noise PFS و مکانیزم رفع فریز صبحگاهی و قطعی‌های سایلنت.
    • ‏• هسته Backhaul: تانل‌های مالتی‌پلکس پرسرعت هم‌روند روی بستر وب‌سوکت، TCP و TLS برای حجم بالای اتصالات.
    • ‏• هسته Paqet: دستکاری مستقیم پکت‌های خام لایه چهارم همراه با کنترل ازدحام KCP جهت عبور از شبکه‌های دارای نوسان و افت شدید بسته (Packet Loss).
    • ‏• هسته GOST v3: رله چندپروتکلی انعطاف‌پذیر با پشتیبانی هم‌زمان از ترافیک TCP و UDP (سازگار کامل با پروتکل‌های مبتنی بر QUIC نظیر هایستریا).
  • ‏🛡️ حفظ ۱۰۰٪ حریم خصوصی کاربران (Zero User Logging): هسته هوال به هیچ وجه آدرس IP یا متادیتای اتصالات کاربران نهایی را ثبت یا لاگ نمی‌کند و صرفاً رویدادهای سیستمی و چرخه حیات انجین را نگهداری می‌نماید.
  • ‏📊 تله‌متری دقیق و زنده: نمایش بلادرنگ مصرف پردازنده، حافظه رم، پهنای باند لحظه‌ای، پینگ و وضعیت اتصال پایدار نودها.
  • ‏📈 محاسبه دقیق ترافیک از کرنل سرور مقصد: خواندن ترافیک فیزیکی واقعی پکت‌های خام از جدول raw فایروال سرور خارج (محاسبه دقیق سربار پروتکل و بازتوزیع‌ها).
  • ‏🪶 سبک و بدون وابستگی سنگین: پایگاه‌داده تعبیه‌شده SQLite بدون نیاز به راه‌اندازی سرویس‌های سنگین مثل Redis یا PostgreSQL.
  • ‏🐧 پشتیبانی کامل از Systemd و Docker: مدیریت یکپارچه سرویس‌ها در قالب سرویس‌های خودکار لینوکس یا کانتینرهای مستقل.

🏛️ معماری و توپولوژی شبکه

در معماری هوال، جریان مدیریت (Control Plane) به‌طور کامل از جریان انتقال ترافیک کاربران (Data Plane) مجزا است:

flowchart TD
    subgraph ManagementPlane ["🖥️ لایه مدیریت و کنترل (Control Plane)"]
        Admin["👤 مدیر شبکه (Admin)"]
        Panel["⚡ پنل وب مستر هه‌واڵ (FastAPI + SQLite)"]
        Admin --> Panel
    end

    subgraph IranEdge ["🇮🇷 نود لبه ایران (Client / Dialer)"]
        AgentIran["🤖 ایجنت هه‌واڵ (/opt/hawal/agent.py)"]
        IngressPort["🚪 پورت ورودی کلاینت (:443, :8443)"]
        HawalDialer["⚡ موتور هوال کور (Raw-TCP + فیلتر cBPF)"]
        ClientUser["👥 کاربران و کلاینت‌ها (Xray / Sing-box)"]

        ClientUser --> IngressPort
        IngressPort --> HawalDialer
    end

    subgraph ForeignEdge ["🌍 نود خروجی خارج (Server / Acceptor)"]
        AgentForeign["🤖 ایجنت هه‌واڵ (/opt/hawal/agent.py)"]
        CorePort["🔒 پورت اختصاصی هسته (:3107)"]
        HawalAcceptor["⚡ شنود سوکت خام و فیلتر کرنل BPF"]
        TargetApp["🎯 سرویس مقصد (Xray / 3X-UI / GOST)"]

        CorePort --> HawalAcceptor
        HawalAcceptor --> TargetApp
    end

    Panel -. "همگام‌سازی تنظیمات و تله‌متری (هر ۳ ثانیه)" .-> AgentIran
    Panel -. "همگام‌سازی تنظیمات و تله‌متری (هر ۳ ثانیه)" .-> AgentForeign
    HawalDialer == "تانل معکوس رمزشده (Noise PFS + ضد فریز)" ==> CorePort
Loading

🎛️ بررسی و مقایسه هسته‌های ارتباطی

هسته ارتباطی زبان و معماری پروتکل‌های انتقال رمزنگاری و حریم خصوصی سناریوی پیشنهادی عملیاتی
Hawal Core (v2.5.1) Go بومی (کاملاً مستقل) rawpaq (Raw-TCP + cBPF)، tls-http، tcp Noise X25519 (PFS) + ChaCha20-Poly1305 + عدم ثبت لاگ کاربر انتخاب اول و پیشنهادی؛ مهندسی‌شده اختصاصی برای شرایط فیلترینگ شدید، مجهز به پایش بلک‌هولینگ و بازیابی هوشمند فریز صبحگاهی.
Paqet Wire C و Go پکت خام با الگوریتم ازدحام KCP کلید متقارن ثابت خطوط اینترنت دارای افت بسته (پکت‌لاس) شدید و نوسان لتنسی. نیازمند سطح دسترسی root و عدم اشتراک پورت هسته.
Backhaul Go ws، tcp، tcpmux، tls TLS 1.3 یا متن‌واضح ترافیک‌های بسیار سنگین چندکاربره بر بستر وب‌سوکت در شرایطی که ارتباط TCP دچار اختلال عامدانه نباشد.
GOST v3 Go tls، ws، kcp، quic رمزنگاری چندمنظوره انتقال هم‌زمان ترافیک UDP، سرویس‌های گیمینگ و تانل‌های مبتنی بر Hysteria2.

استراتژی انتخاب هسته:

  1. استقرار پیش‌فرض در شرایط فیلترینگ فعال: هسته Hawal Core (v2.5.1) را انتخاب کنید. این هسته با معماری حامل سوکت خام (rawpaq) و اتصال فیلتر کدهای cBPF به سوکت، نیازی به هندشیک معمول لینوکس ندارد و به صورت خودکار قطعی‌های خاموش فیلترینگ صبحگاهی را شناسایی و بازنشانی می‌کند.
  2. پهنای باند بالا و استتار وب: اگر اپراتور شما ترافیک وب‌سوکت استاندارد را مسدود نمی‌کند، هسته Backhaul روی مد ws یا tcpmux بالاترین راندمان مالتی‌پلکس را ارائه می‌دهد.
  3. افت بسته شدید و لرزش سیگنال (Jitter): هسته Paqet Wire در خطوطی که پکت‌لاس بالای ۱۵٪ دارند کارآمد است. دقت فرمایید پورت هسته حتماً از پورت‌های ورودی کلاینت مستقل باشد.
  4. ترافیک چندرسانه‌ای و UDP: برای سناریوهای ترافیک UDP یا هایستریا، از هسته GOST v3 استفاده کنید.

⚡ کالبدشکافی فنی هسته هوال (Hawal Core v2.5.1)

هسته هوال بر مبنای آخرین پژوهش‌های میدانی و آزمایشگاهی بازرسی عمیق بسته (DPI) توسعه داده شده است:

  1. ‏🛡️ حامل بومی Raw-TCP با فیلتر کرنل (rawpaq):
    • تولید و ارسال مستقیم فریم‌های لایه ۴ در سوکت خام لینوکس بدون طی کردن جدول حالات هندشیک TCP استک سیستم‌عامل.
    • تزریق برنامه‌های فیلتر کلاسیک BPF (یا cBPF) در سطح سوکت خام جهت دریافت انحصاری پکت‌های مقصد و نادیده‌گرفتن پاکت‌های RST و ترافیک نامربوط.
  2. ‏🔄 حل دائمی مشکل فریز صبحگاهی (Anti-Freeze & Deadlink Self-Healing):
    • فریم کنترل دوطرفه TypePong = 9: تبادل دوره‌ای هارت‌بیت فعال برای اطمینان از قابلیت واقعی ارسال و دریافت در لایه فیزیکی شبکه.
    • تشخیص خودکار قطعی سایلنت (Silent Drop Detection): ثبت لحظه‌ای lastInboundActivity؛ در صورت بلک‌هولینگ یا فیلتر خاموش مسیر توسط فایروال میانی (>۴۵ ثانیه بدون ترافیک ورودی یا Pong)، نشست معلق بلافاصله به شکل تمیز بسته شده و کلاینت در کسری از ثانیه مجدداً متصل می‌شود.
    • تایم‌اوت‌های سوکت (SetWriteDeadline): اعمال مهلت زمانی ۱۰ ثانیه‌ای روی نوشتن در حامل و خروجی Mux، که امکان قفل شدن دائم صف‌های ارسال را به صفر می‌رساند.
  3. ‏🔐 رمزنگاری پیشرفته Noise و امنیت رو به جلو (PFS):
    • تبادل کلید ناپایدار X25519 به ازای هر نشست جدید؛ افشای کلیدهای بلندمدت موجب رمزگشایی ترافیک‌های ضبط‌شده گذشته نخواهد شد.
    • رمزنگاری احرازشده فریم‌ها با ChaCha20-Poly1305 به همراه پوشش‌دهی تصادفی طول پکت‌ها (Length Masking در بازه ۱۶ تا ۴۸ بایت) جهت خنثی‌سازی طبقه‌بندی‌کننده‌های طول پکت هوش مصنوعی.
  4. ‏🪶 مصرف رم و پردازنده فوق‌العاده ناچیز:
    • اشغال کمتر از ۲۰ مگابایت حافظه رم در نود ایران (حدود ۷۴٪ سبک‌تر از راه‌کارهای سنتی پکت).

📋 پیش‌نیازهای استقرار و شبکه

۱. مشخصات سرورها

  • سیستم‌عامل: اوبونتو ۲۰.۰۴ به بالا یا دبیان ۱۱ و ۱۲ (Ubuntu 22.04 / 24.04 LTS پیشنهاد می‌شود).
  • معماری پردازنده: x86_64 (amd64) یا aarch64 (arm64).
  • حافظه رم: حداقل ۵۱۲ مگابایت (۱ گیگابایت برای ترافیک‌های سنگین).
  • سطح دسترسی: دسترسی روت (root) یا اختیارات sudo.
  • ابزارهای پیش‌نیاز: Python 3.10+، curl و tar (توسط اسکریپت نصب به خودکار بررسی و نصب می‌شوند).

۲. پورت‌های فایروال

  • پورت پنل مستر: پورت 9090 (یا پورت 443 در صورت استفاده از دامنه و SSL).
  • پورت هسته تانل: پورتی دلخواه و آزاد روی سرور خارج (مانند 3107 یا 9999) جهت تبادل دیتای تانل.
  • پورت فوروارد ورودی: پورت‌هایی که کاربران به سرور ایران وصل می‌شوند (مانند 443 یا 8443).

⚠️ هشدار مهم: شماره پورت هسته (Core Port) و پورت فوروارد شده نباید یکسان باشند. پورت هسته ستون فقرات تانل است و پورت فوروارد شده درگاه ورود کاربران به سرور ایران است.


⚡ نصب و راه‌اندازی سریع (دستور تک‌خطی)

گام اول: نصب پنل مدیریت (Master Panel)

دستور زیر را در ترمینال سروری که می‌خواهید پنل وب روی آن قرار گیرد اجرا کنید:

curl -fsSL https://raw.githubusercontent.com/dalroot/hawal/master/install-panel.sh | bash

(اختیاری: جهت تغییر پورت پیش‌فرض پنل از ۹۰۹۰ به پورت دیگر، می‌توانید از پارامتر --port استفاده کنید):

curl -fsSL https://raw.githubusercontent.com/dalroot/hawal/master/install-panel.sh | bash -s -- --port 9090

پس از اتمام نصب، پنل از طریق مرورگر در دسترس خواهد بود: http://IP_SERVER:9090


گام دوم: اتصال هوشمند نودها (Zero-Touch Enrollment)

هیچ نیازی به دانلود یا ویرایش دستی فایل روی سرورها نیست:

  1. در پنل وارد بخش مدیریت نودها (Node Management) شوید.
  2. روی دکمه افزودن نود کلیک کرده و نام و نقش نود را مشخص کنید (iran یا kharej).
  3. دستور curl اختصاصی تولیدشده را کپی و در ترمینال سرور مربوطه اجرا نمایید:
curl -fsSL "http://PANEL_IP:9090/install?token=YOUR_TOKEN&role=kharej&name=Germany" | bash

سرویس ایجنت به‌صورت خودکار در قالب systemd مستقر شده و وضعیت نود در پنل بلافاصله سبز (Online) می‌شود.


گام سوم: راه‌اندازی اولین تانل

  1. در پنل وارد منوی مدیریت تانل‌ها (Tunnel Management) شده و ایجاد تانل جدید را بزنید.
  2. نود ایران و خارج را انتخاب کنید.
  3. هسته تانل را بر روی Hawal Core (یا هسته دلخواه) قرار دهید.
  4. پورت اختصاصی هسته (مثلاً 3107) را وارد کنید.
  5. پورت‌های سرویس ورودی و مقصد را مشخص نمایید (مثال: 443=127.0.0.1:443).
  6. روی ذخیره و استقرار کلیک کنید. تانل ظرف ۱ الی ۲ ثانیه برقرار و عملیاتی می‌گردد.

🐳 استقرار با Docker Compose

جهت اجرای مستقل پنل در قالب کانتینر داکر:

git clone https://github.com/dalroot/hawal.git
cd hawal
docker compose up -d --build
docker compose logs -f hawal-panel

🔒 امن‌سازی پنل با دامنه و گواهی رایگان SSL

توصیه می‌شود پنل وب را با اتصال دامنه و پروتکل امن HTTPS محافظت فرمایید:

# نصب Nginx و ماژول خودکار Let's Encrypt
sudo apt-get update && sudo apt-get install -y nginx certbot python3-certbot-nginx

# تنظیم ریورس پروکسی
sudo bash -c 'cat > /etc/nginx/sites-available/hawal << EOF
server {
    server_name panel.yourdomain.com;
    location / {
        proxy_pass http://127.0.0.1:9090;
        proxy_http_version 1.1;
        proxy_set_header Upgrade \$http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host \$host;
        proxy_set_header X-Real-IP \$remote_addr;
        proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto \$scheme;
    }
}
EOF'

sudo ln -sf /etc/nginx/sites-available/hawal /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
sudo certbot --nginx -d panel.yourdomain.com

🛡️ ساختار پکت‌های خام و شمارش دقیق ترافیک کرنل

هسته‌های Hawal Core (حامل Rawpaq) و Paqet Wire مستقیماً در لایه فیلتر پکت لینوکس فعالیت می‌کنند و پکت‌ها را خارج از سوکت‌های معمول کرنل مبادله می‌نمایند. به همین جهت، ابزارهایی نظیر ss یا شمارنده‌های سوکت لینوکس قادر به اندازه‌گیری حجم آن‌ها نیستند:

  • هه‌واڵ اطلاعات مصرفی را مستقیماً از شمارنده‌های جدول raw در iptables سرور خارج استخراج می‌کند.
  • حجم نمایش‌داده‌شده بیانگر ترافیک فیزیکی واقعی شبکه همراه با بسته‌های بازتوزیع و سربار فریمینگ است.
  • قوانین ضروری امنیتی نظیر NOTRACK و جلوگیری از ارسال RST خودکار توسط ایجنت ایجاد و پایدارسازی می‌شوند.

🛠️ پایش زنده، نگهداری و خطایابی

# منوی تعاملی و ابزار مدیریت خط فرمان (روی تمامی سرورها)
hawal

# وضعیت زنده سرویس‌ها
systemctl status hawal-panel --no-pager
systemctl status hawal-agent --no-pager

# مشاهده لاگ زنده سرویس
journalctl -u hawal-panel -f
journalctl -u hawal-agent -f

# پایش پورت‌های باز و شنود
ss -lntup | grep -E '9090|3107'

💬 جامعه کاربری، کانال تلگرام و پشتیبانی

برای همفکری، تبادل تجربیات در مواجهه با روش‌های جدید فیلترینگ و اطلاع از به‌روزرسانی‌ها به جمع ما بپیوندید:


🤝 راهنمای مشارکت در توسعه (Contributing)

ما عمیقاً از مشارکت جامعه متن‌باز، توسعه‌دهندگان شبکه و پژوهشگران امنیت استقبال می‌کنیم:

  1. مخزن را فورک (Fork) کنید.
  2. یک شاخه جدید بسازید (git checkout -b feature/improvement).
  3. پیش از ارسال، تست‌های Go را بررسی فرمایید (go test -v -race ./core/v2/...).
  4. تغییرات را کامیت کرده و یک Pull Request همراه با توضیحات شفاف ارسال نمایید.

🔐 حریم خصوصی و استفاده مسئولانه

  • نرم‌افزار هه‌واڵ یک پلتفرم آزاد مدیریت شبکه و ارزیابی تاب‌آوری ارتباطات است.
  • کلیدها، توکن‌ها و دسترسی به پنل خود را در اختیار اشخاص ناشناس یا مخازن عمومی قرار ندهید.
  • رعایت قوانین و شرایط دیتاسنترها بر عهده اپراتور شبکه است.

منتشرشده تحت مجوز MIT License © 2026 dalroot و مشارکت‌کنندگان پروژه هه‌واڵ.