Usare DNS dinamico per registrare i nomi host nel proprio server DNS
Azure offre la risoluzione dei nomi per le macchine virtuali e le istanze del ruolo. Quando la risoluzione dei nomi deve superare le funzionalità fornite dal DNS (Domain Name System) predefinito di Azure, è possibile fornire i propri server DNS. L'uso di propri server DNS consente di personalizzare la soluzione DNS in base alle esigenze specifiche. Ad esempio, potrebbe essere necessario accedere alle risorse locali tramite il controller di dominio di Active Directory.
Quando i server DNS personalizzati sono ospitati come macchine virtuali di Azure, è possibile inoltrare query sui nomi host per la stessa rete virtuale in Azure per risolvere i nomi host. Se non si vuole usare questa opzione, è possibile registrare i nomi host della macchina virtuale nel server DNS usando dns dinamico (DDNS). Poiché Azure non ha le credenziali per creare direttamente i record nei server DNS, è spesso necessario ricorrere a soluzioni alternative. Questo articolo descrive alcuni scenari comuni, con alternative.
Client Windows
I client Windows non aggiunti a un dominio tentano aggiornamenti DDNS non protetti all'avvio o quando cambiano l'indirizzo IP. Il nome DNS è il nome host unito al suffisso DNS primario. Azure lascia vuoto il suffisso DNS primario, ma è possibile impostare il suffisso nella VM tramite l'interfaccia utente o PowerShell.
I client Windows appartenenti a un dominio registrano i relativi indirizzi IP con il controller di dominio usando DDNS sicuro. Il processo appartenente a un dominio imposta il suffisso DNS primario nel client e crea e gestisce la relazione di trust.
Client Linux
I client Linux in genere non si registrano con il server DNS all'avvio. Presuppongono che il server DHCP (Dynamic Host Configuration Protocol) lo faccia. I server DHCP di Azure non dispongono delle credenziali per registrare i record nel server DNS. È possibile usare uno strumento denominato nsupdate
, incluso nel pacchetto Bind, per inviare gli aggiornamenti del DDNS. Poiché il protocollo DDNS è standardizzato, è possibile usare nsupdate
anche quando non si usa Bind nel server DNS.
È possibile usare gli hook messi a disposizione dal client DHCP per creare e gestire il nome host nel server DNS. Durante il ciclo DHCP, il client esegue gli script in /etc/dhcp/dhclient-exit-hooks.d/
. È possibile usare gli hook per registrare il nuovo indirizzo IP usando nsupdate
. Ad esempio:
#!/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. Ad esempio, quando si usa un server DNS bind, viene generata una coppia di chiavi pubblica-privata (http://linux.yyz.us/nsupdate/
). Il server DNS è configurato (http://linux.yyz.us/dns/ddns-server.html
) con la parte pubblica della chiave in modo che possa verificare la firma nella richiesta. Per fornire la coppia di chiavi a nsupdate
, usare l'opzione -k
per la richiesta di aggiornamento DDNS da firmare.
Quando si usa un server DNS Windows, è possibile usare l'autenticazione Kerberos con il -g
parametro in nsupdate
, ma non è disponibile nella versione di Windows di nsupdate
. Per usare Kerberos, caricare le credenziali con kinit
. Ad esempio, è possibile caricare le credenziali da un file keytab e quindi nsupdate -g
selezionare le credenziali dalla cache.
Se necessario, aggiungere un suffisso di ricerca DNS alle VM. Il suffisso DNS viene specificato nel /etc/resolv.conf
file. La maggior parte delle distribuzioni Linux gestiscono automaticamente il contenuto di questo file, quindi solitamente non può essere modificato. È possibile eseguire l'override del suffisso usando il comando del supersede
client DHCP. Per eseguire l'override del suffisso, aggiungere la riga seguente al /etc/dhcp/dhclient.conf
file:
supersede domain-name <required-dns-suffix>;