البنية
مستوى التحكم منفصل عن مستوى البيانات لأقصى مرونة وموثوقية
بنية مستوى التحكم
يعمل GovernFlow كمستوى تحكم خارجي، منفصل تماماً عن مستوى بيانات VPN. يتيح هذا الفصل الإدارة المركزية، والتوسع المستقل، وتجاوز الفشل دون التأثير على جلسات VPN النشطة.
governflowd
البرنامج الخفي الرئيسي الذي يوفر REST API، وتنسيق المجموعة، وإدارة الجلسات، وتكامل OpenVPN عبر Unix socket.
governflow-ls
خادم التراخيص لإدارة التراخيص متعددة المستأجرين مع تراخيص موقعة RSA-SHA256 والتحكم في الميزات القائم على المستوى.
governflow-query
مساعد خفيف الوزن يستدعيه OpenVPN لتكوين العميل، وقواعد جدار الحماية، وإدارة المسارات.
libgovernflow
مكتبة مشتركة مع وظائف مشتركة: التسجيل، تحليل التكوين، تجميع اتصالات قاعدة البيانات، والتحقق من الترخيص.
┌──────────────────────────────────────────┐ │ GovernFlow Control Plane │ ├──────────────────────────────────────────┤ │ │ │ ┌────────────────────────────────────┐ │ │ │ governflowd │ │ │ │ ┌──────────────────────────────┐ │ │ │ │ │ Core: config, log, db, http │ │ │ │ │ └──────────────────────────────┘ │ │ │ │ ┌──────────────────────────────┐ │ │ │ │ │ Plugins: 14 dynamic modules │ │ │ │ │ └──────────────────────────────┘ │ │ │ │ Ports: 8443 (API), 8444 (UDP), │ │ │ │ 8445 (Raft), Unix Socket │ │ │ └────────────────────────────────────┘ │ │ │ │ │ ┌─────────────────┴──────────────────┐ │ │ │ libgovernflow.so │ │ │ └────────────────────────────────────┘ │ │ │ ├──────────────────────────────────────────┤ │ OpenVPN Data Plane │ ├──────────────────────────────────────────┤ │ ┌────────────────────────────────────┐ │ │ │ OpenVPN Server + governflow-query │ │ │ │ (client-connect/disconnect hooks) │ │ │ └────────────────────────────────────┘ │ └──────────────────────────────────────────┘
طوبولوجيا المجموعة
بنية موزعة مع توافق Raft للتوفر العالي
العقدة القائدة
تتعامل مع جميع عمليات الكتابة وتنسق حالة المجموعة. يتم انتخابها تلقائياً عبر توافق Raft.
العقد التابعة
تكرر الحالة من القائد وتتعامل مع عمليات القراءة. يمكن أن تصبح قائدة إذا فشل القائد الحالي.
حماية النصاب
تتطلب الكتابات تأكيد الأغلبية. يمنع split-brain ويضمن عدم فقدان البيانات أثناء تجاوز الفشل.
قنوات الاتصال
تدفق البيانات
كيف يتكامل GovernFlow مع OpenVPN للتكوين في الوقت الفعلي
العميل يتصل بـ OpenVPN
يستقبل OpenVPN طلب الاتصال ويفعّل سكريبت client-connect
governflow-query يجلب التكوين
يستعلم من governflowd عبر Unix socket للحصول على تكوين العميل (IP، المسارات، QoS، المنطقة)
تطبيق التكوين
قواعد جدار الحماية عبر pf/iptables، المسارات مضافة، ملف push مُنشأ لـ OpenVPN
تتبع الجلسة في المجموعة
الجلسة مسجلة عبر جميع عقد المجموعة مع قفل موزع لمنع التكرارات
المكدس التقني
مبني مع الأداء والموثوقية في الاعتبار