الوصول العالي لسيرفر ®High Availability ) Pi-hole )

بعد أن قمت بشرح كيفية تنصيب ®Pi-hole وتقوية القواعد في المقالين السابقين, سنقوم باعداد الوصول العالي بواسطة سرفرين ®Pi-hole
هل الافضل ان تتوفر على اثنين و هل يعد افضل مانع لتتبع داخل الشبكة ؟ و بشكل جاد لماذا اثنان ®Pi-hole ؟

بل هو كذلك ليس هناك ما هو أفضل من سيرفر ®Pi-hole لإيقاف التتبع و الاعلانات و المواقع الضارة داخل الشبكة لكن ماذا لو حدت عطل بالسيرفر لسبب ما !؟ اما ان يكون بسبب برمجي أو متعلق بالعتاد , عند إذ سيشل الوصول إلى الإنترنت إن كنت تستخدمه كسيرفر DNS الوحيد. وكحل لهذا يجب أن تتوفر على جهاز آخر على الشبكة ليعمل كمترجم تان لكن ستجد ان من المتعب جدا ان تقوم بمزامنة أو وضع نفس القواعد يدويا في كلى السيرفرين في هذا المقال سأستعرض طريقة بسيطة للحفاظ على تكوينات القائمة وإعدادات DNS المحلية متطابقة بين الاثنين. وهنا يأتي دور Gravity Syn يجب أن يستغرق الإعداد بضع دقائق فقط.

الميزات

Gravity-Sync يكرر القواعد لسيرفرن و اعدادات منع الاشهار والتتبع المتضمنة في قاعدة البيانات و الاعدادات التاية:

  • إعدادات Adlist جنبًا إلى جنب مع الحالة والتعليقات.
  • قوائم Domain / RegEx البيضاء والقائمة السوداء جنبًا إلى جنب مع الحالة والتعليقات.
  • العملاء والمهام الجماعية ، إلى جانب الحالة والأوصاف.

Gravity-Sync تقوم أيضًا بتكرار إعدادات DNS / DHCP للشبكة المحلية ، والتي تتضمن:

  • سجلات DNS المحلية.
  • سجلات CNAME المحلية.
  • مجموعة IP الثابتة يدويا في اعدادات DHCP.

القيود

لن تقوم Gravity Sync بما يلي:

  • بتعديل أو مزامنة سيرفرات DNS الاساسية المعتمدة من طرف ®Pi-hole كمثال :
Google
OpenDNS
Level3
Comodo
DNS.WATCH
Quad9
CloudFlare DNS
أو مخصص 

  • دمج سجلات الاستعلام أو الإحصائيات والبيانات طويلة الأمد أو ذاكرات التخزين المؤقت أو معلومات الاستعلام الأخرى.
  • مزامنة معلومات نطاق DHCP و وقت تحرير IP لجهاز العميل

خطوات الإعداد

1. مراجعة متطلبات النظام

تتطلب Gravity Sync مثيلين Pi-hole 5.x يعملان على مضيفين منفصلين.
يجب تنصطيب سيرفري ®Pi-hole والتحقق من عملها قبل تثبيت Gravity Sync.
يتم تطوير Gravity Sync دائمًا مقابل أحدث إصدار من ®Pi-hole المتوفر بشكل عام.
يوصى أيضًا بالتحقق من أنك تستخدم توزيعات Linux التي تم اعتماد ®Pi-hole ليشتغل عليها.

  • عند تشغيل ®Pi-hole داخل حاوية ، يتم دعم صورة Pi-hole Docker الرسمية فقط.
  • بالنسبة لعمليات نشر ®Pi-hole القياسية والحاوية ، سيتم تشغيل Gravity Sync مباشرة على نظام التشغيل المضيف وليس داخل صورة الحاوية.
  • يجب أن تستخدم الحاويات bind mounts لتقديم أدلة تكوين ®Pi-hole المحلية للحاوية ، وليس مجلدات Docker.
  • يمكنك مزج / مطابقة عمليات النشر القياسية والقائمة على الحاويات لـ ®Pi-hole ، أو استخدام توزيعات Linux الأساسية المختلفة ، في نفس نشر Gravity Sync.
  • سيقوم مُثبِّت Gravity Sync بإجراء فحوصات للتأكد من توفر الاعتماديات المطلوبة على نظامك أثناء التثبيت. في حالة فقد أي من هذه الاعتماديات ، سيحاول المثبِّت استخدام مدير حزم النظام لإضافتها. إذا فشل ذلك ، فستتاح لك الفرصة لتثبيتها يدويًا ثم المحاولة مرة أخرى.
Git
OpenSSH
Rsync
Sudo
  • ستحتاج إلى حساب مستخدم بامتيازات مسؤول على مستوى نظام التشغيل على كل مضيف ®Pi-hole. يمكن أن يكون هذا حسابًا مخصصًا بقدرة sudo ، أو حساب الجذر للنظام.
    أثناء التثبيت ، إذا كنت تستخدم أي حساب بخلاف الجذر ، فسيتم منحه أذونات sudo بدون كلمة مرور على النظام. حتى إذا كنت تستخدم حساب الجذر للنظام ، فستظل الأداة المساعدة sudo بحاجة إلى التثبيت على النظام.

    • لتعديل ملف sudores نفد الامر
visudo 

تم غير من

%sudo  ALL=(ALL:ALL) ALL

الى

%sudo  ALL=(ALL) NOPASSWD: ALL

ليكون الملف مقارب لهذا

# This file MUST be edited with the 'visudo' command as root.
# Please consider adding local content in /etc/sudoers.d/ instead of
# directly modifying this file.
# See the man page for details on how to write a sudoers file.
Defaults	env_reset
Defaults	mail_badpass
Defaults	secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin"
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root	ALL=(ALL:ALL) ALL
# Members of the admin group may gain root privileges
%admin ALL=(ALL) ALL
# Allow members of group sudo to execute any command
%sudo  ALL=(ALL) NOPASSWD: ALL
# See sudoers(5) for more information on "#include" directives:
#includedir /etc/sudoers.d

أداء التخزين

  • نظرًا لطبيعة ®Pi-hole الذي يكتب بها باستمرار سجلات log في القرص الصلب ، فقد يكون مسيئًا لبطاقة SD الخاصة بـ Raspberry Pi.
    تقدم Gravity Sync تحسين التخزين و تجزئة قواعد البيانات قيد التشغيل وأخذ النسخ الاحتياطية وإجراء فحوصات السلامة ونقل الملفات بين الأجهزة.
    كلما كانت قاعدة بيانات ®Pi-hole أكبر ، زاد الوقت المستغرق لأداء هذه المهام ، وربما هناك مخاطر إضافية للفساد بسبب فشل النسخ المتماثل.
  • عند استخدام Raspberry Pi ، يُقترح استخدام وسائط تخزين يمكنها التعامل مع عمليات الكتابة الكتيرة . يوصى بشدة باستخدام جهاز USB مخصص للتخزين ، مثل SSD خارجي صغير. إذا فشلت جلسات النسخ المتماثل لـ Gravity Sync أو كانت غير متسقة ، فهذا إما لا يكمل النسخ الاحتياطي أو لا يجتاز اختبار التكامل ، غالبًا ما يكون أداء التخزين هو السبب الأساسي.

المنصات المختبرة

  • بينما لا يمكن اختبار Gravity Sync في جميع الأماكن التي يمكن تشغيلها تقنيًا ، يوضح هذا المخطط الأماكن التي تم اختبارها فيها.
    يحتوي ®Pi-hole على قائمة بالأنظمة الأساسية المدعومة إذا كان تثبيتًا افتراضيًا ، ولكن إذا كان ®Pi-hole يعمل في حاوية ، فإنه يوفر مزيدًا من المرونة.
التوزيعة الاصدار Pi-hole نوعية
CentOS 8 Stream Default/Docker
Debian 11 Default/Docker
Debian 10 Default/Docker
DietPi 8.3 Default
Fedora 35 Docker
Photon 4.0 Docker
Raspbian 11 Default/Docker
Rocky 8.5 Docker
Ubuntu 21.10 Default/Docker
Ubuntu 20.04 Default/Docker

لم يتم تطوير Gravity Sync بواسطة مشروع ®Pi-hole أو تابع له.
هذا مشروع غير رسمي ، جهد مجتمعي ، يسعى إلى تنفيذ النسخ المتماثل (والذي لا يعد حاليًا جزءًا من منتج ®Pi-hole الأساسي) بطريقة توفر الاستقرار والقيمة لمستخدمي ®Pi-hole . تم اختبار الكود عبر بيئات مستخدم متعددة ولكن هناك دائمًا عنصر المخاطرة الذي ينطوي عليه تشغيل أي برنامج تعسفي تجده على الإنترنت.
®Pi-hole هي وشعار ®Pi-hole هما علامتان تجاريتان مسجلتان لشركة Pi-hole LLC.

2. ثتبيت Gravity Sync

  • يرجى التأكد من قراءة متطلبات النظام قبل بدء التثبيت.
  • قبل إجراء أي تغييرات كبيرة على إعداد ®Pi-hole ، بما في ذلك تثبيت Gravity Sync ، يجب أن تأخذ نسخة احتياطية من التكوين الخاص بك من خلال وظيفة Pi-hole Teleport.
  • داخل واجهة الويب انتقل التالي لاخد نسحة الاحتياط

Settings > Teleporter > Backup

ثتبيت السكريبت

افتح جلسة SSH لكلى سيرفري Pi-hole، وقم بتنفيذ البرنامج النصي التالي بصلاحيات المستخدم الجدر root .

 curl -sSL https://gravity.vmstan.com | bash

سيتحقق المثبت من أن لديك جميع الاعتماديات الضرورية لاستخدام Gravity Sync ، بما في ذلك نشر Pi-hole النشط. سيضيف أيضًا ملف تكوين sudo بدون كلمة مرور للمستخدم الحالي ، إذا كان مطلوبًا.
تأكد من تشغيل نص التثبيت على كلى المستضيفين قبل بدء الاعدادت.

3. إعدادت Gravity Sync

إذا لم يكن لديك ملف اعدادات موجود ، سيطالبك المثبت بإنشاء الملف. يمكن أيضًا تكوينه لاحقًا عن طريق الامر التالي :

gravity-sync config

يطلب كل تثبيت ل Gravity Sync ملف اعدادته المستقل في كل سيرفر على حدا .

ستوجهك أداة التكوين المساعدة خلال عملية:

  • ستطلب عنوان IP لسيرفر الاخر .

  • تحديد اسم مستخدم SSH للاتصال بمضيف Pi-hole الاخر.

  • إنشاء مفتاح SSH للاتصال.

  • توفير تفاصيل حول كيفية اعدادات كلى السرفرين.

  • سيتم حفظ الاعدادات في ’ etc/gravity-sync/gravity-sync.conf/’ . إذا كنت بحاجة إلى إجراء تعديلات على إعداداتك في المستقبل ، فيمكنك تحرير هذا الملف أو تشغيل أداة التكوين لإنشاء واحد جديد.

  • بعد ان تقوم بتكوين ملف الاعدادات في كلى المضيفين انتقل إلى مرحلة التنفيذ.

تخصيص منفذ SSH لمن اراد ذلك

  • يتم اعداد Gravity Sync افتراضيًا لاستخدام منفذ SSH القياسي (22) ولكن إذا كنت بحاجة إلى تغيير هذا ، مثل إذا كنت تعبر NAT / جدار الحماية لنشر متعدد المواقع ، فيمكنك استخدام منفذ غير قياسي. للقيام بذلك ، ما عليك سوى تحديد رقم منفذ SSH المستهدف في أمر التكوين.
    كمثال :slight_smile:
 gravity-sync config 1234 
#استبدل 1234 بالمنفد المناسب 

4. استخدام Gravity Sync

تجريب

قم بإجراء مقارنة بين قواعد البيانات البعيدة والمحلية ، والتي لن تسبب بأي تغيير ، وتحقق مما إذا كان كل شيء قد تم تكوينه بشكل صحيح. افعل ذلك من كلى المضيفين.

gravity-sync compare

بعد تشغيل Gravity Sync بنجاح ، فإنه سيشير إلى ما إذا كانت هناك تغييرات معلقة بين قاعدتي البيانات.

أول مزامنة

  • يجب عليك الآن اختيار المستضيف الاول ل Pi-hole الذي يحتوي حاليًا على قائمة الإعدادات وتشغيل الأمر التالي لإرسال كل هذه الإعدادات إلى نظيره لأول مرة.
gravity-sync push

  • إذا لم تتبع هذه الخطوة ، خاصةً إذا كان أحد المستضيفين Pi-hole عبارة عن تثبيت جديد ، فإنك تخاطر بالكتابة فوق الاعدادات الحالية بإعداد افتراضي أو أي شيء آخر غير مرغوب فيه. اي سيقوم بارسال الاعدادات الافتراضة الى السرفر القديم وينتج عن ذلك ازالة لكافة الاعدادات التي كنت تستخدمها

الأمر الافتراضي

  • الأمر الافتراضي لـ Gravity Sync بسيط.
gravity-sync
  • ستجري Gravity Sync بعض الفحوصات للمساعدة في ضمان النجاح، ثم تتوقف قبل إجراء التغييرات إذا اكتشفت مشكلة. ستؤدي أيضًا وظيفة المقارنة نفسها الموضحة أعلاه ، وإذا لم تكن هناك تغييرات، فستخرج دون محاولة نسخ البيانات.

مثال: إذا تم تعديل gravity.db على السيرفر الاخر ، ولكن تم تغيير ملف custom.list على المستوى المحلي ، فستقوم Gravity Sync الآن بسحب gravity.db ثم دفع custom.list وأخيرًا إعادة قراءة الإعدادات الجديدة على كل خادم. سيؤدي أيضًا إلى إجراء مزامنة لكل مكون فقط إذا كانت هناك تغييرات داخل كل نوع للنسخ المتماثل. لذلك إذا قمت بإجراء تغيير بسيط على إعدادات DNS المحلية الخاصة بك ، فلن يؤدي ذلك إلى مزامنة قاعدة البيانات gravity.db
في حالة وجود تغييرات في الاعدادات في نفس الوقت على كلى السيرفر (على سبيل المثال ، تغييرات custom.list في كلا الجانبين) ، ستحاول Gravity Sync تحديدها استنادًا إلي التأريخ الزمني على كلى الجانبين تم تنقل التغير الأخير ، وفي هذه الحالة سيتم اعتبار التغييرات الأخيرة وكتابتها على الجانب الآخر.
Gravity Sync لا تدمج محتويات الملفات في هذه الحالة .
إذا اكتمل التنفيذ ، سيكون لديك الآن نسخة متزامنة من gravity.db و custom.list و
05-pihole-custom-cname.conf على كلى السرفرين.

5. أتمتة Gravity Sync

الأتمتة ( Automation )

  • يتم إنجاز أتمتة المزامنة عن طريق تنفيذ البرنامج النصي عبر systemd لكل مضيف.
  • لفعل ذلك نفد الامر
gravity-sync auto

    • يتم تكوين مهام الأتمتة داخل systemd افتراضيًا للتشغيل في أوقات شبه عشوائية على كل سيرفر.
      المزامنة يجب أن يحدث كل ما انقضت 5 دقائق افتراضيا .
    • (ستحاول عمليات النسخ أيضًا تلقائيًا لأول مرة بعد دقيقتين من إعادة تشغيل / تشغيل أي من النظامين.)
    • الآن ، قم بإجراء تعديل صغير آخر على إعداداتك الأساسية وانتظر حتى الوقت المحدد لمعرفة ما إذا كانت التغييرات قد تمت مزامنتها. إذا كان الأمر كذلك ،
      إذا لم تتم ، فعد الى أمر الأتمتة . هذه العملية كفيلة باصلاح الامر .

إعداد وتيرة المزامنة

  • إذا كنت ترغب في ضبط وتيرة الأتمتة ، يمكنك القيام بذلك عن طريق تمرير خيار الوتيرة إلى وظيفة الأتمتة عبر الامر .
gravity-sync auto 
#للمزامنة في كل ساعة

او

gravity-sync auto 
#للمزامنة في كل نصف ساعة

او

gravity-sync auto quad	
#للمزامنة في كل ربع ساعة
  • لا يزال هناك عنصر عشوائي في كل إعداد لمنع التداخل. يمكنك استخدام خيارات تردد مختلفة على كل سيرفر Gravity Sync إذا رغبت في ذلك.قم بتعديل الملف يدويا

إعادة توجيه سجل log

بشكل افتراضي ، تتم كتابة سجلات المهام التلقائية الخاصة بـ Gravity Sync في سجل النظام الخاص بالنظام. إذا كنت ترغب في إعادة توجيه هذا إلى موقع مختلف ، فقم بتحرير ملف gravity-sync.conf وأضف السطر ’ log. مسار الملف واسمه =GS_SYSLOG_REDIRECT ’ مع المسار الذي ترغب في استخدامه بدلاً من ذلك. إذا قمت بالفعل بتمكين الأتمتة ، بعد تحرير ملف .conf الخاص بك ، سوف تحتاج إلى تشغيل الأمر الأتممة مرة أخرى حتى يتم تنفيذ إعادة توجيه السجل

إعجابَين (2)

هذا فيديو مساعد

إعجاب واحد (1)

هناك من يتكلم في الوسط التقني الانجليزي عن السيرفر AdGuard المحلي وتفضيله على سيرفر Pi-hole المحلي
برأيك هل يستدعي الأمر للإنتقال أو البدء بAdGuard

إعجاب واحد (1)

افضل استخدام pi-hole يتيح امكانيات اكبر
هذا شرح لتنصيب AdGuard واستخدامه يمكنك ملاحضة الفوارق