العودة إلى التحديثات
New releaseAug 15, 2026

network-monitor v0.7.5

أداة مراقبة اتصالات الشبكة في الوقت الفعلي مبنية بلغة Rust وGTK4، تعرض الاتصالات النشطة مع إحصائيات الإدخال/الإخراج المباشرة في واجهة رسومية حديثة.

مشاركة

مراقب الشبكة

عرض توضيحي لمراقب الشبكة على سطح مكتب جنوم على لينكس

أداة مراقبة اتصالات الشبكة في الوقت الفعلي مبنية باستخدام Rust وGTK4، تعرض الاتصالات النشطة مع إحصائيات الإدخال/الإخراج الحية في واجهة رسومية حديثة.

rust dependency status

الميزات

  • مراقبة في الوقت الفعلي: تراقب باستمرار اتصالات الشبكة النشطة
  • إحصائيات الإدخال/الإخراج: تعرض معدلات الرفع/التنزيل الحية لكل اتصال
  • تحديد العملية: تعرض البرنامج ومعرف العملية (PID) المرتبط بكل اتصال
  • واجهة مستخدم GTK4 حديثة: واجهة رسومية نظيفة ومتجاوبة مع تصميم Libadwaita
  • واجهة طرفية (TUI): واجهة طرفية تفاعلية بنفس قدرات المراقبة
  • تحليل العناوين: يبسط العناوين الشائعة (localhost, any, mDNS)
  • تصفية الاتصالات: يفلتر اتصالات localhost لإخراج أنظف
  • تكامل مع جنوم: دعم مناسب لفئة WM للتثبيت في الرصيف والتكامل مع سطح المكتب
  • تثبيت مزدوج: يدعم التثبيت المحلي للمستخدم وعلى مستوى النظام
  • معالجة أخطاء قوية: استرداد شامل للأخطاء مع إرشادات إعداد واضحة
  • محسّن للأداء: تخزين مؤقت للعملية وتخطيط لتحسين الاستجابة

المتطلبات

  • Rust 1.70+ (إصدار 2021)
  • مكتبات تطوير GTK4
  • مكتبات تطوير Libadwaita
  • نظام لينكس مع نظام ملفات /proc
  • Linux 5.8+ (لإمكانيات eBPF التفصيلية)
  • Rust الإصدار الليلي وbpf-linker (لتجميع eBPF)

التثبيت على Ubuntu/Debian:

sudo apt update
sudo apt install libgtk-4-dev libadwaita-1-dev

التثبيت على Fedora:

sudo dnf install gtk4-devel libadwaita-devel

التثبيت

الطريقة 1: التثبيت من المصدر مع تكامل سطح المكتب

  1. استنساخ المستودع:
git clone <repository-url>
cd network-monitor
  1. التثبيت محليًا (لا يتطلب صلاحيات sudo):
./scripts/install.sh
  1. أو التثبيت على مستوى النظام (يتطلب صلاحيات sudo):
sudo ./scripts/install.sh

سينفذ نص التثبيت ما يلي:

  • بناء كل من ثنائيات GTK4 و TUI (وضع التصحيح للمحلي، والإصدار للنظام)
  • تثبيت الثنائيات في ~/.local/bin/ (محليًا) أو /usr/local/bin/ (على مستوى النظام)
  • تثبيت ملف سطح المكتب مع فئة WM المناسبة لتثبيت رصيف جنوم
  • تثبيت الأيقونات في أدلة الأيقونات المناسبة
  • تحديث ذاكرة التخزين المؤقت للأيقونات وقاعدة بيانات سطح المكتب
  • ضمان إمكانية تثبيت التطبيق على رصيف/لوحة معلومات جنوم

الطريقة 2: البناء والتشغيل مباشرة

  1. استنساخ المستودع:
git clone <repository-url>
cd network-monitor
  1. بناء وتشغيل:
cargo run

أو بناء في وضع الإصدار:

cargo build --release
./target/release/network-monitor

الطريقة 3: بناء وتشغيل نسخة TUI

  1. استنساخ المستودع:
git clone <repository-url>
cd network-monitor
  1. بناء وتشغيل TUI:
cargo build --bin nmt
./target/debug/nmt

أو بناء في وضع الإصدار:

cargo build --release --bin nmt
./target/release/nmt

إلغاء التثبيت

إزالة النسخة المثبتة

إزالة التثبيت المحلي:

./scripts/uninstall.sh

إزالة على مستوى النظام (تتطلب صلاحيات sudo):

sudo ./scripts/uninstall.sh

سينفذ نص إلغاء التثبيت إزالة الثنائي وملف سطح المكتب والأيقونات من المواقع المناسبة وتحديث جميع ذاكرات التخزين المؤقت ذات الصلة.

الاستخدام

الواجهة الرسومية GTK4

تشغيل تطبيق مراقب الشبكة:

cargo run

سيفتح التطبيق نافذة GTK4 تعرض:

  • العملية (ID): اسم العملية ومعرفها PID مع تعيين دقيق من المقبس إلى العملية
  • البروتوكول: بروتوكول TCP/UDP
  • المصدر: نقطة النهاية المحلية (محللة إلى تنسيق قابل للقراءة)
  • الوجهة: نقطة النهاية البعيدة (محللة إلى تنسيق قابل للقراءة)
  • الحالة: حالة الاتصال (مؤسس، يستمع، إلخ)
  • الإرسال (TX): معدل الرفع المحسوب من إحصائيات الإدخال/الإخراج للعملية
  • الاستلام (RX): معدل التنزيل المحسوب من إحصائيات الإدخال/الإخراج للعملية
  • المسار: مسار الأمر الكامل والوسائط من /proc/[pid]/cmdline

الواجهة الطرفية (TUI)

واجهة nmt الطرفية لمراقب الشبكة

تشغيل الواجهة الطرفية:

cargo run --bin nmt

توفر الواجهة الطرفية نفس قدرات المراقبة في واجهة طرفية تفاعلية:

مفاتيح التحكم:

  • q - إنهاء التطبيق
  • r - تحديث الاتصالات يدويًا
  • a - تبديل التحديث التلقائي (فترات 2 ثانية)
  • ↑/↓ - التنقل عبر الاتصالات
  • ←/→ - التمرير أفقيًا عبر الجدول
  • 1-8 - الفرز حسب الأعمدة (العملية (ID)، البروتوكول، المصدر، الوجهة، الحالة، الإرسال، الاستلام، المسار)

الميزات:

  • مراقبة الاتصالات في الوقت الفعلي مع التحديث التلقائي
  • أعمدة قابلة للفرز مع مؤشرات مرئية
  • التمرير الأفقي للجداول العريضة
  • تحديد حجم الأعمدة الذكي - يحصل العمود الأخير على العرض المتبقي الكامل
  • بروتوكولات ملونة (TCP/TCP6 بالأخضر، UDP/UDP6 بالأصفر)
  • تمييز الاتصال النشط
  • معلومات العملية ومعرفها PID
  • عرض معدل الإدخال/الإخراج الحي
  • نفس ترتيب الأعمدة كنسخة GTK4 للاتساق

تحليل العناوين

يتم تبسيط العناوين الشائعة لسهولة القراءة:

  • 0.0.0.0:* أو *:*ANY
  • 127.0.0.1:* أو [::1]:*LOCALHOST
  • 224.0.0.251:*MDNS

كيف يعمل

خلفية eBPF (مدفوعة بالأحداث)

يستخدم التطبيق kprobes على مستوى النواة (tcp_v4_connect, tcp_v6_connect, tcp_close, inet_csk_accept) بدلاً من استقصاء /proc/net. يوفر هذا:

  • مدفوعة بالأحداث: تسليم الأحداث دون ميلي ثانية، بدون حمل استقصاء (~1-3% CPU)
  • PID مباشر: يتم التقاطه عند نقطة الفحص عبر bpf_get_current_pid_tgid()، بدون مسح inode
  • اتصالات قصيرة العمر: لا تفوت أبدًا بين فترات الاستقصاء

وضع eBPF

توفر خلفية eBPF مراقبة اتصالات مدفوعة بالأحداث مع حمل أقل وأحداث في الوقت الفعلي، مقارنة بطريقة الاستقصاء الافتراضية /proc/net. يمكنها التقاط اتصالات قصيرة العمر قد يفوتها الاستقصاء.

المتطلبات الأساسية:

rustup toolchain install nightly
cargo install bpf-linker

البناء والتشغيل:

cargo build

التشغيل كمستخدم عادي (يتطلب نواة 5.8+):

منح الصلاحيات المطلوبة لنظام Linux للثنائي مرة واحدة:

sudo setcap cap_bpf,cap_net_admin,cap_perfmon+ep target/debug/network-monitor
./target/debug/network-monitor

أو لنسخة TUI:

sudo setcap cap_bpf,cap_net_admin,cap_perfmon+ep target/debug/nmt
./target/debug/nmt

للبناءات الإصدارية، اضبط المسار وفقًا لذلك:

sudo setcap cap_bpf,cap_net_admin,cap_perfmon+ep target/release/network-monitor

سيخرج التطبيق برسالة إعداد إذا كان eBPF غير متاح (صلاحيات مفقودة أو نواة غير مدعومة).

البنية

  • GTK4: إطار عمل واجهة مستخدم حديث عبر المنصات
  • Libadwaita: مكونات واجهة مستخدم على نمط جنوم
  • Tokio: وقت تشغيل غير متزامن للعمليات المتزامنة
  • Aya + eBPF: تتبع اتصالات على مستوى النواة مع kprobes للأحداث في الوقت الفعلي
  • PID مباشر: تحديد العملية عبر bpf_get_current_pid_tgid() عند نقطة الفحص
  • استدعاءات النظام: قراءة مباشرة لـ /proc/[pid]/io لإحصائيات الإدخال/الإخراج
  • معالجة الأخطاء: أنواع أخطاء شاملة مع استرداد لطيف باستخدام thiserror
  • التخزين المؤقت للأداء: تخزين مؤقت لتخطيط واجهة المستخدم للأداء الأمثل

حزم Linux

Packaging status

التبرعات

إذا وجدت هذا المشروع مفيدًا، يرجى التفكير في التبرع لدعم تطويره.

  • مونيرو: 88LyqYXn4LdCVDtPWKuton9hJwbo8ZduNEGuARHGdeSJ79BBYWGpMQR8VGWxGDKtTLLM6E9MJm8RvW9VMUgCcSXu19L9FSv
  • بيتكوين: bc1q6mh77hfv8x8pa0clzskw6ndysujmr78j6se025

الترخيص

هذا المشروع مفتوح المصدر. راجع ملف LICENSE للتفاصيل.

الفئات