عن المشروع
dsnitch هي أداة خفيفة أحادية الملف لفحص حركة الشبكة وDNS الصادرة، مصممة خصيصًا لحاويات Docker. تستخدم تقنية eBPF الحديثة في Linux لتوفير رؤية فورية لجميع النشاطات الشبكية الصادرة من الحاويات، بما في ذلك اتصالات TCP/UDP، واختبارات ICMP، واستعلامات DNS، دون الحاجة إلى تعديل مكدسات شبكات الحاويات أو حاويات جانبية أو برامج مراقبة ثقيلة.
تربط الأداة مجسات eBPF سلبية داخل النواة مباشرة بالتسلسل الهرمي الموحد لـ cgroup v2 على المضيف ونقطة تتبع حالة مقابس TCP في النواة. تعترض طلبات الاتصال الصادرة، واختبارات ICMP من الطبقة الثالثة، وحمولات DNS الخام على المنفذ 53، وتربط المقابس ببيانات وصفية لحاويات Docker وأسماء المضيفات المحلولة في مساحة المستخدم عبر حلقات BPF خالية من الأقفال مع حمل CPU شبه معدوم (أقل من 1%).
تشمل الميزات الرئيسية: إسناد الحاويات بدون لمس من خلال الربط المباشر بـ cgroup v2، واعتراض DNS داخل النواة مع فك ترميز Hickory DNS في مساحة المستخدم لحل سلاسل CNAME كاملة، وتتبع اتصالات حتمي يعتمد على مؤشرات ذاكرة النواة (skaddr) لتجنب التصادم عبر الاتصالات المتزامنة ومساحات أسماء الشبكات، ودعم بروتوكول ICMP الأصلي، وعمودان للوجهة والعنوان الفعلي يعرضان أسماء المضيفات المحلولة عبر DNS ونقاط نهاية IP الأساسية، وتصفية ذكية لضوضاء glibc تتخطى استعلامات getaddrinfo() الوهمية على منفذ UDP 0.
توفر الواجهة التفاعلية المقسمة المبنية بـ Ratatui شجرة هرمية للحاويات مع عدادات اتصالات حية على اليسار، وتدفقًا صادرًا ملونًا في الوقت الفعلي على اليمين، مع بحث فوري، وقفل للحاويات، وتبديل لحركة المضيف. يدعم وضع البث بدون واجهة (-s) إخراجًا نصيًا بسيطًا للتسجيل أو خطوط CI/CD أو الأنابيب.
التثبيت سهل: تتوفر ملفات ثنائية مُعدة مسبقًا لمعماريات x86_64 وARM64، أو يمكن البناء من المصدر باستخدام Rust الليلي مع مكون rust-src. يتطلب نواة Linux 5.8+ مع cgroups v2 موحدة وBTF مفعلة، بالإضافة إلى الوصول إلى Docker daemon.
للمستخدمين غير المميزين، توصي dsnitch باستخدام setcap لمنح صلاحيات Linux دنيا (cap_sys_admin، cap_net_admin، cap_dac_read_search) ليتمكن أي مستخدم في مجموعة docker من تشغيلها دون sudo. بدلاً من ذلك، يمكن تشغيلها مع sudo. تتضمن الأداة اختبارات وحدة في الذاكرة ومجموعة اختبارات تكامل آلية تعمل ضد حاويات Docker حية.
المشروع مرخص تحت GNU General Public License v3.0 ويتم صيانته بواسطة Infomaniac.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.