نظرة عامة
عند إدارة بنى تحتية شبكية ضخمة ذات كثافة اتصالات عالية، قد يؤدي تضخم جدول ARP إلى استهلاك موارد النواة وتباطؤ معالجة الحزم. هنا يبرز دور شيطان arpd، وهو حل متقدم يتيح نقل عبء استعلامات بروتوكول استكشاف العناوين والتخزين المؤقت إلى مساحة المستخدم (User Space) بكفاءة عالية. يتناول هذا الدليل الشامل آليات عمل arpd على توزيعات Ubuntu، مع تطبيق عملي تفصيلي لتشغيل الخدمة، وحفظ قاعدة البيانات، ومتابعة سجلات التوجيه خطوة بخطوة.
تجهيز النظام وتثبيت حزم الأدوات المساعدة
لبدء العمل وضمان توافر جميع الأدوات اللازمة لإدارة حزم الشبكة وتتبع العمليات النشطة، نقوم بتحديث مستودعات النظام وتثبيت الحزم الأساسية عبر تنفيذ الأمر apt-get update -qq && apt-get install -y iproute2 net-tools psmisc.

للتحقق من استقرار الملف التنفيذي لخدمة arpd ووجوده ضمن مسارات النظام المعرفة في متغير البيئة، نشغل الأمر which arpd.
يؤكد ظهور المسار /usr/sbin/arpd جاهزية البيئة التشغيلية لبدء التعامل مع الخدمة.

تتولى أداة arpd استقبال طلبات استعلام العناوين والرد عليها بشكل مستقل عن النواة، مع الاحتفاظ ببيانات المطابقة داخل قاعدة بيانات مفهرسة.
يمكننا استعراض خيارات التحكم وصيغ التشغيل التي يتيحها البرنامج عبر مراجعة واجهة المساعدة.
⚙️ [أبرز خيارات التشغيل]
-l : توجيه سجلات الاستعلامات وأنشطة التدقيق مباشرة إلى المخرج القياسي (stdout).-k : إرسال إشارة إيقاف لعملية arpd المرتبطة بالنواة حالياً.-b <dbase> : تعيين مسار ملف قاعدة البيانات لتخزين مدخلات العناوين.
(المسار الافتراضي للنظام: /var/lib/arpd/arpd.db)-B <number> : تحديد حجم مخزن استعلامات البث المجمعة (Broadcast Queries) لكل معاملة.-a <N> : ضبط الحد الأقصى لمحاولات الاستكشاف قبل وسم العنوان بأنه غير متوفر.-n <time> : تعيين الفترة الزمنية (بالثواني) لصلاحية السجلات قبل إزالتها عند الخمول.-R <rate> : تقييد معدل طلبات ARP المرسلة في الثانية الواحدة لمنع الإغراق.

استكشاف الواجهات الشبكية وجداول المطابقة الحالية
قبل تشغيل الخدمة، نحتاج إلى فحص الواجهات الشبكية المتاحة وتحديد المنفذ النشط عبر الأمر ip link show.
تُظهر المخرجات الواجهة المحلية lo إلى جانب واجهة الإيثرنت الأساسية eth0 بحالة تشغيل نشطة (UP).

للاطلاع على جدول الجوار (Neighbor Table) المخزن لدى النواة وتدقيق تعيينات IP وMAC الحالية، ننفذ الأمر ip neigh show.
يتضح من النتيجة ارتباط عنوان البوابة الافتراضية 172.18.0.1 عبر الواجهة eth0 بحالة اتصال مستقرة REACHABLE.

يمكننا أيضاً توظيف الأداة التقليدية لعرض جدول ARP بأرقام صريحة دون إجراء ترجمة أسماء عبر تشغيل arp -n.
يؤكد وجود الراية C (Complete) اكتمال مطابقة العنوان الفيزيائي وتسجيله بنجاح في ذاكرة التخزين المؤقت.

تهيئة مسار التخزين وإطلاق خادم arpd في الخلفية
يتطلب تشغيل arpd إنشاء دليل التخزين المخصص لحفظ ملف قاعدة البيانات الدائمة، لذا ننشئ المجلد عبر الأمر mkdir -p /var/lib/arpd.

لتفادي تضارب العمليات وضمان بدء جلسة نظيفة، نقوم بإنهاء أي آثار سابقة لعمليات قيد التشغيل بواسطة killall arpd 2>/dev/null || true.

نستخرج اسم واجهة الشبكة النشطة تلقائياً ونسندها للمتغير IFACE، ثم نطلق الخدمة مع تحديد مسار قاعدة البيانات وعدد محاولات الاستعلام عبر تشغيل IFACE=$(ip -o link show | awk -F': ' '{print $2}' | grep -v 'lo' | head -n1); arpd -b /var/lib/arpd/arpd.db -a 3 $IFACE.

للتثبت من استقرار الخدمة وتشغيلها كعملية خلفية دون أخطاء، نتحقق من جدول العمليات عبر ps aux | grep [a]rpd.
تُظهر المخرجات استقرار الخادم في الذاكرة بالخيارات والواجهة المحددة بدقة.

اختبار تدفق البيانات وإيقاف الخدمة بأمان
لتوليد حركة مرور واستحثاث تبادل حزم ARP مع البوابة والمحطات المجاورة، نقوم بإرسال حزم صدى تجريبية عبر الأمر ping -c 2 8.8.8.8 > /dev/null 2>&1 || true.

للاطلاع على السجلات التي جمعها خادم arpd وحفظها داخل قاعدة البيانات، نشغل الأمر arpd -l -b /var/lib/arpd/arpd.db 2>&1 | head -n 10 || true.
يوضح رأس البيانات بنية التخزين المنظمة التي تربط فهرس الواجهة وعنوان IP بالمعرف الفيزيائي المقابل (MAC Address).

عقب الانتهاء من الاختبارات، نقوم بتحرير موارد النظام وإيقاف العملية بهدوء عبر تشغيل killall arpd 2>/dev/null || true.

للتأكد من احتفاظ النظام بمسارات التوجيه وسلامة التخزين المؤقت في النواة بعد إيقاف الخدمة، نستعلم مجدداً عبر ip neigh show.
تؤكد النتيجة بقاء مدخل البوابة 172.18.0.1 عبر الواجهة eth0 بحالة REACHABLE دون انقطاع.

استعرضنا خلال هذا الشرح التطبيقي منهجية استخدام أداة arpd على نظام أوبونتو لتحسين كفاءة الذاكرة وتخفيف العبء عن كاش النواة، مما يمنح مسؤولي الأنظمة تحكماً مرناً في بيئات الإنتاج عالية الحركة الشبكية.