استخدام DNS الديناميكي لتسجيل أسماء المضيفين في خادم DNS الخاص بك

يوفر Azure تحليل الاسم للأجهزة الظاهرية (VM) ومثيلات الأدوار. عندما يتطلب تحليل الاسم الخاص بك تجاوز الإمكانات التي يوفرها DNS الافتراضي الخاص بـ Azure، يمكنك توفير خوادم DNS الخاصة بك. يمنحك استخدام خوادم DNS الخاصة بك القدرة على تخصيص حل DNS الخاص بك ليناسب احتياجاتك الخاصة. على سبيل المثال، قد تحتاج إلى الوصول إلى الموارد المحلية عبر وحدة تحكم مجال Active Directory.

عندما تتم استضافة خوادم DNS المخصصة كأجهزة Azure الظاهرية، يمكنك إعادة توجيه استعلامات أسماء المضيفين لنفس الشبكة الظاهرية إلى Azure لحل أسماء المضيفين. إذا كنت لا ترغب في استخدام هذا الخيار، يمكنك تسجيل أسماء مضيفي الجهاز الظاهري في خادم DNS باستخدام DNS الديناميكي (DDNS). لا يمتلك Azure بيانات الاعتماد اللازمة لإنشاء السجلات مباشرةً في خوادم DNS الخاصة بك، لذلك غالباً ما تكون هناك حاجة إلى وجود ترتيبات بديلة. فيما يلي بعض السيناريوهات الشائعة مع البدائل:

عملاء Windows

يجرِّب عملاء Windows غير المنضمين إلى المجال تحديثات DDNS غير الآمنة عند بدء التشغيل أو عند تغيير عنوان IP الخاص بهم. اسم DNS هو اسم المضيف مضافاً إليه لاحقة DNS الأساسية. يترك Azure لاحقة DNS الأساسية فارغة، ولكن يمكنك تعيين اللاحقة في الجهاز الظاهري عبر واجهة المستخدم أو PowerShell.

يقوم عملاء Windows المنضمون إلى المجال بتسجيل عناوين IP الخاصة بهم عبر وحدة التحكم بالمجال باستخدام DDNS الآمن. تُعيّن عملية الانضمام إلى المجال لاحقة DNS الأساسية للعميل وتُنشئ علاقة الثقة وتحتفظ بها.

عملاء Linux

لا يقوم عملاء Linux عموماً بتسجيل أنفسهم في خادم DNS عند بدء التشغيل، لأنه من المفترض أن خادم DHCP يقوم بذلك. لا تحتوي خوادم DHCP الخاصة ب Azure على بيانات الاعتماد لتسجيل السجلات في خادم DNS الخاص بك. يمكنك استخدام أداة تُسمى nsupdate، والتي يتم تضمينها في حزمة Bind، لإرسال تحديثات DDNS. نظراً لأن بروتوكول DDNS موحد، يمكنك استخدام nsupdate حتى إذا كنت لا تستخدم Bind على خادم DNS.

يمكنك استخدام الروابط التي يوفرها عميل بروتوكول التكوين الديناميكي للمضيف (DHCP) لإنشاء إدخال اسم المضيف والاحتفاظ به على خادم DNS. خلال دورة DHCP، يقوم العميل بتنفيذ البرامج النصية في /etc/dhcp/dhclient-exit-hooks.d/. يمكنك استخدام الروابط لتسجيل عنوان IP الجديد باستخدام nsupdate. على سبيل المثال:

#!/bin/sh
requireddomain=mydomain.local

# only execute on the primary nic
if [ "$interface" != "eth0" ]
then
    return
fi

# When you have a new IP, perform nsupdate
if [ "$reason" = BOUND ] || [ "$reason" = RENEW ] ||
   [ "$reason" = REBIND ] || [ "$reason" = REBOOT ]
then
   host=`hostname`
   nsupdatecmds=/var/tmp/nsupdatecmds
     echo "update delete $host.$requireddomain a" > $nsupdatecmds
     echo "update add $host.$requireddomain 3600 a $new_ip_address" >> $nsupdatecmds
     echo "send" >> $nsupdatecmds

     nsupdate $nsupdatecmds
fi

يمكنك أيضاً استخدام الأمر nsupdate لإجراء تحديثات DDNS آمنة. على سبيل المثال، عندما تستخدم خادم Bind DNS، يتم إنشاء مفتاح مزدوج عام-خاص (http://linux.yyz.us/nsupdate/). يتم تكوين خادم DNS (http://linux.yyz.us/dns/ddns-server.html) باستخدام الجزء العام من المفتاح، بحيث يمكنه التحقق من التوقيع على الطلب. لتوفير المفتاح المزدوج إلى nsupdate، استخدم الخيار -k، لتوقيع طلب تحديث DDNS.

عندما تستخدم خادم Windows DNS، يمكنك استخدام مصادقة Kerberos مع المعلمة -g في nsupdate، ولكنه غير متوفر في إصدار Windows الخاص بـ nsupdate. لاستخدام Kerberos، استخدم kinit لتحميل بيانات الاعتماد. على سبيل المثال، يمكنك تحميل بيانات الاعتماد من ملف keytab)، ثم سيقوم nsupdate -g بجمع بيانات الاعتماد، من ذاكرة التخزين المؤقت.

يمكنك إضافة لاحقة بحث DNS إلى الأجهزة الظاهرية الخاصة بك إذا لزم الأمر. يتم تحديد لاحقة DNS في ملف /etc/resolv.conf. تدير معظم توزيعات Linux محتوى هذا الملف تلقائياً، لذلك لا يمكنك عادةً تحريره. ومع ذلك، يمكنك تجاوز اللاحقة باستخدام الأمر supersede الخاص بعميل DHCP. لتجاوز اللاحقة، أضف السطر التالي إلى الملف /etc/dhcp/dhclient.conf:

supersede domain-name <required-dns-suffix>;