Opzioni di risoluzione dei nomi DNS per macchine virtuali Linux in AzureDNS Name Resolution options for Linux virtual machines in Azure

Per impostazione predefinita, Azure fornisce la risoluzione dei nomi DNS per tutte le macchine virtuali contenute in una singola rete virtuale.Azure provides DNS name resolution by default for all virtual machines that are in a single virtual network. È possibile implementare la soluzione di risoluzione dei nomi DNS configurando i servizi DNS nelle macchine virtuali ospitate da Azure.You can implement your own DNS name resolution solution by configuring your own DNS services on your virtual machines that Azure hosts. Gli scenari seguenti consentono di scegliere quello più adatto alla situazione specifica.The following scenarios should help you choose the one that works for your situation.

Il tipo di risoluzione dei nomi usato dipende dal modo in cui macchine virtuali e istanze del ruolo devono comunicare.The type of name resolution that you use depends on how your virtual machines and role instances need to communicate with each other.

Nella tabella seguente vengono illustrate diverse ipotesi e le corrispondenti soluzioni di risoluzione dei nomi:The following table illustrates scenarios and corresponding name resolution solutions:

ScenarioScenario SoluzioneSolution SuffissoSuffix
Risoluzione dei nomi tra istanze del ruolo o macchine virtuali presenti nella stessa rete virtualeName resolution between role instances or virtual machines in the same virtual network Risoluzione dei nomi forniti da AzureName resolution that Azure provides nome host o nome di dominio completo (FQDN)hostname or fully-qualified domain name (FQDN)
Risoluzione dei nomi tra istanze del ruolo o macchine virtuali presenti in reti virtuali diverseName resolution between role instances or virtual machines in different virtual networks Server DNS gestiti dal cliente che inoltrano query tra reti virtuali per la risoluzione da parte di Azure (proxy DNS).Customer-managed DNS servers that forward queries between virtual networks for resolution by Azure (DNS proxy). Vedere Risoluzione dei nomi usando il server DNS.See Name resolution using your own DNS server. Solo nome di dominio completoFQDN only
Risoluzione dei nomi servizi e computer locali da istanze del ruolo o macchine virtuali in AzureResolution of on-premises computers and service names from role instances or virtual machines in Azure Server DNS gestiti dal cliente, ad esempio controller di dominio locale, controller di dominio di sola lettura locale o server DNS secondario sincronizzati tramite trasferimenti di zona.Customer-managed DNS servers (for example, on-premises domain controller, local read-only domain controller, or a DNS secondary synced by using zone transfers). Vedere Risoluzione dei nomi usando il server DNS.See Name resolution using your own DNS server. Solo nome di dominio completoFQDN only
Risoluzione di nomi host di Azure da computer localiResolution of Azure hostnames from on-premises computers Inoltro delle query a un server proxy DNS gestito dal cliente nella rete virtuale corrispondente.Forward queries to a customer-managed DNS proxy server in the corresponding virtual network. Il server proxy inoltra le richieste ad Azure per la risoluzione.The proxy server forwards queries to Azure for resolution. Vedere Risoluzione dei nomi usando il server DNS.See Name resolution using your own DNS server. Solo nome di dominio completoFQDN only
DNS inversi per indirizzi IP interniReverse DNS for internal IPs Risoluzione dei nomi usando il server DNSName resolution using your own DNS server N/Dn/a

Risoluzione dei nomi forniti da AzureName resolution that Azure provides

Oltre alla risoluzione dei nomi DNS pubblici, Azure offre la risoluzione dei nomi interni per macchine virtuali e istanze del ruolo che si trovano all'interno della stessa rete virtuale.Along with resolution of public DNS names, Azure provides internal name resolution for virtual machines and role instances that are in the same virtual network. In reti virtuali basate su Azure Resource Manager, il suffisso DNS è coerente attraverso la rete virtuale; il nome FQDN non è necessario.In virtual networks that are based on Azure Resource Manager, the DNS suffix is consistent across the virtual network; the FQDN is not needed. I nomi DNS possono essere assegnati sia a schede di interfaccia di rete (NIC), sia a macchine virtuali.DNS names can be assigned to both network interface cards (NICs) and virtual machines. Sebbene la risoluzione dei nomi fornita da Azure non richieda alcuna configurazione, non è la scelta più appropriata per tutti gli scenari di distribuzione, come illustrato nella tabella precedente.Although the name resolution that Azure provides does not require any configuration, it is not the appropriate choice for all deployment scenarios, as seen on the preceding table.

Funzionalità e considerazioniFeatures and considerations

FunzionalitàFeatures:

  • Non è necessaria alcuna configurazione per usare la risoluzione dei nomi fornita da Azure.No configuration is required to use name resolution that Azure provides.
  • Il servizio di risoluzione dei nomi fornito da Azure ha un'elevata disponibilità.The name resolution service that Azure provides is highly available. Non è necessario creare e gestire i cluster dei server DNS propri.You don't need to create and manage clusters of your own DNS servers.
  • Il servizio di risoluzione dei nomi fornito da Azure può essere usato insieme ai propri server DNS per risolvere i nomi host locali e i nomi host di Azure.The name resolution service that Azure provides can be used along with your own DNS servers to resolve both on-premises and Azure hostnames.
  • Viene fornita la risoluzione dei nomi tra macchine virtuali in reti virtuali, senza necessità del nome FQDN.Name resolution is provided between virtual machines in virtual networks without need for the FQDN.
  • È possibile usare nomi host personalizzati in grado di descrivere in modo più adeguato le distribuzioni, anziché usare nomi generati automaticamente.You can use hostnames that best describe your deployments rather than working with auto-generated names.

Considerazioni:Considerations:

  • Il suffisso DNS creato da Azure non può essere modificato.The DNS suffix that Azure creates cannot be modified.
  • Non è possibile registrare manualmente i propri record.You cannot manually register your own records.
  • WINS e NetBIOS non sono supportati.WINS and NetBIOS are not supported.
  • I nomi host devono essere compatibili con DNS.Hostnames must be DNS-compatible. I nomi devono usare solo 0-9, a-z e "-" e non possono iniziare o terminare con un "-".Names must use only 0-9, a-z, and '-', and they cannot start or end with a '-'. Vedere RFC 3696 Sezione 2.See RFC 3696 Section 2.
  • Il traffico di query DNS è limitato per ogni macchina virtuale.DNS query traffic is throttled for each virtual machine. La limitazione in genere non comporta alcun impatto sulla maggior parte delle applicazioni.Throttling shouldn't impact most applications. Se viene osservata la limitazione delle richieste, assicurarsi che la memorizzazione nella cache sul lato client sia abilitata.If request throttling is observed, ensure that client-side caching is enabled. Per altre informazioni, vedere Come usare al meglio la risoluzione dei nomi fornita da Azure.For more information, see Getting the most from name resolution that Azure provides.

Come usare al meglio la risoluzione dei nomi fornita da AzureGetting the most from name resolution that Azure provides

Memorizzazione nella cache sul lato client:Client-side caching:

Alcune query DNS non vengono inviate attraverso la rete.Some DNS queries are not sent across the network. La memorizzazione nella cache sul lato client consente di ridurre la latenza e migliorare la resilienza alle incoerenze di rete, tramite la risoluzione di query DNS ricorrenti da una cache locale.Client-side caching helps reduce latency and improve resilience to network inconsistencies by resolving recurring DNS queries from a local cache. I record DNS contengono una durata (TTL) che consente alla cache di memorizzare il record per il periodo di tempo più lungo possibile senza che questo influisca sullo stato di aggiornamento del record.DNS records contain a Time-To-Live (TTL), which enables the cache to store the record for as long as possible without impacting record freshness. Di conseguenza, la memorizzazione nella cache sul lato client è ideale per la maggior parte delle situazioni.As a result, client-side caching is suitable for most situations.

Alcune distribuzioni Linux non includono la memorizzazione nella cache per impostazione predefinita.Some Linux distributions do not include caching by default. Si consiglia di aggiungere una cache per ogni macchina virtuale dopo aver controllato che non vi sia già una cache locale.We recommend that you add a cache to each Linux virtual machine after you check that there isn't a local cache already.

Sono disponibili diversi pacchetti di memorizzazione nella cache DNS, ad esempio dnsmasq.Several different DNS caching packages, such as dnsmasq, are available. Ecco i passaggi per installare dnsmasq sulle distribuzioni più comuni:Here are the steps to install dnsmasq on the most common distributions:

Ubuntu (usa resolvconf)Ubuntu (uses resolvconf)

  • Installare il pacchetto dnsmasq ("sudo apt-get install dnsmasq").Install the dnsmasq package (“sudo apt-get install dnsmasq”).

SUSE (usa netconf):SUSE (uses netconf):

  1. Installare il pacchetto dnsmasq ("sudo zypper install dnsmasq").Install the dnsmasq package (“sudo zypper install dnsmasq”).
  2. Abilitare il servizio dnsmasq ("systemctl enable dnsmasq.service").Enable the dnsmasq service (“systemctl enable dnsmasq.service”).
  3. Avviare il servizio dnsmasq ("systemctl start dnsmasq.service").Start the dnsmasq service (“systemctl start dnsmasq.service”).
  4. Modificare "/etc/sysconfig/network/config" e sostituire NETCONFIG_DNS_FORWARDER="" con "dnsmasq".Edit “/etc/sysconfig/network/config”, and change NETCONFIG_DNS_FORWARDER="" to ”dnsmasq”.
  5. Aggiornare resolv.conf ("netconfig update") per impostare la cache come resolver DNS locale.Update resolv.conf ("netconfig update") to set the cache as the local DNS resolver.

CentOS di Rogue Wave Software (in precedenza OpenLogic) (usa NetworkManager)CentOS by Rogue Wave Software (formerly OpenLogic; uses NetworkManager)

  1. Installare il pacchetto dnsmasq ("sudo yum install dnsmasq").Install the dnsmasq package (“sudo yum install dnsmasq”).
  2. Abilitare il servizio dnsmasq ("systemctl enable dnsmasq.service").Enable the dnsmasq service (“systemctl enable dnsmasq.service”).
  3. Avviare il servizio dnsmasq ("systemctl start dnsmasq.service").Start the dnsmasq service (“systemctl start dnsmasq.service”).
  4. Aggiungere "prepend domain-name-servers 127.0.0.1;" in "/etc/dhclient-eth0.conf".Add “prepend domain-name-servers 127.0.0.1;” to “/etc/dhclient-eth0.conf”.
  5. Riavviare il servizio di rete ("service network restart") per impostare la cache come resolver DNS localeRestart the network service (“service network restart”) to set the cache as the local DNS resolver

Nota

: il pacchetto 'dnsmasq' è solo una delle cache DNS disponibili per Linux.: The 'dnsmasq' package is only one of the many DNS caches that are available for Linux. Prima di usarla, verificare che sia adatta in base alle esigenze specifiche e assicurarsi che non siano installate altre cache.Before you use it, check its suitability for your needs and that no other cache is installed.

Ripetizione di tentativi sul lato clientClient-side retries

DNS è principalmente un protocollo UDP.DNS is primarily a UDP protocol. Poiché il protocollo UDP non garantisce il recapito dei messaggi, la logica di ripetizione dei tentativi viene gestita nel protocollo DNS stesso.Because the UDP protocol doesn't guarantee message delivery, the DNS protocol itself handles retry logic. Ogni client DNS (sistema operativo) può includere una logica di ripetizione dei tentativi diversa, in base alle preferenze degli autori:Each DNS client (operating system) can exhibit different retry logic depending on the creator's preference:

  • i sistemi operativi Windows eseguono un nuovo tentativo dopo 1 secondo e ne eseguono un altro dopo 2, 4 e altri 4 secondi.Windows operating systems retry after one second and then again after another two, four, and another four seconds.
  • La configurazione di Linux predefinita esegue il tentativo dopo 5 secondi.The default Linux setup retries after five seconds. Modificare questa impostazione in modo da eseguire cinque tentativi a intervalli di 1 secondo.You should change this to retry five times at one-second intervals.

Per verificare le impostazioni correnti in una macchina virtuale Linux, aprire il file "cat /etc/resolv.conf" e osservare la riga "options", ad esempio:To check the current settings on a Linux virtual machine, 'cat /etc/resolv.conf', and look at the 'options' line, for example:

options timeout:1 attempts:5

Il file resolv.conf viene generato automaticamente e non deve essere modificato.The resolv.conf file is auto-generated and should not be edited. La procedura specifica per aggiungere la riga "options" varia a seconda della distribuzione:The specific steps that add the 'options' line vary by distribution:

Ubuntu (usa resolvconf)Ubuntu (uses resolvconf)

  1. Aggiungere la riga per le opzioni in "/etc/resolveconf/resolv.conf.d/head".Add the options line to '/etc/resolveconf/resolv.conf.d/head'.
  2. Eseguire "resolvconf -u" per aggiornare.Run 'resolvconf -u' to update.

SUSE (usa netconf)SUSE (uses netconf)

  1. Aggiungere "timeout:1 attempts:5" al parametro NETCONFIG_DNS_RESOLVER_OPTIONS="" in "/etc/sysconfig/network/config".Add 'timeout:1 attempts:5' to the NETCONFIG_DNS_RESOLVER_OPTIONS="" parameter in '/etc/sysconfig/network/config'.
  2. Eseguire "netconfig update" per aggiornare.Run 'netconfig update' to update.

CentOS di Rogue Wave Software (in precedenza OpenLogic) (usa NetworkManager)CentOS by Rogue Wave Software (formerly OpenLogic) (uses NetworkManager)

  1. Aggiungere "echo "options timeout:1 attempts:5"" in "/etc/NetworkManager/dispatcher.d/11-dhclient".Add 'echo "options timeout:1 attempts:5"' to '/etc/NetworkManager/dispatcher.d/11-dhclient'.
  2. Eseguire "service network restart" per aggiornare.Run 'service network restart' to update.

Risoluzione dei nomi usando il server DNSName resolution using your own DNS server

Le esigenze di risoluzione nome possono andare oltre le funzionalità presenti in Azure.Your name resolution needs may go beyond the features that Azure provides. Ad esempio, potrebbe essere necessaria una risoluzione DNS tra reti virtuali.For example, you might require DNS resolution between virtual networks. Per coprire questo scenario, è possibile usare i propri server DNS.To cover this scenario, you can use your own DNS servers.

I server DNS all'interno di una rete virtuale possono inoltrare query DNS ai resolver ricorsivi di Azure per risolvere i nomi host all'interno della stessa rete virtuale.DNS servers within a virtual network can forward DNS queries to recursive resolvers of Azure to resolve hostnames that are in the same virtual network. Ad esempio, un server DNS in esecuzione in Azure può rispondere a query DNS per i propri file di zona DNS e inoltrare tutte le altre query ad Azure.For example, a DNS server that runs in Azure can respond to DNS queries for its own DNS zone files and forward all other queries to Azure. Questa funzionalità consente alle macchine virtuali di visualizzare sia le voci nel file di zona che i nomi host forniti da Azure (tramite il server d'inoltro).This functionality enables virtual machines to see both your entries in your zone files and hostnames that Azure provides (via the forwarder). L'accesso ai resolver ricorsivi di Azure viene fornito tramite l'indirizzo IP virtuale 168.63.129.16.Access to the recursive resolvers of Azure is provided via the virtual IP 168.63.129.16.

L'inoltro del DNS abilita anche la risoluzione DNS tra reti virtuali e consente ai computer locali di risolvere i nomi host forniti da Azure.DNS forwarding also enables DNS resolution between virtual networks and enables your on-premises machines to resolve hostnames that Azure provides. Per risolvere il nome host di una macchina virtuale, la macchina virtuale del server DNS deve risiedere nella stessa rete virtuale ed essere configurata per inoltrare le query relative ai nomi host ad Azure.To resolve a virtual machine's hostname, the DNS server virtual machine must reside in the same virtual network and be configured to forward hostname queries to Azure. Poiché il suffisso DNS è diverso in ogni rete virtuale, è possibile usare le regole di inoltro condizionale per inviare le query DNS alla rete virtuale corretta per la risoluzione.Because the DNS suffix is different in each virtual network, you can use conditional forwarding rules to send DNS queries to the correct virtual network for resolution. L'immagine seguente mostra due reti virtuali e una rete locale che gestiscono la risoluzione DNS tra reti virtuali con questo metodo:The following image shows two virtual networks and an on-premises network doing DNS resolution between virtual networks by using this method:

Risoluzione DNS tra reti virtuali

Quando si usa la risoluzione dei nomi fornita da Azure, il suffisso DNS interno viene fornito a ogni macchina virtuale tramite DHCP.When you use name resolution that Azure provides, the internal DNS suffix is provided to each virtual machine by using DHCP. Quando si usa la soluzione di risoluzione dei nomi personalizzata, questo suffisso non viene fornito alle macchine virtuali perché interferisce con altre architetture DNS.When you use your own name resolution solution, this suffix is not supplied to virtual machines because the suffix interferes with other DNS architectures. Per fare riferimento alle macchine virtuali usando il nome di dominio completo o per configurare il suffisso nelle macchine virtuali, è possibile usare PowerShell o l'API per determinare il suffisso:To refer to machines by FQDN or to configure the suffix on your virtual machines, you can use PowerShell or the API to determine the suffix:

  • Per le reti virtuali gestite da Azure Resource Manager, il suffisso è disponibile tramite la risorsa scheda interfaccia di rete.For virtual networks that are managed by Azure Resource Manager, the suffix is available via the network interface card resource. È possibile eseguire anche il comando azure network public-ip show <resource group> <pip name> per visualizzare i dettagli dell'indirizzo IP pubblico, che include il nome FQDN della scheda di rete.You can also run the azure network public-ip show <resource group> <pip name> command to display the details of your public IP, which includes the FQDN of the NIC.

Se l'inoltro delle query ad Azure non soddisfa le esigenze correnti, sarà necessario offrire una soluzione DNS personalizzata.If forwarding queries to Azure doesn't suit your needs, you need to provide your own DNS solution. La soluzione DNS deve:Your DNS solution needs to:

  • Offrire una soluzione di risoluzione dei nomi host appropriata, ad esempio tramite DNS dinamico.Provide appropriate hostname resolution, for example via DDNS. Se si usa DDNS, potrebbe essere necessario disabilitare lo scavenging dei record DNS.If you use DDNS, you might need to disable DNS record scavenging. Le lease DHCP di Azure sono molto lunghe e lo scavenging può rimuovere i record DNS in modo anomalo.DHCP leases of Azure are very long and scavenging may remove DNS records prematurely.
  • Fornire una soluzione di risoluzione ricorsiva appropriata per consentire la risoluzione dei nomi di dominio esterni.Provide appropriate recursive resolution to allow resolution of external domain names.
  • Essere accessibile (tramite TCP e UDP sulla porta 53) dai client che gestisce e in grado di accedere a Internet.Be accessible (TCP and UDP on port 53) from the clients it serves and be able to access the Internet.
  • Essere protetta dagli accessi provenienti da Internet per attenuare i rischi rappresentati da agenti esterni.Be secured against access from the Internet to mitigate threats posed by external agents.

Nota

Per prestazioni ottimali, quando si usano macchine virtuali nei server DNS di Azure, disabilitare il protocollo IPv6 e assegnare un indirizzo IP pubblico a livello di istanza a ogni macchina virtuale di server DNS.For best performance, when you use virtual machines in Azure DNS servers, disable IPv6 and assign an Instance-Level Public IP to each DNS server virtual machine.