پلتفرم کنترل و مانیتورینگ متمرکز، سبک و فوقالعاده مقاوم برای برقراری، پایدارسازی و همگامسازی تانلهای شبکه میان سرورهای ایران و خارج تحت شدیدترین شرایط اختلال و فیلترینگ.
ههواڵ (Hawal - در زبان کُردی بهمعنای «همراه، دوست یا پیامرسان») پاسخی مهندسی، بومی و دانشبنیان به چالشهای مسدودی شبکه و اختلالات پروتکل است که کلیه تنظیمات، کلیدهای ارتباطی و تلهمتری را در یک رابط وب متمرکز مدیریت کرده و بهصورت زنده به ایجنتهای سبک روی سرورها همگامسازی مینماید.
🌐 زبانها: English Documentation | فارسی | 💬 جامعه تلگرام: t.me/dallrep
- ✨ قابلیتها و نقاط قوت کلیدی
- 🏛️ معماری و توپولوژی شبکه
- 🎛️ بررسی و مقایسه هستههای ارتباطی
- 📋 پیشنیازهای استقرار و شبکه
- ⚡ نصب و راهاندازی سریع (دستور تکخطی)
- 🐳 استقرار با Docker Compose
- 🔒 امنسازی پنل با دامنه و گواهی رایگان SSL
- 🛡️ ساختار پکتهای خام و شمارش دقیق ترافیک کرنل
- 🛠️ پایش زنده، نگهداری و خطایابی
- 💬 جامعه کاربری، کانال تلگرام و پشتیبانی
- 🤝 راهنمای مشارکت در توسعه (Contributing)
- 🔐 حریم خصوصی و استفاده مسئولانه
- 🌐 کنترلپنل مدرن با معماری 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
| هسته ارتباطی | زبان و معماری | پروتکلهای انتقال | رمزنگاری و حریم خصوصی | سناریوی پیشنهادی عملیاتی |
|---|---|---|---|---|
| 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. |
- استقرار پیشفرض در شرایط فیلترینگ فعال: هسته Hawal Core (v2.5.1) را انتخاب کنید. این هسته با معماری حامل سوکت خام (
rawpaq) و اتصال فیلتر کدهای cBPF به سوکت، نیازی به هندشیک معمول لینوکس ندارد و به صورت خودکار قطعیهای خاموش فیلترینگ صبحگاهی را شناسایی و بازنشانی میکند. - پهنای باند بالا و استتار وب: اگر اپراتور شما ترافیک وبسوکت استاندارد را مسدود نمیکند، هسته Backhaul روی مد
wsیاtcpmuxبالاترین راندمان مالتیپلکس را ارائه میدهد. - افت بسته شدید و لرزش سیگنال (Jitter): هسته Paqet Wire در خطوطی که پکتلاس بالای ۱۵٪ دارند کارآمد است. دقت فرمایید پورت هسته حتماً از پورتهای ورودی کلاینت مستقل باشد.
- ترافیک چندرسانهای و UDP: برای سناریوهای ترافیک UDP یا هایستریا، از هسته GOST v3 استفاده کنید.
هسته هوال بر مبنای آخرین پژوهشهای میدانی و آزمایشگاهی بازرسی عمیق بسته (DPI) توسعه داده شده است:
- 🛡️ حامل بومی Raw-TCP با فیلتر کرنل (
rawpaq):- تولید و ارسال مستقیم فریمهای لایه ۴ در سوکت خام لینوکس بدون طی کردن جدول حالات هندشیک TCP استک سیستمعامل.
- تزریق برنامههای فیلتر کلاسیک BPF (یا cBPF) در سطح سوکت خام جهت دریافت انحصاری پکتهای مقصد و نادیدهگرفتن پاکتهای RST و ترافیک نامربوط.
- 🔄 حل دائمی مشکل فریز صبحگاهی (Anti-Freeze & Deadlink Self-Healing):
- فریم کنترل دوطرفه
TypePong = 9: تبادل دورهای هارتبیت فعال برای اطمینان از قابلیت واقعی ارسال و دریافت در لایه فیزیکی شبکه. - تشخیص خودکار قطعی سایلنت (Silent Drop Detection): ثبت لحظهای
lastInboundActivity؛ در صورت بلکهولینگ یا فیلتر خاموش مسیر توسط فایروال میانی (>۴۵ ثانیه بدون ترافیک ورودی یا Pong)، نشست معلق بلافاصله به شکل تمیز بسته شده و کلاینت در کسری از ثانیه مجدداً متصل میشود. - تایماوتهای سوکت (
SetWriteDeadline): اعمال مهلت زمانی ۱۰ ثانیهای روی نوشتن در حامل و خروجی Mux، که امکان قفل شدن دائم صفهای ارسال را به صفر میرساند.
- فریم کنترل دوطرفه
- 🔐 رمزنگاری پیشرفته Noise و امنیت رو به جلو (PFS):
- تبادل کلید ناپایدار X25519 به ازای هر نشست جدید؛ افشای کلیدهای بلندمدت موجب رمزگشایی ترافیکهای ضبطشده گذشته نخواهد شد.
- رمزنگاری احرازشده فریمها با ChaCha20-Poly1305 به همراه پوششدهی تصادفی طول پکتها (Length Masking در بازه ۱۶ تا ۴۸ بایت) جهت خنثیسازی طبقهبندیکنندههای طول پکت هوش مصنوعی.
- 🪶 مصرف رم و پردازنده فوقالعاده ناچیز:
- اشغال کمتر از ۲۰ مگابایت حافظه رم در نود ایران (حدود ۷۴٪ سبکتر از راهکارهای سنتی پکت).
- سیستمعامل: اوبونتو ۲۰.۰۴ به بالا یا دبیان ۱۱ و ۱۲ (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) و پورت فوروارد شده نباید یکسان باشند. پورت هسته ستون فقرات تانل است و پورت فوروارد شده درگاه ورود کاربران به سرور ایران است.
دستور زیر را در ترمینال سروری که میخواهید پنل وب روی آن قرار گیرد اجرا کنید:
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
هیچ نیازی به دانلود یا ویرایش دستی فایل روی سرورها نیست:
- در پنل وارد بخش مدیریت نودها (Node Management) شوید.
- روی دکمه افزودن نود کلیک کرده و نام و نقش نود را مشخص کنید (
iranیاkharej). - دستور
curlاختصاصی تولیدشده را کپی و در ترمینال سرور مربوطه اجرا نمایید:
curl -fsSL "http://PANEL_IP:9090/install?token=YOUR_TOKEN&role=kharej&name=Germany" | bashسرویس ایجنت بهصورت خودکار در قالب systemd مستقر شده و وضعیت نود در پنل بلافاصله سبز (Online) میشود.
- در پنل وارد منوی مدیریت تانلها (Tunnel Management) شده و ایجاد تانل جدید را بزنید.
- نود ایران و خارج را انتخاب کنید.
- هسته تانل را بر روی Hawal Core (یا هسته دلخواه) قرار دهید.
- پورت اختصاصی هسته (مثلاً
3107) را وارد کنید. - پورتهای سرویس ورودی و مقصد را مشخص نمایید (مثال:
443=127.0.0.1:443). - روی ذخیره و استقرار کلیک کنید. تانل ظرف ۱ الی ۲ ثانیه برقرار و عملیاتی میگردد.
جهت اجرای مستقل پنل در قالب کانتینر داکر:
git clone https://github.com/dalroot/hawal.git
cd hawal
docker compose up -d --build
docker compose logs -f hawal-panelتوصیه میشود پنل وب را با اتصال دامنه و پروتکل امن 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'برای همفکری، تبادل تجربیات در مواجهه با روشهای جدید فیلترینگ و اطلاع از بهروزرسانیها به جمع ما بپیوندید:
- 📢 کانال و کامیونیتی رسمی تلگرام: t.me/dallrep
- 💡 طرح مباحث و گزارش آزمایشگاهی: بخش GitHub Issues و DPI Report Form
- 📖 مستندات تکمیلی پژوهشی: مستندات پوشه
docs/research/dpi-2026/
ما عمیقاً از مشارکت جامعه متنباز، توسعهدهندگان شبکه و پژوهشگران امنیت استقبال میکنیم:
- مخزن را فورک (Fork) کنید.
- یک شاخه جدید بسازید (
git checkout -b feature/improvement). - پیش از ارسال، تستهای Go را بررسی فرمایید (
go test -v -race ./core/v2/...). - تغییرات را کامیت کرده و یک Pull Request همراه با توضیحات شفاف ارسال نمایید.
- نرمافزار ههواڵ یک پلتفرم آزاد مدیریت شبکه و ارزیابی تابآوری ارتباطات است.
- کلیدها، توکنها و دسترسی به پنل خود را در اختیار اشخاص ناشناس یا مخازن عمومی قرار ندهید.
- رعایت قوانین و شرایط دیتاسنترها بر عهده اپراتور شبکه است.
منتشرشده تحت مجوز MIT License © 2026 dalroot و مشارکتکنندگان پروژه ههواڵ.