Sdílet prostřednictvím


Použití dynamického DNS k registraci názvů hostitelů na vlastním serveru DNS

Azure poskytuje překlad názvů pro virtuální počítače a instance rolí. Pokud překlad adres IP potřebuje překročit možnosti poskytované výchozím systémem DNS (Domain Name System), můžete zadat vlastní servery DNS. Použití vlastních serverů DNS vám umožňuje přizpůsobit řešení DNS tak, aby vyhovovalo vašim konkrétním potřebám. Můžete například potřebovat přístup k místním prostředkům přes řadič domény služby Active Directory.

Pokud jsou vaše vlastní servery DNS hostované jako virtuální počítače Azure, můžete předávat dotazy na názvy hostitelů pro stejnou virtuální síť do Azure a překládat názvy hostitelů. Pokud tuto možnost nechcete používat, můžete názvy hostitelů virtuálních počítačů zaregistrovat na serveru DNS pomocí dynamického DNS (DDNS). Azure nemá přihlašovací údaje k přímému vytváření záznamů na serverech DNS, takže jsou často potřeba alternativní uspořádání. Tento článek popisuje některé běžné scénáře s alternativami.

Klienti Windows

Klienti Windows nepřipojení k doméně se pokusí při spuštění nebo změně IP adresy pokusit o nezabezpečené aktualizace DDNS. Název DNS je název hostitele a přípona primárního DNS. Azure ponechá primární příponu DNS prázdnou, ale příponu ve virtuálním počítači můžete nastavit prostřednictvím uživatelského rozhraní nebo PowerShellu.

Klienti Windows připojení k doméně registrují své IP adresy v řadiči domény pomocí zabezpečeného DDNS. Proces připojení k doméně nastaví primární příponu DNS na klientovi a vytvoří a udržuje vztah důvěryhodnosti.

Klienti Linuxu

Klienti Linuxu se obvykle při spuštění neregistrují u serveru DNS. Předpokládají, že server DHCP (Dynamic Host Configuration Protocol) to dělá. Servery Azure DHCP nemají přihlašovací údaje k registraci záznamů na vašem serveru DNS. K odesílání aktualizací DDNS můžete použít nástroj s názvem nsupdate, který je součástí balíčku Bind. Vzhledem k tomu, že je protokol DDNS standardizovaný, můžete použít nsupdate i v případě, že na serveru DNS nepoužíváte vazbu.

K vytvoření a údržbě položky názvu hostitele na serveru DNS můžete použít háky, které poskytuje klient DHCP. Během cyklu DHCP klient spustí skripty v /etc/dhcp/dhclient-exit-hooks.d/souboru . Pomocí háků můžete zaregistrovat novou IP adresu pomocí nsupdate. Příklad:

#!/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

Můžete také použít nsupdate příkaz k provádění zabezpečených aktualizací DDNS. Když například použijete server DNS vazby, vygeneruje se pár veřejného privátního klíče (http://linux.yyz.us/nsupdate/). Server DNS je nakonfigurovaný (http://linux.yyz.us/dns/ddns-server.html) s veřejnou částí klíče, aby mohl ověřit podpis v požadavku. Pokud chcete poskytnout pár klíčů, nsupdatepoužijte -k možnost pro podepsání žádosti o aktualizaci DDNS.

Pokud používáte server DNS systému Windows, můžete použít ověřování Kerberos s parametrem -g v nsupdate, ale není k dispozici ve verzi nsupdatesystému Windows . Pokud chcete použít Protokol Kerberos, použijte kinit k načtení přihlašovacích údajů. Můžete například načíst přihlašovací údaje ze souboru keytab) a pak nsupdate -g je z mezipaměti vyzvednout.

V případě potřeby můžete k virtuálním počítačům přidat příponu vyhledávání DNS. Přípona DNS je zadána /etc/resolv.conf v souboru. Většina distribucí Linuxu automaticky spravuje obsah tohoto souboru, takže ho obvykle nemůžete upravovat. Příponu můžete přepsat pomocí příkazu klienta supersede DHCP. Příponu přepíšete tak, že do /etc/dhcp/dhclient.conf souboru přidáte následující řádek:

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