Usare DNS dinamico per registrare i nomi host nel proprio server DNSUse dynamic DNS to register hostnames in your own DNS server

Azure offre la risoluzione dei nomi per le macchine virtuali (VM) e le istanze del ruolo.Azure provides name resolution for virtual machines (VM) and role instances. Quando la risoluzione dei nomi offerta dal server DNS predefinito di Azure non è sufficiente, è possibile usare i propri server DNS.When your name resolution needs exceed the capabilities provided by Azure's default DNS, you can provide your own DNS servers. L'uso di propri server DNS consente di personalizzare la soluzione DNS in base alle esigenze specifiche.Using your own DNS servers gives you the ability to tailor your DNS solution to suit your own specific needs. Ad esempio, può essere necessario accedere a risorse locali tramite il controller di dominio Active Directory.For example, you may need to access on-premises resources via your Active Directory domain controller.

Quando i server DNS personalizzati vengono ospitati come VM di Azure, è possibile inoltrare query per i nomi host per la stessa rete virtuale ad Azure per risolvere i nomi host.When your custom DNS servers are hosted as Azure VMs, you can forward hostname queries for the same virtual network to Azure to resolve hostnames. Se non si vuole usare questa opzione, è possibile registrare i nomi host delle VM nel server DNS tramite DNS dinamico (DDNS).If you do not wish to use this option, you can register your VM hostnames in your DNS server using dynamic DNS (DDNS). Poiché Azure non ha le credenziali per creare direttamente i record nei server DNS, è spesso necessario ricorrere a soluzioni alternative.Azure doesn't have the credentials to directly create records in your DNS servers, so alternative arrangements are often needed. Di seguito sono riportati alcuni scenari comuni con alternative:Some common scenarios, with alternatives follow:

Client WindowsWindows clients

I client Windows non di dominio cercano di eseguire aggiornamenti DDNS non protetti all'avvio o alla modifica dell'indirizzo IP.Non-domain-joined Windows clients attempt unsecured DDNS updates when they boot, or when their IP address changes. Il nome DNS è il nome host unito al suffisso DNS primario.The DNS name is the hostname plus the primary DNS suffix. Azure lascia vuoto il suffisso DNS primario, ma è possibile impostare il suffisso nella VM tramite l'interfaccia utente o PowerShell.Azure leaves the primary DNS suffix blank, but you can set the suffix in the VM, via the user interface or PowerShell.

I client Windows appartenenti a un dominio registrano i relativi indirizzi IP con il controller di dominio usando DDNS sicuro.Domain-joined Windows clients register their IP addresses with the domain controller by using secure DDNS. Il processo appartenente a un dominio imposta il suffisso DNS primario nel client e crea e gestisce la relazione di trust.The domain-join process sets the primary DNS suffix on the client and creates and maintains the trust relationship.

Client LinuxLinux clients

I client Linux solitamente non si registrano con il server DNS all'avvio, presuppongono che il server DHCP esegua l'operazione.Linux clients generally don't register themselves with the DNS server on startup, they assume the DHCP server does it. I server DHCP di Azure non hanno le credenziali per registrare i record nel server DNS.Azure's DHCP servers do not have the credentials to register records in your DNS server. È possibile usare uno strumento denominato nsupdate, incluso nel pacchetto Bind, per inviare gli aggiornamenti del DDNS.You can use a tool called nsupdate, which is included in the Bind package, to send DDNS updates. Poiché il protocollo DDNS è standardizzato, è possibile usare nsupdate anche quando non si usa il pacchetto Bind sul server DNS.Because the DDNS protocol is standardized, you can use nsupdate even when you're not using Bind on the DNS server.

È possibile usare gli hook messi a disposizione dal client DHCP per creare e gestire il nome host nel server DNS.You can use the hooks that are provided by the DHCP client to create and maintain the hostname entry in the DNS server. Durante il ciclo DHCP, il client esegue gli script in /etc/dhcp/dhclient-exit-hooks.d/.During the DHCP cycle, the client executes the scripts in /etc/dhcp/dhclient-exit-hooks.d/. È possibile usare gli hook per registrare il nuovo indirizzo IP usando nsupdate.You can use the hooks to register the new IP address using nsupdate. Ad esempio: For example:

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

Si può anche usare il comando nsupdate per eseguire gli aggiornamenti di DDNS sicuro.You can also use the nsupdate command to perform secure DDNS updates. Ad esempio, quando si usa un server DNS con Bind, viene generatauna coppia di chiavi pubblica/privata.For example, when you're using a Bind DNS server, a public-private key pair is generated. Il server DNS è configurato con la parte pubblica della chiave, che consente di verificare la firma della richiesta.The DNS server is configured with the public part of the key, so that it can verify the signature on the request. Per fornire la coppia di chiavi a nsupdate, usare l'opzione -k per la richiesta di aggiornamento DDNS da firmare.To provide the key-pair to nsupdate, use the -k option, for the DDNS update request to be signed.

Quando si usa un server DNS Windows, si può usare l'autenticazione Kerberos con il parametro -g in nsupdate, ma non è disponibile nella versione Windows di nsupdate.When you're using a Windows DNS server, you can use Kerberos authentication with the -g parameter in nsupdate, but it's not available in the Windows version of nsupdate. Per usare Kerberos, caricare le credenziali con kinit.To use Kerberos, use kinit to load the credentials. Ad esempio, è possibile caricare le credenziali da un file keytab, quindi nsupdate -g preleva le credenziali dalla cache.For example, you can load credentials from a keytab file), then nsupdate -g picks up the credentials, from the cache.

Se necessario, aggiungere un suffisso di ricerca DNS alle VM.If needed, you can add a DNS search suffix to your VMs. Il suffisso DNS è specificato nel file /etc/resolv.conf .The DNS suffix is specified in the /etc/resolv.conf file. La maggior parte delle distribuzioni Linux gestiscono automaticamente il contenuto di questo file, quindi solitamente non può essere modificato.Most Linux distros automatically manage the content of this file, so usually you can't edit it. Tuttavia si può ignorare il suffisso usando il comando supersede del client DHCP.However, you can override the suffix by using the DHCP client's supersede command. Per ignorare il suffisso, aggiungere la seguente riga al file /etc/dhcp/dhclient.conf:To override the suffix, add the following line to the /etc/dhcp/dhclient.conf file:

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