Uso di DNS dinamico per registrare i nomi host nel proprio server DNSUsing Dynamic DNS to register hostnames in your own DNS server

Azure offre la risoluzione dei nomi per le macchine virtuali e le istanze del ruolo.Azure provides name resolution for virtual machines (VMs) and role instances. Tuttavia, quando la risoluzione dei nomi offerta da Azure non è sufficiente, è possibile usare i propri server DNS.However, when your name resolution needs go beyond those provided by Azure, you can provide your own DNS servers. In questo modo è possibile personalizzare la soluzione DNS in base alle esigenze specifiche.This gives you the power 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 le query di nome host per la stessa rete virtuale in Azure per risolvere i nomi host.When your custom DNS servers are hosted as Azure VMs you can forward hostname queries for the same vnet to Azure to resolve hostnames. Se non si desidera usare questa route, è possibile registrare i nomi host delle VM nel server DNS tramite DNS dinamico.If you do not wish to use this route, you can register your VM hostnames in your DNS server using Dynamic DNS. Poiché Azure non è in grado (ad esempio, non offre le credenziali) di creare direttamente i record nei server DNS, è spesso necessario ricorrere a soluzioni alternative.Azure doesn't have the ability (e.g. credentials) to directly create records in your DNS servers, so alternative arrangements are often needed. Di seguito sono riportati alcuni scenari comuni con alternative.Here are some common scenarios with alternatives.

Client WindowsWindows clients

I client Windows non di dominio cercano di eseguire aggiornamenti DNS dinamici non protetti (DDNS) all'avvio o alla modifica dell'indirizzo IP.Non-domain-joined Windows clients attempt unsecured Dynamic DNS (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 può essere impostato nella VM tramite l'interfaccia utente o con l'automazione.Azure leaves the primary DNS suffix blank, but you can set this in the VM, via the UI or by using automation.

I client Windows appartenenti a un dominio registrano i relativi indirizzi IP con il controller di dominio usando DNS dinamico protetto.Domain-joined Windows clients register their IP addresses with the domain controller by using secure Dynamic DNS. 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 sono in grado o non dispongono delle credenziali per registrare i record nel server DNS.Azure's DHCP servers do not have the ability or credentials to register records in your DNS server. È possibile usare uno strumento denominato nsupdate, incluso nel pacchetto di binding, per inviare gli aggiornamenti del DNS dinamico.You can use a tool called nsupdate, which is included in the Bind package, to send Dynamic DNS updates. Poiché il protocollo DNS dinamico è standardizzato, è possibile usare nsupdate anche quando non si usa il pacchetto Bind sul server DNS.Because the Dynamic DNS 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/. Questo può essere usato per registrare il nuovo indirizzo IP tramite nsupdate.This can be used to register the new IP address by using nsupdate. Ad esempio:For example:

    #!/bin/sh
    requireddomain=mydomain.local

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

    # when we 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

È anche possibile usare il comando nsupdate per eseguire gli aggiornamenti dinamici protetti DNS.You can also use the nsupdate command to perform secure Dynamic DNS 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. È necessario usare l'opzione -k per indicare la coppia di chiavi a nsupdate, in modo da firmare la richiesta di aggiornamento DNS dinamico.You must use the -k option to provide the key-pair to nsupdate in order for the Dynamic DNS update request to be signed.

Quando si usa un server DNS Windows, è possibile usare l'autenticazione Kerberos con il parametro -g in nsupdate (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 (not available in the Windows version of nsupdate). A tale scopo, usare kinit per caricare le credenziali (ad esempio, da un file keytab).To do this, use kinit to load the credentials (e.g. from a keytab file). Quindi, nsupdate -g acquisirà le credenziali dalla cache.Then nsupdate -g will pick 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, è possibile ignorare il suffisso usando il comando supersede del client DHCP.However, you can override the suffix by using the DHCP client's supersede command. A tale scopo, in /etc/dhcp/dhclient.confaggiungere:To do this, in /etc/dhcp/dhclient.conf, add:

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