
مراقبة الشبكة لكل عملية في الطرفية الخاصة بك مع فحص عميق للحزم. متعدد المنصات، معزول.
مراقبة شبكة لكل عملية على حدة في طرفيتك: اتصالات TCP وUDP وQUIC حية مع فحص عميق للحزم، معزولة افتراضيًا.
رؤية لحظية لكل اتصال يصدره جهازك، ومن يملكه، وبأي بروتوكول يتحدث. لا حاجة لـ tcpdump أو تمرير X11 أو أنابيب بصلاحيات الجذر (root piping).
netstat / ss إظهار الحالة الحية.--pcapng-export ملف التقاط جاهزًا لـ Wireshark مع تضمين العملية وPID والاتجاه وDPI/SNI وGeoIP كتعليقات لكل حزمة. افتحه في Wireshark وستجد كل حزمة تسمّي عمليتها المالكة بالفعل، دون أي معالجة لاحقة. يتوفر أيضًا التصدير الكلاسيكي --pcap-export مع ملف JSONL جانبي للربط دون اتصال.t لإبقاء الاتصالات التاريخية (المغلقة) مرئية للتحليل الجنائي.port: وsrc: و و و و و، بالإضافة إلى التعبيرات النمطية عبر .يسد RustNet الفجوة بين أدوات الاتصال البسيطة (netstat، ss) ومحللات الحزم (Wireshark، tcpdump):
يكمل RustNet أدوات التقاط الحزم. استخدم RustNet لرؤية ما الذي يُنشئ الاتصالات. للفحص المباشر عبر Wireshark، يكتب --pcapng-export تعليقات حزم حية بأفضل جهد مع سياق PID/العملية. وللربط عند التنظيف، استخدم --pcap-export مع الملف الجانبي JSONL وسكربت scripts/pcap_enrich.py الاختياري. انظر تصدير PCAP ومقارنة مع الأدوات المشابهة للتفاصيل.
مبني على ratatui وlibpcap وeBPF (libbpf-rs) وDashMap وcrossbeam وring وMaxMind GeoLite2 وLandlock. انظر ARCHITECTURE.md للتفصيل الكامل للتبعيات.
يستخدم RustNet برامج eBPF الخاصة بالنواة افتراضيًا على Linux لتحسين الأداء وتحديد العمليات بتكلفة أقل.
أسماء العمليات:
comm لقائد مجموعة العمليات (حقل نواة محدود بـ 16 حرفًا) بدلًا من اسم الخيط المنفّذ، بحيث تعرض التطبيقات متعددة الخيوط اسم العملية الرئيسية بدلًا من أسماء الخيوط مثل "Socket Thread"/proc/<tgid>/comm، ويستعيد الأسماء المقتطعة من comm من اسم ملف الملف التنفيذي (مثلًا "chromium-browse" تصبح "chromium-browser")، ويحلل مسار الملف التنفيذي الكامل المعروض في عرض التفاصيلسلوك التراجع:
لتعطيل eBPF واستخدام وضع procfs فقط، ابنِ باستخدام:
cargo build --release --no-default-features
انظر ARCHITECTURE.md للمعلومات التقنية.
يجمع RustNet بين محاسبة حركة المرور على مستوى العملية وإحصاءات واجهات الشبكة اللحظية:
3): يرتب العمليات حسب الصادر (TX) أو الوارد (RX)، بما في ذلك حركة المرور المحتفَظ بها والمتجددة والمعدلات والحصص والاتصالات والوجهاتi في تبويب النشاط): تعرض المقاييس الشاملة الأصلية لكل واجهةانظر USAGE.md لتوثيق مفصّل حول تفسير إحصاءات الواجهة والسلوك الخاص بكل منصة.
المقاييس المتاحة:
تُجمع الإحصاءات كل ثانيتين في خيط خلفي بتأثير ضئيل على الأداء.
Homebrew (macOS / Linux):
brew install rustnet
Ubuntu (22.04 LTS+) / Linux Mint 21+ / Pop!_OS 22.04+:
sudo add-apt-repository ppa:domcyrus/rustnet
# on Pop!_OS: sudo apt-manage add ppa:domcyrus/rustnet
sudo apt update && sudo apt install rustnet
Fedora (42+):
sudo dnf copr enable domcyrus/rustnet
sudo dnf install rustnet
openSUSE Tumbleweed:
sudo zypper addrepo https://download.opensuse.org/repositories/home:/domcyrus:/rustnet/openSUSE_Tumbleweed/home:domcyrus:rustnet.repo
sudo zypper refresh
sudo zypper install rustnet
Arch Linux:
sudo pacman -S rustnet
Nix / NixOS:
nix-shell -p rustnet
# Then inside the shell: sudo rustnet
من crates.io:
cargo install rustnet-monitor
Windows (Chocolatey):
# Run in Administrator PowerShell
# Requires Npcap (https://npcap.com) installed with "WinPcap API-compatible Mode" enabled
choco install rustnet
منصات أخرى:
يتطلب التقاط الحزم صلاحيات مرتفعة:
# Quick start (all platforms)
sudo rustnet
# Linux: Grant capabilities to run without sudo (recommended)
sudo setcap 'cap_net_raw,cap_bpf,cap_perfmon+eip' $(which rustnet)
rustnet
الخيارات الشائعة:
rustnet -i eth0 # Specify network interface
rustnet --show-localhost # Show localhost connections
rustnet --no-resolve-dns # Disable reverse DNS lookups (enabled by default)
rustnet -r 500 # Set refresh interval (ms)
rustnet --theme tokyo-night # Theme: muted (default), vivid, catppuccin-mocha, tokyo-night, gruvbox, nord
rustnet --pcapng-export capture.pcapng # Annotated PCAPNG for Wireshark
يمكن أيضًا ضبط السمة وتجاوزات الألوان الفردية في ~/.config/rustnet/config.toml؛ ويمتلك --theme الأولوية. انظر USAGE.md لمخطط الإعدادات.
انظر INSTALL.md لإعداد الصلاحيات المفصّل وUSAGE.md للخيارات الكاملة.
إذا ضبطت الصلاحيات (capabilities) لكن واجهة TUI ما زالت تعرض
eBPF unavailable، فانظر eBPF غير متاح رغم ضبط الصلاحيات في قسم استكشاف الأخطاء وإصلاحها.
انظر USAGE.md لاختصارات لوحة المفاتيح المفصلة ونصائح التنقل.
أمثلة تصفية سريعة:
/google # Search for "google" anywhere
/port:443 # Filter by port
/process:firefox # Filter by process
/state:established # Filter by connection state
/dport:443 sni:github.com # Combine filters
الفرز:
s للتنقل بين الأعمدة القابلة للفرز (العملية، العناوين، الخدمة، التطبيق، الحالة، عرض النطاق)S (Shift+s) لتبديل اتجاه الفرزs حتى يظهر "إجمالي عرض النطاق ↓" (يفرز حسب السرعة المجمعة للرفع والتنزيل)انظر USAGE.md للدليل الكامل لصيغة التصفية والفرز.
مرشحات الكلمات المفتاحية:
port:44 - المنافذ التي تحتوي على "44" (443 و8080 و4433)sport:80 - منافذ المصدر التي تحتوي على "80"dport:443 - منافذ الوجهة التي تحتوي على "443"src:192.168 - عناوين IP المصدر التي تحتوي على "192.168"dst:github.com - الوجهات التي تحتوي على "github.com"process:ssh - أسماء العمليات التي تحتوي على "ssh"sni:api - أسماء مضيفات SNI التي تحتوي على "api"app:openssh - اتصالات SSH التي تستخدم OpenSSHstate:established - التصفية حسب حالة البروتوكولproto:tcp - التصفية حسب نوع البروتوكولتصفية الحالة:
state:syn_recv - اتصالات نصف مفتوحة (كشف فيضان SYN)يستخدم RustNet مهلات ذكية وتحذيرات مرئية قبل إزالة الاتصالات:
مؤشرات التقادم المرئية:
مهلات مدركة للبروتوكول:
Initial/Handshaking: 60 ثانيةمثال: يتحول اتصال HTTP إلى الأصفر عند 7.5 دقيقة، وإلى الأحمر عند 9 دقائق، ويُزال عند 10 دقائق.
انظر USAGE.md لتفاصيل المهلات الكاملة.
نرحب بالمساهمات! يرجى الاطلاع على CONTRIBUTING.md للإرشادات حول كيفية المساهمة.
انظر CONTRIBUTORS.md لقائمة الأشخاص الذين ساهموا في هذا المشروع.
هذا المشروع مرخّص بموجب رخصة Apache، الإصدار 2.0 - انظر ملف LICENSE للتفاصيل.
tshark/wireshark/tcpdump وsniffnet وnetstat وss وiftop وbandwhichنُقلت بعض الأقسام إلى ملفات مخصصة لتنظيم أفضل:
dst:sni:process:state:proto:/(?i)pattern/kubernetes اختيارية): اتصالات مربوطة بالبود والنطاق والحاوية الخاصة بها، وتظهر في لوحة التفاصيل وتصديرات JSON/PCAPNG ومرشحات pod: وns: وcontainer:. مفعّلة في صورة Docker الرسمية؛ وعلى الكتلة، استخدم إضافة kubectl-rustnet لتشغيله كبود تصحيح مؤقت. انظر USAGE.md.| النظرة العامة جدول الاتصالات مع إحصاءات حية ورسوم sparklines ![]() | التفاصيل SNI والتشفير وGeoIP وDPI لكل اتصال ![]() |
| الرسم البياني مخطط حركة المرور وتوزيع التطبيقات وأهم العمليات ![]() | النشاط صادر/وارد العملية وتغطية 60 ثانية والإسناد والنظراء البعيدون ![]() |
| المفتاح | الإجراء |
|---|
q | إنهاء (اضغط مرتين للتأكيد) |
Ctrl+C | إنهاء فوري |
x | مسح جميع الاتصالات (اضغط مرتين للتأكيد) |
Tab أو ] | التبويب التالي |
Shift+Tab أو [ | التبويب السابق |
1–5 | الانتقال إلى النظرة العامة / التفاصيل / النشاط / الرسم البياني / المساعدة |
↑/k ↓/j | التنقل لأعلى/لأسفل |
g G | الانتقال إلى أول/آخر اتصال |
Enter | عرض تفاصيل الاتصال |
Esc | الرجوع أو مسح المرشح |
c | نسخ العنوان البعيد |
p | تبديل أسماء الخدمات/المنافذ |
d | تبديل أسماء المضيفين/عناوين IP في النظرة العامة أو الصادر/الوارد في النشاط |
s S | التنقل بين أعمدة الفرز / تبديل الاتجاه |
a | تبديل تجميع العمليات |
Space | توسيع/طي مجموعة العمليات |
←/→ أو h/l | طي/توسيع المجموعة |
PageUp/PageDown أو Ctrl+B/F | التنقل بين الصفحات |
t | تبديل الاتصالات التاريخية (المغلقة) |
i | تبديل معلومات النظام في النظرة العامة أو تفاصيل الواجهة في النشاط |
r | إعادة ضبط العرض (التجميع والفرز والتصفية) |
/ | الدخول إلى وضع التصفية |
h | تبديل المساعدة |
state:established - الاتصالات القائمة فقطstate:quic_connected - اتصالات QUIC النشطةstate:dns_query - اتصالات استعلام DNSأمثلة مجمعة:
sport:80 process:nginx - اتصالات Nginx من المنفذ 80dport:443 sni:google.com - HTTPS إلى Googleprocess:firefox state:quic_connected - اتصالات QUIC لمتصفح Firefoxdport:22 app:openssh state:established - اتصالات OpenSSH القائمة