
dnscontrol v5.0.0-rc9
البنية التحتية كرمز لـ DNS!
DNSControl
DNSControl هو بنية تحتية كرمز (Infrastructure as Code) لنظام DNS. يتضمن لغة إعدادات كاملة الميزات (متوافقة مع Javascript)، بالإضافة إلى «إضافات» (plug-ins) تتعامل مع واجهات برمجة تطبيقات مزوّدي DNS مثل AWS Route 53 وCloudflare وGandi. يمكنه إرسال نفس سجلات DNS إلى مزوّدين متعددين. يعمل في أي مكان يعمل فيه Go (Linux، macOS، Windows). نموذج المزوّدين قابل للتوسيع، لذا يمكن إضافة المزيد من المزوّدين.
مثال
dnsconfig.js:
// define our registrar and providers
var REG_NAMECOM = NewRegistrar("name.com");
var r53 = NewDnsProvider("r53")
D("example.com", REG_NAMECOM, DnsProvider(r53),
A("@", "1.2.3.4"),
CNAME("www","@"),
MX("@",5,"mail.myserver.com."),
A("test", "5.6.7.8")
)
سيؤدي تشغيل dnscontrol preview إلى التواصل مع المزوّدين (هنا name.com كمسجّل وroute 53 كمضيف DNS)، وتحديد التغييرات التي يجب إجراؤها.
سيؤدي تشغيل dnscontrol push إلى إجراء تلك التغييرات مع المزوّد، وسيتم تحديث سجلات DNS الخاصة بي بشكل صحيح.
أسهل طريقة لتشغيل DNSControl هي استخدام حاوية Docker:
docker run --rm -it -v "$(pwd):/dns" ghcr.io/dnscontrol/dnscontrol preview
اطّلع على صفحة البدء في موقع التوثيق لتبدأ!
المزوّدون المدعومون
يدعم DNSControl 65 من مزوّدي DNS والمسجّلين:
¹يدعم أيضًا وظائف المسجّل ²مسجّل فقط
يستخدم Stack Overflow هذا النظام لإدارة مئات النطاقات والنطاقات الفرعية عبر مسجّلين ومزوّدي DNS متعددين.
يمكنك اعتباره بمثابة مُجمِّع (compiler) لنظام DNS. ملفات الإعدادات مكتوبة بلغة DSL تشبه إلى حد كبير JavaScript. يتم تجميعها إلى تمثيل وسيط (IR). تستخدم الواجهات الخلفية للمُجمِّع التمثيل الوسيط (IR) لتحديث مناطق DNS الخاصة بك على خدمات مثل Route53 وCloudflare وGandi، أو أنظمة مثل BIND.
المزايا
- أقل عرضة للأخطاء من تعديل ملف منطقة BIND.
- أكثر قابلية للتكرار من النقر على الأزرار في بوابة ويب.
- التبديل بسهولة بين مزوّدي DNS: لغة DNSControl غير مرتبطة بمورّد معيّن (vendor-agnostic). إذا استخدمتها للحفاظ على سجلات منطقة DNS الخاصة بك، يمكنك التبديل بسهولة بين مزوّدي DNS. في الواقع، سيرفع DNSControl سجلات DNS الخاصة بك إلى مزوّدين متعددين، مما يعني أنه يمكنك اختبار أحدهم أثناء التبديل إلى آخر. لقد بدّلنا المزوّدين 3 مرات في ثلاث سنوات ولم نفقد أي سجل DNS.
- طبّق مبادئ CI/CD على DNS! يحتفظ StackOverflow بإعدادات DNSControl في Git ويستخدم نظام CI الخاص بنا لنشر التغييرات. الاحتفاظ بمعلومات DNS في نظام التحكم في الإصدارات (VCS) يعني أن لدينا سجلًا كاملًا. يتيح لنا استخدام CI تضمين اختبارات الوحدة (unit-tests) واختبارات النظام (system-tests). هل تذكر عندما نسيت إضافة "." في نهاية سجل MX؟ لم نواجه هذه المشكلة منذ أن أضفنا اختبارًا للتأكد من أن Tom لا يقع في هذا الخطأ... مرة أخرى.
- اعتمد التحديثات القائمة على طلبات السحب (PRs) بأسلوب GitOps. اسمح للمطوّرين بإرسال التحديثات كطلبات سحب (PRs)، ويمكنك مراجعتها قبل الموافقة عليها.
- المتغيرات توفّر الوقت! عيّن عنوان IP كثابت واستخدم اسم المتغير في جميع أنحاء الملف. هل تحتاج إلى تغيير عنوان IP في كل مكان؟ فقط غيّر المتغير و«أعد التجميع».
- وحدات ماكرو! عرّف سجلات SPF أو MX أو غيرها من البيانات المتكررة مرة واحدة وأعد استخدامها لجميع النطاقات.
- تحكّم في Cloudflare من مصدر حقيقة واحد. فعّل/عطّل تمرير Cloudflare (زر «السحابة البرتقالية») مباشرة من ملفات DNSControl الخاصة بك.
- حافظ على مزامنة النطاقات المتشابهة باستخدام التحويلات (transforms) والميزات الأخرى. إذا كان من المفترض أن يكون أحد النطاقات نسخة مُصفّاة من نطاق آخر، فمن السهل إعداد ذلك.
- إنه قابل للتوسيع! جميع مزوّدي DNS مكتوبون كإضافات (plugins). كتابة إضافات جديدة أمر سهل جدًا.
التثبيت
يمكن تثبيت DNSControl عبر حزم لأنظمة macOS وLinux وWindows، أو من الكود المصدري. راجع التعليمات الرسمية.
عبر GitHub Actions (GHA)
انظر dnscontrol-action أو gacts/install-dnscontrol.
تحذيرات الميزات المُهمَلة (آخر تحديث 2025-11-21)
- ستتحول REV() من RFC2317 إلى RFC4183 في الإصدار v5.0. هذا تغيير جذري (breaking change). سيتم إخراج تحذيرات إذا كان تكوينك متأثرًا. لم يُعلَن عن أي موعد للإصدار v5.0 بعد. انظر https://docs.dnscontrol.org/language-reference/top-level-functions/revcompat
- NAMEDOTCOM وOPENSRS وSOFTLAYER بحاجة إلى مشرفين (maintainers)! لا يملك هؤلاء المزوّدون أي مشرف حاليًا. يستجيب المشرفون لطلبات السحب (PRs) ويصلحون الأخطاء في الوقت المناسب، ويحاولون مواكبة تغييرات البروتوكول. هل أنت مهتم بأن تكون بطلًا وتتبنّاها؟ تواصل مع tal at what exit dot org.
المساهمة
هل تريد المساهمة؟ سواء كان ذلك بإصلاح خطأ، أو إضافة مزوّد DNS جديد، أو تحسين التوثيق، فإن المساهمات مرحّب بها. راجع CONTRIBUTING.md لمعرفة كيفية البدء.
مزيد من المعلومات على موقعنا
الموقع الإلكتروني: https://docs.dnscontrol.org/
دليل البدء: https://docs.dnscontrol.org/getting-started/getting-started