تخيل لو نشرت موقعًا على الويب من شبكتك المنزلية، وأنشأت سجلاً في نظام الأسماء المجالية (DNS) يشير إلى عنوان IP العام للراوتر الخاص بك. كيف يمكنك الحفاظ على تحديث سجل DNS الخاص بك عندما يتغير عنوان IP العام الخاص بك؟ ربما يجب أن تفكر في إعداد DNS الديناميكي لـ Cloudflare.
عادة ما يقوم مزودو خدمة الإنترنت (ISP) بتعيين عناوين IP ديناميكية لمشتركيهم، التي قد تتغير في أي وقت. ونتيجة لذلك، يظل سجل DNS الخاص بك يشير إلى عنوان IP ليس لك بعد الآن، ويصبح موقعك الإلكتروني غير قابل للوصول.
استمر في القراءة لأن هذا البرنامج التعليمي سيساعدك على الحفاظ على تحديث سجل DNS الخاص بك باستخدام واجهة برمجة التطبيقات (API) الخاصة بـ Cloudflare و PowerShell. لنبدأ الآن!
المتطلبات الأساسية
إذا كنت تخطط لمتابعة هذا البرنامج التعليمي عمليًا، فيما يلي الاحتياجات التي تحتاجها.
- A computer with PowerShell 7.1 where you’ll run the Cloudflare dynamic DNS update script. This tutorial will use a Windows 10 computer.
- A script editor of your choice. This tutorial will use Visual Studio Code v1.59.1 (recommended).
- A domain that you already own. The example domain in this tutorial is lazyexchangeadmin.cyou.
النطاقات ذات المستوى العلوي المجانية (TLD)، مثل .ml، و .ga، و .tk، و .cf، و .gq، لا تنطبق على الأتمتة الديناميكية لـ DNS لـ Cloudflare ولن تعمل مع هذا البرنامج التعليمي.
- A Cloudflare account. A free account is enough to use in this tutorial.
- يجب أن تكون قد أضفت بالفعل نطاقك إلى Cloudflare.
- يجب أن تكون قد أضفت سجل DNS تحت نطاقك في Cloudflare. سيكون سجل DNS A في هذا البرنامج التعليمي demo.lazyexchangeadmin.cyou بعنوان IP الأولي 0.0.0.0.

ما هو Cloudflare Dynamic DNS؟
سجلات DNS ثابتة بطبيعتها، ولا تتفاعل بشكل جيد مع عناوين IP الديناميكية. الآن، لحل تلك المشكلة، ستحتاج إلى إعداد DNS ديناميكي. لحسن الحظ، توفر Cloudflare واجهة برمجة التطبيقات التي تسمح لك بإدارة سجلات DNS بشكل برمجي.
لإعداد DNS ديناميكي لـ Cloudflare، ستحتاج إلى تشغيل عملية على جهاز العميل داخل شبكتك يقوم بعمليتين رئيسيتين: الحصول على عنوان IP العام الحالي لشبكتك وتحديث سجل DNS المقابل تلقائياً.
الصورة أدناه توضح الرسم البياني على المستوى العالي لكيفية حدوث تحديث سير تشغيل DNS السحابة الديناميكية لـ Cloudflare.

هناك العديد من عملاء DNS الديناميكية المتاحة للتثبيت، في الغالب لأنظمة Linux، مثل على خادم Ubuntu أو Raspberry PI. كما توجد خدمات DNS الديناميكية من جهات خارجية قد تكون مدفوعة أو مجانية. ولكن في هذا البرنامج التعليمي، ستقوم بنشر برنامج تحديث DNS الخاص بك يعمل على PowerShell 7.1.
الحصول على رمز API الخاص بـ Cloudflare
عند تحديث سجل DNS السحابة الديناميكية لـ Cloudflare بشكل برمجي، يجب على البرنامج النصي المستخدم التوثق لنفسه في واجهة برمجة تطبيقات Cloudflare. فقط بعد ذلك ستسمح Cloudflare لك بإجراء تغييرات على سجلات DNS في حسابك.
يسمح لك Cloudflare بإنشاء رموز API مع الصلاحيات الكافية للغرض المطلوب. يمكنك بدوره استخدام اسم المستخدم لحساب Cloudflare ورمز API الناتج للتوثيق مع واجهة برمجة تطبيقات Cloudflare.
لإنشاء رمز API لـ Cloudflare، اتبع هذه الخطوات.
1. قم بفتح المستعرض الخاص بك، وانتقل إلى https://dash.cloudflare.com/login/، وقم بتسجيل الدخول إلى حساب Cloudflare الخاص بك.
2. بعد تسجيل الدخول إلى لوحة التحكم الخاصة بـ Cloudflare، انقر فوق زر الملف الشخصي في الزاوية العلوية اليمنى وانقر على ملفي الشخصي.

3. بعد ذلك، انقر فوق رابط علامة التبويب رموز API. تحت قسم رموز API، انقر على زر إنشاء رمز. يفترض المثال أدناه أنك لم تقم بإنشاء أي رموز API بعد.

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

5. في قسم موارد المنطقة على صفحة إنشاء الرمز، انقر على مربع القائمة الأيمن وحدد منطقة DNS لتضمينها في وصول هذا الرمز. بعد اختيار منطقة DNS، انقر على المتابعة إلى الملخص.
اختياريًا، لتقييد فترة صلاحية رمز واجهة برمجة التطبيقات، قم بملء تاريخ البداية و تاريخ الانتهاء تحت قسم TTL. إذا تركتها فارغة، سيكون لديها رمز واجهة برمجة التطبيقات بدون تاريخ انتهاء.

6. قم بمراجعة الملخص وتأكيد أن لديك إذن DNS:Edit للمنطقة DNS المحددة مسبقًا. أخيرًا، انقر على إنشاء الرمز لإنشاء رمز واجهة برمجة التطبيقات.

7. بعد إنشاء رمز واجهة برمجة التطبيقات، قم بنسخ قيمة الرمز وتأكد من تخزينها بشكل آمن. عامل الرمز واجهة برمجة التطبيقات كما تعامل كلمة مرور.

8. عد إلى علامة التبويب رموز واجهة برمجة التطبيقات وتأكد من وجود رمز واجهة برمجة التطبيقات الذي أنشأته.

إعداد سكربت تحديث DNS الديناميكي لـ Cloudflare
لديك الآن حساب Cloudflare ورمز واجهة برمجة التطبيقات لديه إذن لتحرير منطقة DNS. ماذا بعد؟ ستحتاج إلى وضع رمز واجهة برمجة التطبيقات في استخدامه ودمجه مع سكربت يقوم بتحديث سجل DNS الديناميكي لـ Cloudflare بشكل برمجي.
هذا البرنامج التعليمي يوفر لك سكريبت PowerShell العامل بشكل خاص لتحديث سجل DNS في Cloudflare.
حفظ السكريبت
اتبع الخطوات التالية لحفظ سكريبت PowerShell لديناميكية Cloudflare DNS على جهاز الكمبيوتر الخاص بك.
1. قرر في أي مجلد ترغب في حفظ السكريبت وأنشئ هذا المجلد إذا لم يكن موجودًا بعد. في هذا المثال، موقع السكريبت هو في C:\CloudflareDDNS.
2. افتح محرر الشيفرة الخاص بك، مثل VSCode، وأنشئ ملف سكريبت PowerShell جديد بالاسم Update-CloudflareDDNS.ps1
. احفظ السكريبت داخل مجلد C:\CloudflareDDNS.
3. انسخ السكريبت أدناه، الصقه في محرر الشيفرة الخاص بك، واحفظ الملف. راجع التعليقات المضمنة لفهم وظيفة السكريبت.
تشغيل النص
الآن بعد حفظك لنص تحديث DNS الديناميكي من Cloudflare، ماذا التالي؟ قبل نشر النص، من الضروري اختبار توافق وظائفه. تشغيل النص يتطلب أربع تفاصيل ليكون ناجحًا، وهذه هي:
البريد الإلكتروني
– وهو عنوان البريد الإلكتروني لحسابك في Cloudflare.الرمز
– الرمز API الذي أنشأته سابقًا من حسابك في Cloudflare.النطاق
– اسم النطاق DNS الذي يحتوي على سجل DNS الذي تريد تحديثه. (على سبيل المثال، lazyexchangeadmin.cyou).السجل
– سجل DNS الذي تريد تحديثه. (على سبيل المثال، demo.lazyexchangeadmin.cyou).
لتشغيل النص، قم باتباع الخطوات التالية.
1. أولًا، افتح جلسة PowerShell. أو إذا كنت تستخدم VSCode، استخدم وحدة التحكم PowerShell في VSCode بدلاً من ذلك.
2. بعد ذلك، قم بإجراء بحث عن سجل DNS لتأكيد عنوان IP الحالي للسجل DNS. للقيام بذلك، قم بتشغيل cmdlet Resolve-DnsName
، كما يمكنك رؤيته أدناه. تأكد من توفير اسم النطاق الكامل (FQDN) باستخدام معلمة -Name
.
يجب أن يعيد الأمر سجل DNS الذي قمت بالبحث عنه، بما في ذلك عنوان IP الخاص به.

3. الآن، قم بتنفيذ السيناريو Update-CloudflareDDNS.ps1
لتحديث سجل DNS في Cloudflare عن طريق تشغيل الأمر التالي. تأكد من تغيير قيم Email
، Token
، Domain
، و Record
. يفترض الأمر التالي أن يكون السيناريو في C:\CloudflareDDNS\Update-CloudflareDDNS.ps1.
ثم يقوم السيناريو بأداء الإجراءات التالية، كما يمكنك رؤيتها في اللقطة أدناه.
- تحقق من صلاحية رمز الواجهة البرمجية (API).
- البحث عن النطاق الذي يحتوي على سجل DNS الذي يجب تحديثه.
- البحث عن سجل DNS الذي يجب تحديثه.
- مقارنة عنوان IP لسجل DNS مع عنوان IP الخارجي أو العام الفعلي.
- تحديث عنوان IP لسجل DNS في Cloudflare.
- عرض نتيجة تحديث DNS الديناميكي.

4. ارجع إلى لوحة التحكم الخاصة بك في Cloudflare وتحقق مما إذا كان سجل DNS يعكس عنوان IP الجديد. توضح اللقطة أدناه أن العنوان IP قد تغير إلى قيمة العنوان IP الخارجي بعد تشغيل سيناريو التحديث.

5. في الختام، قم بإجراء بحث آخر عن سجل DNS كما فعلت في الخطوة 2 للتحقق مما إذا كان العنوان IP الجديد قد انتشر بشكل عام بالفعل.
قد يستغرق انتشار سجل DNS بضع دقائق، ساعات، أو حتى أيام. في هذا المثال، استغرق انتشار Cloudflare أقل من دقيقة فقط.

جدولة مهمة تحديث Cloudflare Dynamic DNS
في هذه النقطة، لديك الآن سكريبت يعمل يحدث سجل ديناميكي DNS الخاص بك في Cloudflare. ولكن تشغيل السكريبت يدويا في كل مرة ليس الهدف. يجب عليك التأكد من أن تحديث DNS الديناميكي يعمل بشكل تلقائي على جدول زمني بقدر الضرورة.
تبعاً لنظام التشغيل الذي تستخدمه، تختلف طريقة جدولة تشغيل السكريبت، مثل مهمة cron في لينكس. ستقوم هذه الدروس بإنشاء مهمة مجدولة في ويندوز تقوم بتشغيل سكريبت تحديث سجل DNS الديناميكي في Cloudflare كل خمس دقائق.
تعريف إجراء المهمة المجدولة
يجب أن تحتوي المهمة المجدولة على إجراء، يمكنك إنشاؤه باستخدام الأمر New-ScheduledTaskAction
. في هذا المثال، الإجراء هو تشغيل سكريبت Update-CloudflareDDNS.ps1 باستخدام ملف التنفيذ PowerShell pwsh.exe
.
للقيام بذلك، افتح نافذة PowerShell كمسؤول. بعد ذلك، قم بنسخ وتشغيل الكود أدناه في PowerShell. تأكد من تغيير المتغيرات $scriptPath
, $Email,
$Token
, $Domain
, و $Record
.
إنشاء مشغل المهمة المجدولة
بعد تحديد ما ستقوم به المهمة، يجب عليك إنشاء مشغل أو جدول زمني للمهمة بتشغيل أمر New-ScheduledTaskTrigger
. انسخ الكود أدناه وقم بتشغيله في PowerShell لإنشاء مشغل مهمة جديد يعمل كل خمس دقائق ضمن فترة عشر سنوات.
تسجيل المهمة المجدولة الجديدة في النظام
أخيرًا، أنت مستعد لتسجيل المهمة المجدولة الجديدة على الكمبيوتر. ولفعل ذلك، ستحتاج إلى تشغيل أمر الـ Register-ScheduledTask
، نفس الأمر كما في الشيفرة أدناه. قم بنسخ الشيفرة أدناه وتشغيلها في PowerShell لتسجيل المهمة المجدولة.
ستعمل المهمة المجدولة الناتجة تحت حساب النظام المحلي. لا تتردد في تعيين حساب مستخدم مختلف لتشغيل المهمة المجدولة حسب الحاجة.
كما يمكنك رؤية أدناه، أنشأ الأمر المهمة المجدولة والحالة جاهزة. من هذه النقطة فصاعدًا، سيتم تشغيل النصب بفاصل خمس دقائق.

الختام
ليس من الضروري أن يكون تحديث سجلات DNS مع تغييرات عناوين الآي بي الديناميكية أمرًا صعبًا. لا داعي لدفع رسوم لخدمة DNS دينامية! من خلال إدارة مناطق DNS الخاصة بك في Cloudflare، يمكنك الاستفادة من واجهة برمجة التطبيقات الخاصة بهم، مما يسمح لك بتحديث سجلات DNS الخاصة بك بشكل برمجي.
تعلمت في هذا البرنامج التعليمي كيفية تحديث سجل DNS ديناميكي في Cloudflare باستخدام مزيج من استدعاءات واجهة برمجة التطبيقات، PowerShell 7، ومهام مجدولة. كل ذلك يتيح لك تكوين آلية تحديث DNS الديناميكي في Cloudflare مرة واحدة والاحتفاظ بالتحديث بشكل دوري دون الحاجة لتدخلك.
هل تفكر في إدارة مناطق DNS الخاصة بك باستخدام Cloudflare للاستفادة من واجهة برمجة التطبيقات الخاصة بها؟ أم هل هناك طريقة أكثر راحة وسهولة تعرفها؟
Source:
https://adamtheautomator.com/cloudflare-dynamic-dns/