Risoluzione dei nomi per le macchine virtuali e le istanze del ruoloName Resolution for VMs and Role Instances

A seconda di come si usa Azure per ospitare soluzioni IaaS, PaaS e ibride, potrebbe essere necessario consentire la comunicazione tra VM e istanze del ruolo create.Depending on how you use Azure to host IaaS, PaaS, and hybrid solutions, you may need to allow the VMs and role instances that you create to communicate with each other. Nonostante questa comunicazione possa avvenire usando indirizzi IP, è molto più semplice usare nomi che possono essere facilmente ricordati e che non cambiano.Although this communication can be done by using IP addresses, it is much simpler to use names that can be easily remembered and do not change.

Quando le istanze del ruolo e le VM ospitate in Azure devono risolvere nomi di dominio trasformandoli in indirizzi IP interni, possono usare uno di questi due metodi:When role instances and VMs hosted in Azure need to resolve domain names to internal IP addresses, they can use one of two methods:

Il tipo di risoluzione dei nomi usato dipende dal modo in cui VM e istanze del ruolo devono comunicare.The type of name resolution you use depends on how your VMs 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 situate nello stesso servizio cloud o nella stessa rete virtualeName resolution between role instances or VMs located in the same cloud service or virtual network Risoluzione dei nomi fornita da AzureAzure-provided name resolution nome host o nome di dominio completohostname or FQDN
Risoluzione dei nomi tra istanze del ruolo o macchine virtuali situate in diverse reti virtualiName resolution between role instances or VMs located 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 forwarding queries between vnets for resolution by Azure (DNS proxy). Vedere Risoluzione dei nomi usando il server DNSsee 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 computer and service names from role instances or VMs 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 (e.g. on-premises domain controller, local read-only domain controller or a DNS secondary synced using zone transfers). Vedere Risoluzione dei nomi usando il server DNSSee 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 Inoltra le query a un server proxy DNS gestito dal cliente nella rete virtuale corrispondente. Il server proxy inoltra le query ad Azure per la risoluzione.Forward queries to a customer-managed DNS proxy server in the corresponding vnet, the proxy server forwards queries to Azure for resolution. Vedere Risoluzione dei nomi usando il server DNSSee 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 tra macchine virtuali o istanze del ruolo situate in servizi cloud diversi e non in una rete virtualeName resolution between VMs or role instances located in different cloud services, not in a virtual network Non applicabileNot applicable. Connettività tra macchine virtuali e istanze del ruolo in servizi cloud diversi non è supportata esternamente a una rete virtuale.Connectivity between VMs and role instances in different cloud services is not supported outside a virtual network. n/dn/a

Risoluzione dei nomi fornita da AzureAzure-provided name resolution

Oltre alla risoluzione dei nomi DNS pubblici, Azure offre la risoluzione dei nomi interni per VM e istanze del ruolo che si trovano all'interno della stessa rete virtuale o dello stesso servizio cloud.Along with resolution of public DNS names, Azure provides internal name resolution for VMs and role instances that reside within the same virtual network or cloud service. Le VM e le istanze in un servizio cloud condividono lo stesso suffisso DNS, quindi il nome host da solo è sufficiente, tuttavia, nelle reti virtuali classiche, servizi cloud diversi hanno suffissi DNS diversi, quindi è necessario il nome di dominio completo per la risoluzione dei nomi tra diversi servizi cloud.VMs/instances in a cloud service share the same DNS suffix (so the hostname alone is sufficient) but in classic virtual networks different cloud services have different DNS suffixes so the FQDN is needed to resolve names between different cloud services. Nelle reti virtuali nel modello di distribuzione di Resource Manager il suffisso DNS è coerente nella rete virtuale, quindi il nome di dominio completo non è necessario e i nomi DNS possono essere assegnati sia alle schede di interfaccia di rete che alle macchine virtuali.In virtual networks in the Resource Manager deployment model, the DNS suffix is consistent across the virtual network (so the FQDN is not needed) and DNS names can be assigned to both NICs and VMs. 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 Azure-provided name resolution does not require any configuration, it is not the appropriate choice for all deployment scenarios, as seen on the table above.

Nota

Nel caso dei ruoli web e di lavoro, è possibile accedere anche gli indirizzi IP interni delle istanze del ruolo in base al numero di nome e al numero di istanza del ruolo utilizzando l'API REST di gestione dei servizi Azure.In the case of web and worker roles, you can also access the internal IP addresses of role instances based on the role name and instance number using the Azure Service Management REST API. Per altre informazioni, vedere Riferimento all'API REST di gestione dei servizi.For more information, see Service Management REST API Reference.

Funzionalità e considerazioniFeatures and Considerations

FunzionalitàFeatures:

  • Facilità di utilizzo: non è necessaria alcuna configurazione per usare la risoluzione dei nomi fornita da Azure.Ease of use: No configuration is required in order to use Azure-provided name resolution.
  • Il servizio di risoluzione dei nomi fornito da Azure garantisce la disponibilità elevata ed evita così di dover creare e gestire i cluster dei propri server DNS.The Azure-provided name resolution service is highly available, saving you the need to create and manage clusters of your own DNS servers.
  • Può essere usato in combinazione con i propri server DNS per risolvere i nomi host locali e i nomi host di Azure.Can be used in conjunction with your own DNS servers to resolve both on-premises and Azure hostnames.
  • La risoluzione dei nomi viene offerta tra istanze del ruolo e VM presenti nello stesso servizio cloud senza necessità di un nome di dominio completo.Name resolution is provided between role instances/VMs within the same cloud service without need for a FQDN.
  • Viene fornita la risoluzione dei nomi tra VM in reti virtuali che usano il modello di distribuzione di Resource Manager, senza necessità del nome di dominio completo.Name resolution is provided between VMs in virtual networks that use the Resource Manager deployment model, without need for the FQDN. Le reti virtuali nel modello di distribuzione classica richiedono il nome di dominio completo per la risoluzione dei nomi in diversi servizi cloud.Virtual networks in the classic deployment model require the FQDN when resolving names in different cloud services.
  • È 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 Azure-created DNS suffix 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. Non è possibile visualizzare le macchine virtuali in Esplora risorse.(You cannot see your VMs in Windows Explorer.)
  • I nomi host devono essere compatibili con DNS (devono utilizzare solo 0-9, a-z e '-' e non possono iniziare o terminare con un '-'.Hostnames must be DNS-compatible (They must use only 0-9, a-z and '-', and cannot start or end with a '-'. Vedere RFC 3696 sezione 2).See RFC 3696 section 2.)
  • Il traffico di query DNS è limitato per ogni VM.DNS query traffic is throttled for each VM. Questo in genere non comporta alcun impatto sulla maggior parte delle applicazioni.This 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 l'articolo che illustra come usare al meglio la risoluzione dei nomi fornita da Azure.For more details, see Getting the most from Azure-provided name resolution.
  • Solo le VM nei primi 180 servizi cloud sono registrate per ogni rete virtuale in un modello di distribuzione classica.Only VMs in the first 180 cloud services are registered for each virtual network in a classic deployment model. Ciò non si applica alle reti virtuali nei modelli di distribuzione di Resource Manager.This does not apply to virtual networks in Resource Manager deployment models.

come usare al meglio la risoluzione dei nomi fornita da AzureGetting the most from Azure-provided name resolution

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

Non tutte le query DNS devono essere inviate attraverso la rete.Not every DNS query needs to be sent across the network. La memorizzazione nella cache sul lato client consente di ridurre la latenza e migliorare la resilienza ai blip (brevi interruzioni) di rete, tramite la risoluzione di query DNS ricorrenti da una cache locale.Client-side caching helps reduce latency and improve resilience to network blips 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. Per questo motivo, la memorizzazione nella cache sul lato client è ideale per la maggior parte delle situazioni.DNS records contain a Time-To-Live (TTL) which allows the cache to store the record for as long as possible without impacting record freshness, so client-side caching is suitable for most situations.

Il client DNS di Windows predefinito contiene una cache DNS incorporata.The default Windows DNS Client has a DNS cache built-in. Alcune distribuzioni di Linux non includono la memorizzazione nella cache per impostazione predefinita, è quindi consigliabile aggiungerne una a ogni VM Linux (dopo aver verificato che non sia già presente una cache locale).Some Linux distros do not include caching by default, it is recommended that one be added to each Linux VM (after checking that there isn't a local cache already).

Sono disponibili molti pacchetti di memorizzazione nella cache DNS diversi, ad esempio dnsmasq. Di seguito è riportata la procedura per installare dnsmasq nei distro più comuni:There are a number of different DNS caching packages available, e.g. dnsmasq, here are the steps to install dnsmasq on the most common distros:

  • Ubuntu (usa resolvconf):Ubuntu (uses resolvconf):
    • installare il pacchetto dnsmasq ("sudo apt-get install dnsmasq").just install the dnsmasq package (“sudo apt-get install dnsmasq”).
  • SUSE (usa netconf):SUSE (uses netconf):
    • installare il pacchetto dnsmasq ("sudo zypper install dnsmasq")install the dnsmasq package (“sudo zypper install dnsmasq”)
    • abilitare il servizio dnsmasq ("systemctl enable dnsmasq.service")enable the dnsmasq service (“systemctl enable dnsmasq.service”)
    • avviare il servizio dnsmasq ("systemctl start dnsmasq.service")start the dnsmasq service (“systemctl start dnsmasq.service”)
    • modificare "/etc/sysconfig/network/config" e sostituire NETCONFIG_DNS_FORWARDER="" con "dnsmasq"edit “/etc/sysconfig/network/config” and change NETCONFIG_DNS_FORWARDER="" to ”dnsmasq”
    • aggiornare resolv.conf ("netconfig update") per impostare la cache come resolver DNS localeupdate resolv.conf ("netconfig update") to set the cache as the local DNS resolver
  • OpenLogic (usa NetworkManager):OpenLogic (uses NetworkManager):
    • installare il pacchetto dnsmasq ("sudo yum install dnsmasq")install the dnsmasq package (“sudo yum install dnsmasq”)
    • abilitare il servizio dnsmasq ("systemctl enable dnsmasq.service")enable the dnsmasq service (“systemctl enable dnsmasq.service”)
    • avviare il servizio dnsmasq ("systemctl start dnsmasq.service")start the dnsmasq service (“systemctl start dnsmasq.service”)
    • 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”
    • 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 available for Linux. Prima di usarla, verificare che sia adatta in base alle esigenze specifiche e assicurarsi che non siano installate altre cache.Before using it, please check its suitability for your particular needs and that no other cache is installed.

Ripetizione di tentativi sul lato client:Client-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.As the UDP protocol doesn't guarantee message delivery, retry logic is handled in the DNS protocol itself. 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 creators 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 1 second and then again after another 2, 4 and another 4 seconds.
  • La configurazione di Linux predefinita esegue il tentativo dopo 5 secondi.The default Linux setup retries after 5 seconds. È consigliabile modificare questa impostazione in modo da eseguire 5 tentativi a intervalli di 1 secondo.It is recommended to change this to retry 5 times at 1 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 VM, 'cat /etc/resolv.conf' and look at the 'options' line, e.g.:

options timeout:1 attempts:5

Il file resolv.conf è solitamente generato automaticamente e non deve essere modificato.The resolv.conf file is usually auto-generated and should not be edited. La procedura specifica per aggiungere la riga 'options' varia a seconda del distro:The specific steps for adding the 'options' line vary by distro:

  • Ubuntu (usa resolvconf):Ubuntu (uses resolvconf):
    • aggiungere la riga per le opzioni in '/etc/resolveconf/resolv.conf.d/head'add the options line to '/etc/resolveconf/resolv.conf.d/head'
    • eseguire 'resolvconf -u' per aggiornarerun 'resolvconf -u' to update
  • SUSE (usa netconf):SUSE (uses netconf):
    • 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'
    • eseguire 'netconfig update' per aggiornarerun 'netconfig update' to update
  • OpenLogic (usa NetworkManager):OpenLogic (uses NetworkManager):
    • 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'
    • eseguire 'service network restart' per aggiornarerun 'service network restart' to update

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

In alcune situazioni le esigenze in termini di risoluzione dei nomi potrebbero andare oltre le funzionalità fornite da Azure, ad esempio quando si usano i domini di Active Directory o quando è necessaria la risoluzione DNS tra reti virtuali.There are a number of situations where your name resolution needs may go beyond the features provided by Azure, for example when using Active Directory domains or when you require DNS resolution between virtual networks (vnets). Per questi scenari specifici, Azure offre la possibilità di usare i propri server DNS.To cover these scenarios, Azure provides the ability for you to 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 di quella rete virtuale.DNS servers within a virtual network can forward DNS queries to Azure's recursive resolvers to resolve hostnames within that virtual network. Ad esempio, un controller di dominio in esecuzione in Azure può rispondere a query DNS per i relativi domini e inoltrare tutte le altre query ad Azure.For example, a Domain Controller (DC) running in Azure can respond to DNS queries for its domains and forward all other queries to Azure. Questo consente alle macchine virtuali di visualizzare sia le risorse locali, tramite il controller di dominio, sia i nomi host forniti da Azure, tramite il server di inoltro.This allows VMs to see both your on-premises resources (via the DC) and Azure-provided hostnames (via the forwarder). L'accesso ai resolver ricorsivi di Azure viene fornito tramite l'indirizzo IP virtuale 168.63.129.16.Access to Azure's recursive resolvers is provided via the virtual IP 168.63.129.16.

L'inoltro DNS consente anche la risoluzione DNS tra reti virtuali e permette alle macchine virtuali locali di risolvere i nomi host forniti da Azure.DNS forwarding also enables inter-vnet DNS resolution and allows your on-premises machines to resolve Azure-provided hostnames. 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.In order to resolve a VM's hostname, the DNS server VM 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.As the DNS suffix is different in each vnet, you can use conditional forwarding rules to send DNS queries to the correct vnet 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 vnets and an on-premises network doing inter-vnet DNS resolution using this method. Un esempio di server di inoltro DNS è disponibile nella raccolta di modelli di avvio rapido di Azure e su GitHub.An example DNS forwarder is available in the Azure Quickstart Templates gallery and GitHub.

DNS tra reti virtuali

Quando si usa la risoluzione dei nomi di Azure, un suffisso DNS interno (.internal.cloudapp.net) viene fornito a ogni macchina virtuale tramite DHCP.When using Azure-provided name resolution, an Internal DNS suffix (.internal.cloudapp.net) is provided to each VM using DHCP. Ciò consente la risoluzione dei nomi host, perché i record relativi ai nomi host si trovano nell'area internal.cloudapp.net.This enables hostname resolution as the hostname records are in the internal.cloudapp.net zone. Quando si usa la soluzione di risoluzione dei nomi personalizzata, il suffisso IDNS non viene fornito alle macchine virtuali perché interferisce con altre architetture DNS, ad esempio gli scenari con aggiunta al dominio.When using your own name resolution solution, the IDNS suffix is not supplied to VMs because it interferes with other DNS architectures (like domain-joined scenarios). Viene invece fornito un segnaposto non funzionante (reddog.microsoft.com).Instead we provide a non-functioning placeholder (reddog.microsoft.com).

Se necessario, è possibile determinare il suffisso DNS interno usando PowerShell o l'API:If needed, the Internal DNS suffix can be determined using PowerShell or the API:

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

  • Fornire una soluzione di risoluzione dei nomi host appropriata, ad esempio tramite DNS dinamico.Provide appropriate hostname resolution, e.g. via DDNS. Si noti che se si usa il DNS dinamico potrebbe essere necessario disabilitare lo scavenging del record DNS, perché i lease DHCP di Azure sono molto lunghi e potrebbero rimuovere i record DNS anticipatamente.Note, if using DDNS you may need to disable DNS record scavenging as Azure's DHCP leases 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 di Azure come server DNS, è necessario disabilitare IPv6 e assegnare un indirizzo IP pubblico a livello di istanza a ogni macchina virtuale del server DNS.For best performance, when using Azure VMs as DNS servers, IPv6 should be disabled and an Instance-Level Public IP should be assigned to each DNS server VM. Se si sceglie di usare Windows Server come server DNS, questo articolo offre un'analisi delle prestazioni e ottimizzazioni aggiuntive.If you choose to use Windows Server as your DNS server, this article provides additional performance analysis and optimizations.

Specificare i server DNSSpecifying DNS servers

Quando si usano i propri server DNS, Azure offre la possibilità di specificare più server DNS per ogni rete virtuale o per ogni interfaccia di rete (Resource Manager)/servizio cloud (classico).When using your own DNS servers, Azure provides the ability to specify multiple DNS servers per virtual network or per network interface (Resource Manager) / cloud service (classic). I server DNS specificati per un'interfaccia di rete o un servizio cloud ottengono la precedenza su quelli specificati per la rete virtuale.DNS servers specified for a cloud service/network interface get precedence over those specified for the virtual network.

Nota

Le proprietà di connessione di rete, ad esempio gli indirizzi IP del server DNS, non devono essere modificate direttamente all'interno delle VM di Windows in quanto possono essere cancellate durante il servizio di correzione quando la scheda di rete virtuale viene sostituita.Network connection properties, such as DNS server IPs, should not be edited directly within Windows VMs as they may get erased during service heal when the virtual network adaptor gets replaced.

Quando si usa il modello di distribuzione Azure Resource Manager, i server DNS possono essere specificati nel portale, nelle API, nei modelli (vnet, nic) o in PowerShell (vnet, nic).When using the Resource Manager deployment model, DNS servers can be specified in the Portal, API/Templates (vnet, nic) or PowerShell (vnet, nic).

Quando si usa il modello di distribuzione classica, i server DNS possono essere specificati per la rete virtuale nel portale o nel file di configurazione di rete.When using the classic deployment model, DNS servers for the virtual network can be specified in the Portal or the Network Configuration file. Per i servizi cloud, i server DNS vengono specificati tramite il file di configurazione del servizio o in PowerShell (New-AzureVM).For cloud services, the DNS servers are specified via the Service Configuration file or in PowerShell (New-AzureVM).

Nota

Se si modificano le impostazioni DNS per una rete virtuale o una macchina virtuale che è già stata distribuita, è necessario riavviare ogni VM interessata affinché le modifiche vengano applicate.If you change the DNS settings for a virtual network/virtual machine that is already deployed, you need to restart each affected VM for the changes to take effect.

Passaggi successiviNext steps

Modello di distribuzione di Resource Manager:Resource Manager deployment model:

Modello di distribuzione classica:Classic deployment model: