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

network-monitor v0.7.5

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

مشاركة

مراقب الشبكة

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

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

rust dependency status

الميزات

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

المتطلبات

  • Rust 1.70+ (إصدار 2021)
  • مكتبات تطوير GTK4
  • مكتبات تطوير Libadwaita
  • نظام Linux مع نظام ملفات /proc
  • Linux 5.8+ (لقدرات eBPF الدقيقة)
  • Rust nightly و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 (وضع debug للمحلي، وrelease للنظام)
  • تثبيت الملفات التنفيذية في ~/.local/bin/ (محلي) أو /usr/local/bin/ (على مستوى النظام)
  • تثبيت ملف سطح المكتب مع فئة WM الصحيحة لتثبيت التطبيق في شريط GNOME
  • تثبيت الأيقونات في أدلة الأيقونات المناسبة
  • تحديث ذاكرة الأيقونات المؤقتة وقاعدة بيانات سطح المكتب
  • ضمان إمكانية تثبيت التطبيق في شريط/لوحة GNOME

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

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

أو البناء في وضع release:

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

أو البناء في وضع release:

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

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

إزالة الإصدار المثبّت

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

./scripts/uninstall.sh

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

sudo ./scripts/uninstall.sh

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

الاستخدام

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

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

cargo run

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

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

إجراءات الصف

  • النقر الأيسر: تحديد صف (يظهر أيضًا في الشريط السفلي)
  • النقر الأيمن: فتح قائمة السياق مع Copy Value وCopy Command و Kill "process" (PID)، والتي تسأل عما إذا كنت تريد الإنهاء (SIGTERM) أو الإنهاء القسري (SIGKILL)
  • Delete: إنهاء الصف المحدد حاليًا (نفس مربع حوار التأكيد)
  • Ctrl+C: نسخ محتوى الخلية
  • زر التحديث في شريط العنوان: التحديث فورًا (تُحدَّث القائمة أيضًا كل 3 ثوانٍ)

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

nmt tui of network-monitor

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

cargo run --bin nmt

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

عناصر التحكم بالمفاتيح:

  • q - الخروج من التطبيق
  • r - تبديل تحليل أسماء المضيفين
  • R - تحديث الاتصالات يدويًا
  • a - تبديل التحديث التلقائي (كل ثانيتين)
  • ↑/↓ - التنقل بين الاتصالات
  • ←/→ - التمرير الأفقي في الجدول
  • k / النقر الأيمن - فتح قائمة الإنهاء لصف (إنهاء / إنهاء قسري / إلغاء)
  • 1-8 - الترتيب حسب الأعمدة (Process(ID)، Protocol، Source، Destination، Status، TX، RX، Path)

الفأرة: النقر الأيسر يحدد صفًا، والنقر الأيمن يحدده ويفتح قائمة الإنهاء.

الميزات:

  • مراقبة الاتصالات في الوقت الفعلي مع التحديث التلقائي
  • أعمدة قابلة للترتيب مع مؤشرات مرئية
  • تمرير أفقي للجداول العريضة
  • تحجيم ذكي للأعمدة - يحصل العمود الأخير على كامل العرض المتبقي
  • بروتوكولات مرمّزة بالألوان (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% من المعالج)
  • 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

لإصدارات release، عدّل المسار وفقًا لذلك:

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

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

البنية

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

حزم Linux

الفئات