Resolução de nomes de máquinas virtuais e instâncias de funçãoName Resolution for VMs and Role Instances

Dependendo de como você usar o Azure para hospedar o IaaS, o PaaS e as soluções híbridas, pode ser necessário permitir que as VMs e as instâncias de função criadas se comuniquem entre si.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. Embora essa comunicação possa ser feita usando endereços IP, é muito mais simples usar nomes que possam ser facilmente lembrados e que não sejam alterados.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 as instâncias de função e as VMs hospedadas no Azure precisam resolver nomes de domínio para endereços IP internos, elas podem usar um dos dois métodos:When role instances and VMs hosted in Azure need to resolve domain names to internal IP addresses, they can use one of two methods:

O tipo de resolução de nomes usado depende de como as VMs e as instâncias de função precisam se comunicar entre si.The type of name resolution you use depends on how your VMs and role instances need to communicate with each other.

A tabela a seguir ilustra os cenários e as soluções de resolução de nome correspondentes:The following table illustrates scenarios and corresponding name resolution solutions:

CenárioScenario SoluçãoSolution SuffixSuffix
Resolução de nomes entre as instâncias de função ou as máquinas virtuais no mesmo serviço de nuvem ou rede virtualName resolution between role instances or VMs located in the same cloud service or virtual network Resolução de nomes fornecida pelo AzureAzure-provided name resolution nome de host ou FQDNhostname or FQDN
Resolução de nomes entre instâncias de função ou máquinas virtuais localizadas em redes virtuais diferentesName resolution between role instances or VMs located in different virtual networks Servidores DNS gerenciados pelo cliente que encaminham consultas entre redes virtuais para resolução pelo Azure (proxy DNS).Customer-managed DNS servers forwarding queries between vnets for resolution by Azure (DNS proxy). Confira Resolução de nome usando o seu próprio servidor DNSsee Name resolution using your own DNS server Somente FQDNFQDN only
Resolução de nomes de serviço e de computador locais em instâncias de função ou VMs no AzureResolution of on-premises computer and service names from role instances or VMs in Azure Servidores DNS gerenciados pelo cliente (por exemplo, controlador de domínio local, controlador de domínio somente leitura local ou DNS secundário sincronizado usando transferências de zona).Customer-managed DNS servers (e.g. on-premises domain controller, local read-only domain controller or a DNS secondary synced using zone transfers). Confira Resolução de nome usando o seu próprio servidor DNSSee Name resolution using your own DNS server Somente FQDNFQDN only
Resolução de nomes de host do Azure de computadores locaisResolution of Azure hostnames from on-premises computers Encaminhe consultas para um servidor de proxy DNS gerenciado pelo cliente na rede virtual correspondente. O servidor proxy encaminha consultas para resolução pelo Azure.Forward queries to a customer-managed DNS proxy server in the corresponding vnet, the proxy server forwards queries to Azure for resolution. Confira Resolução de nome usando o seu próprio servidor DNSSee Name resolution using your own DNS server Somente FQDNFQDN only
DNS inverso para IPs internosReverse DNS for internal IPs Resolução de nome usando o seu próprio servidor DNSName resolution using your own DNS server n/dn/a
Resolução de nomes entre VMs ou instâncias de função localizadas em serviços de nuvem diferente, não em uma rede virtualName resolution between VMs or role instances located in different cloud services, not in a virtual network Não aplicável.Not applicable. Não há suporte para a conectividade entre máquinas virtuais e instâncias de função em diferentes serviços de nuvem fora de uma rede virtual.Connectivity between VMs and role instances in different cloud services is not supported outside a virtual network. n/dn/a

Resolução de nomes fornecida pelo AzureAzure-provided name resolution

Junto com a resolução de nomes DNS públicos, o Azure fornece uma resolução de nomes interna para VMs e instâncias de função que residem na mesma rede virtual ou serviço de nuvem.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. As VMs/instâncias em um serviço de nuvem compartilham o mesmo sufixo DNS (de modo que o nome do host por si só é suficiente), mas, em redes virtuais clássicas, diferentes serviços de nuvem têm diferentes sufixos DNS. Portanto, o FQDN é necessário para resolver nomes entre diferentes serviços de nuvem.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. Em redes virtuais no modelo de implantação do Gerenciador de Recursos, o sufixo DNS é consistente em toda a rede virtual (portanto, o FQDN não é necessário) e os nomes DNS podem ser atribuídos a NICs e VMs.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. Embora a resolução de nomes fornecida pelo Azure não requeira qualquer configuração, ela não é a escolha apropriada para todos os cenários de implantação, como mostrado na tabela acima.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.

Observação

No caso das funções web e de trabalho, você também pode acessar os endereços IP internos das instâncias de função, conforme o número de instâncias e o nome da função usando a API REST do Gerenciamento de Serviços do 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. Para obter mais informações, veja Referência da API REST de Gerenciamento de Serviços.For more information, see Service Management REST API Reference.

Recursos e consideraçõesFeatures and Considerations

Recursos:Features:

  • Facilidade de uso: não é necessária nenhuma configuração para usar a resolução de nomes fornecida pelo Azure.Ease of use: No configuration is required in order to use Azure-provided name resolution.
  • O serviço de resolução de nomes fornecido pelo Azure é altamente disponível, economizando a necessidade de criar e gerenciar clusters de seus próprios servidores DNS.The Azure-provided name resolution service is highly available, saving you the need to create and manage clusters of your own DNS servers.
  • Pode ser usado em conjunto com seus próprios servidores DNS para resolver nomes de host locais e do Azure.Can be used in conjunction with your own DNS servers to resolve both on-premises and Azure hostnames.
  • A resolução de nomes é fornecida entre as instâncias de função/VMs no mesmo serviço de nuvem, sem a necessidade de um FQDN.Name resolution is provided between role instances/VMs within the same cloud service without need for a FQDN.
  • A resolução de nomes é fornecida entre VMs em redes virtuais que usam o modelo de implantação do Gerenciador de Recursos, sem a necessidade de FQDN.Name resolution is provided between VMs in virtual networks that use the Resource Manager deployment model, without need for the FQDN. Redes virtuais no modelo de implantação clássico exigem o FQDN durante a resolução de nomes em diferentes serviços de nuvem.Virtual networks in the classic deployment model require the FQDN when resolving names in different cloud services.
  • Você pode usar nomes de host que descrevem melhor as suas implantações, em vez de trabalhar com nomes gerados automaticamente.You can use hostnames that best describe your deployments, rather than working with auto-generated names.

Considerações:Considerations:

  • O sufixo DNS criado pelo Azure não pode ser modificado.The Azure-created DNS suffix cannot be modified.
  • Não é possível registrar manualmente seus próprios registros.You cannot manually register your own records.
  • Não há suporte para o WINS e NetBIOS.WINS and NetBIOS are not supported. (Você não pode ver suas VMs no Windows Explorer.)(You cannot see your VMs in Windows Explorer.)
  • Os nomes de host devem ser compatíveis com DNS (eles devem usar somente 0-9, a-z e '-' e não podem começar ou terminar com um '-'.Hostnames must be DNS-compatible (They must use only 0-9, a-z and '-', and cannot start or end with a '-'. Consulte o RFC 3696, seção 2).See RFC 3696 section 2.)
  • O tráfego da consulta DNS é restrita a cada VM.DNS query traffic is throttled for each VM. Isso não deve afetar a maioria dos aplicativos.This shouldn't impact most applications. Se a limitação da solicitação for observada, certifique-se de que o armazenamento em cache do cliente está habilitado.If request throttling is observed, ensure that client-side caching is enabled. Para obter mais detalhes, consulte Obtendo o máximo de resolução de nomes fornecida pelo Azure.For more details, see Getting the most from Azure-provided name resolution.
  • Apenas as VMs dos primeiros 180 serviços de nuvem são registradas para cada rede virtual em um modelo de implantação clássico.Only VMs in the first 180 cloud services are registered for each virtual network in a classic deployment model. Isso não se aplica às redes virtuais nos modelos de implantação do Gerenciador de Recursos.This does not apply to virtual networks in Resource Manager deployment models.

Obtendo o máximo de resolução de nomes fornecida pelo AzureGetting the most from Azure-provided name resolution

Armazenamento em cache no lado cliente:Client-side Caching:

Nem todas as consultas DNS precisam ser enviada pela rede.Not every DNS query needs to be sent across the network. O armazenamento em cache do lado do cliente ajuda a reduzir a latência e melhorar a resistência a pontos de luz de rede resolvendo consultas de DNS recorrentes a partir de um cache local.Client-side caching helps reduce latency and improve resilience to network blips by resolving recurring DNS queries from a local cache. Os registros DNS contêm um Time-To-Live (TTL) que permite que o cache armazene o registro o maior tempo possível sem afetar a atualização de registro para que o armazenamento em cache do lado do cliente seja adequado para a maioria das situações.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.

O cliente DNS padrão do Windows tem um cache DNS interno.The default Windows DNS Client has a DNS cache built-in. Algumas distribuições do Linux não incluem o armazenamento em cache por padrão. É recomendável que um seja adicionado a cada VM do Linux (após verificação de que ainda não há um cache local).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).

Há uma série de pacotes de armazenamento em cache de DNS diferentes disponíveis, por exemplo, dnsmasq, aqui estão as etapas para instalar o dnsmasq nas distribuições mais comuns: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):
    • apenas instale o pacote de dnsmasq ("sudo apt-get install dnsmasq").just install the dnsmasq package (“sudo apt-get install dnsmasq”).
  • SUSE (usa netconf):SUSE (uses netconf):
    • instale o pacote de dnsmasq ("sudo zypper install dnsmasq").install the dnsmasq package (“sudo zypper install dnsmasq”)
    • habilite o serviço dnsmasq ("systemctl enable dnsmasq.service")enable the dnsmasq service (“systemctl enable dnsmasq.service”)
    • inicie o serviço dnsmasq ("systemctl enable dnsmasq.service")start the dnsmasq service (“systemctl start dnsmasq.service”)
    • edite "/etc/sysconfig/network/config" e altere NETCONFIG_DNS_FORWARDER = "" para "dnsmasq"edit “/etc/sysconfig/network/config” and change NETCONFIG_DNS_FORWARDER="" to ”dnsmasq”
    • atualize resolv. conf ("netconfig update") para definir o cache do resolvedor DNS localupdate resolv.conf ("netconfig update") to set the cache as the local DNS resolver
  • OpenLogic (usa NetworkManager):OpenLogic (uses NetworkManager):
    • instale o pacote de dnsmasq ("sudo yum install dnsmasq").install the dnsmasq package (“sudo yum install dnsmasq”)
    • habilite o serviço dnsmasq ("systemctl enable dnsmasq.service")enable the dnsmasq service (“systemctl enable dnsmasq.service”)
    • inicie o serviço dnsmasq ("systemctl enable dnsmasq.service")start the dnsmasq service (“systemctl start dnsmasq.service”)
    • adicione "prepend domain-name-servers 127.0.0.1;" a "/etc/dhclient-eth0.conf"add “prepend domain-name-servers 127.0.0.1;” to “/etc/dhclient-eth0.conf”
    • reinicie o serviço de rede ("service network restart") para definir o cache como o resolvedor DNS localrestart the network service (“service network restart”) to set the cache as the local DNS resolver

Observação

O pacote 'dnsmasq' é apenas um dos vários caches DNS disponíveis para o Linux.The 'dnsmasq' package is only one of the many DNS caches available for Linux. Antes de usá-lo, verifique sua adequação para suas necessidades específicas e se nenhum outro cache está instalado.Before using it, please check its suitability for your particular needs and that no other cache is installed.

Tentativa no lado do cliente:Client-side Retries:

O DNS é principalmente um protocolo UDP.DNS is primarily a UDP protocol. Como o protocolo UDP não garante a entrega de mensagens, a lógica de repetição é manipulada no próprio protocolo DNS.As the UDP protocol doesn't guarantee message delivery, retry logic is handled in the DNS protocol itself. Cada cliente DNS (sistema operacional) pode apresentar uma lógica de repetição diferente dependendo da preferência dos criadores:Each DNS client (operating system) can exhibit different retry logic depending on the creators preference:

  • Sistemas operacionais Windows tentam novamente depois de 1 segundo e, em seguida, novamente após outros 2, 4 e outros 4 segundos.Windows operating systems retry after 1 second and then again after another 2, 4 and another 4 seconds.
  • As tentativas de instalação do Linux ocorrem, por padrão, depois de 5 segundos.The default Linux setup retries after 5 seconds. É recomendável alterar para repetir 5 vezes em intervalos de 1 segundo.It is recommended to change this to retry 5 times at 1 second intervals.

Para verificar as configurações atuais em uma VM do Linux, 'cat /etc/resolv.conf' e examine a linha 'options', por exemplo: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

O arquivo resolv.conf é normalmente gerado automaticamente e não deve ser editado.The resolv.conf file is usually auto-generated and should not be edited. As etapas específicas para adicionar a linha 'options' variam de acordo com a distribuição:The specific steps for adding the 'options' line vary by distro:

  • Ubuntu (usa resolvconf):Ubuntu (uses resolvconf):
    • adicione a linha de opções para '/etc/resolveconf/resolv.conf.d/head'add the options line to '/etc/resolveconf/resolv.conf.d/head'
    • execute 'resolvconf -u' para atualizarrun 'resolvconf -u' to update
  • SUSE (usa netconf):SUSE (uses netconf):
    • adicione 'timeout:1 tentativas: 5' ao parâmetro NETCONFIG_DNS_RESOLVER_OPTIONS = "" em '/ etc/sysconfig/rede/config'add 'timeout:1 attempts:5' to the NETCONFIG_DNS_RESOLVER_OPTIONS="" parameter in '/etc/sysconfig/network/config'
    • execute 'netconfig update' para atualizarrun 'netconfig update' to update
  • OpenLogic (usa NetworkManager):OpenLogic (uses NetworkManager):
    • adicione 'echo "options timeout:1 attempts:5"' em '/etc/NetworkManager/dispatcher.d/11-dhclient'add 'echo "options timeout:1 attempts:5"' to '/etc/NetworkManager/dispatcher.d/11-dhclient'
    • execute 'service network restart' para atualizarrun 'service network restart' to update

Resolução de nome usando seu próprio servidor DNSName resolution using your own DNS server

Há várias situações em que suas necessidades de resolução de nome podem ir além dos recursos fornecidos pelo Azure, por exemplo, ao usar domínios do Active Directory ou ao precisar de resolução DNS entre redes virtuais.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). Para abordar esses cenários, o Azure oferece a capacidade de usar seus próprios servidores DNS.To cover these scenarios, Azure provides the ability for you to use your own DNS servers.

Os servidores DNS em uma rede virtual podem encaminhar consultas DNS para os resolvedores recursivos do Azure a fim de resolver nomes de host dentro da rede virtual.DNS servers within a virtual network can forward DNS queries to Azure's recursive resolvers to resolve hostnames within that virtual network. Por exemplo, um DC (controlador de domínio) em execução no Azure pode responder a consultas DNS de seus domínios e encaminhar todas as outras consultas ao 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. Isso permite que as VMs vejam tanto seus recursos locais (pelo DC) quanto nomes de host fornecidos pelo Azure (pelo encaminhador).This allows VMs to see both your on-premises resources (via the DC) and Azure-provided hostnames (via the forwarder). O acesso a resolvedores recursivos do Azure é fornecido por meio da IP virtual 168.63.129.16.Access to Azure's recursive resolvers is provided via the virtual IP 168.63.129.16.

O encaminhamento do DNS também possibilita a resolução do DNS entre redes virtuais e permite que os computadores locais resolvam nomes de host fornecidos pelo Azure.DNS forwarding also enables inter-vnet DNS resolution and allows your on-premises machines to resolve Azure-provided hostnames. Para resolver o nome de host da VM, a VM do servidor DNS deve residir na mesma rede virtual e ser configurado para encaminhar consultas de nome de host ao 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. Como o sufixo DNS é diferente em cada rede virtual, você pode usar regras de encaminhamento condicionais para enviar consultas DNS a fim de serem resolvidas pela rede virtual correta.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. A imagem a seguir mostra duas redes virtuais e uma rede local fazendo a resolução do DNS entre redes virtuais usando esse método.The following image shows two vnets and an on-premises network doing inter-vnet DNS resolution using this method. Um encaminhador DNS de exemplo está disponível na galeria de Modelos de Início Rápido do Azure e no GitHub.An example DNS forwarder is available in the Azure Quickstart Templates gallery and GitHub.

DNS entre redes virtuais

Ao usar a resolução de nomes fornecida pelo Azure, um sufixo DNS interno (.internal.cloudapp.net) será fornecido para cada VM que usar o DHCP.When using Azure-provided name resolution, an Internal DNS suffix (.internal.cloudapp.net) is provided to each VM using DHCP. Isso permite que a resolução de nomes do host, assim como os registros de nomes do host, estejam na zona internal.cloudapp.net.This enables hostname resolution as the hostname records are in the internal.cloudapp.net zone. Ao usar sua própria solução de resolução de nomes, o sufixo IDNS não será fornecido para as VMs, pois interfere com outras arquiteturas de DNS (como cenários de ingressos em domínio).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). Em vez disso, fornecemos um espaço reservado que não funciona (reddog.microsoft.com).Instead we provide a non-functioning placeholder (reddog.microsoft.com).

Se necessário, o sufixo DNS interno pode ser determinado usando o PowerShell ou a API:If needed, the Internal DNS suffix can be determined using PowerShell or the API:

Se o encaminhamento de consultas para o Azure não atender às suas necessidades, você precisará fornecer sua própria solução DNS.If forwarding queries to Azure doesn't suit your needs, you will need to provide your own DNS solution. A solução DNS precisará:Your DNS solution will need to:

  • Forneça uma resolução de nomes do host apropriada, por exemplo, por meio do DDNS.Provide appropriate hostname resolution, e.g. via DDNS. Observe que se você usar DDNS, talvez precise desabilitar a limpeza de registro DNS, já que as concessões de DHCP do Azure são muito longas e a limpeza pode remover os registros DNS prematuramente.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.
  • Fornecer a resolução recursiva apropriada para permitir a resolução de nomes de domínio externo.Provide appropriate recursive resolution to allow resolution of external domain names.
  • Ser acessível (TCP e UDP na porta 53) dos clientes a que ela serve e ser capaz de acessar a Internet.Be accessible (TCP and UDP on port 53) from the clients it serves and be able to access the internet.
  • Ter proteção contra acesso da Internet, para atenuar as ameaças impostas por agentes externos.Be secured against access from the internet, to mitigate threats posed by external agents.

Observação

Para obter um melhor desempenho, ao usar as VMs do Azure como servidores DNS, o IPv6 deve ser desabilitado e um IP Público em Nível de Instância deve ser atribuído a cada VM do servidor 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 você optar por usar o Windows Server como o servidor DNS, este artigo fornecerá análise e otimizações de desempenho adicionais.If you choose to use Windows Server as your DNS server, this article provides additional performance analysis and optimizations.

Especificar servidores DNSSpecifying DNS servers

Ao usar seus próprios servidores DNS, o Azure fornece a capacidade de especificar vários servidores DNS por rede virtual ou por interface de rede (Gerenciador de Recursos)/serviço de nuvem (clássico).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). Os servidores DNS especificados para uma interface de rede/serviço de nuvem têm precedência sobre os especificados para a rede virtual.DNS servers specified for a cloud service/network interface get precedence over those specified for the virtual network.

Observação

Propriedades de conexão de rede, como IPs de servidor DNS, não devem ser editadas diretamente dentro de VMs do Windows, já que elas podem ser apagadas durante o serviço de reparo quando o adaptador de rede virtual é substituído.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.

Ao usar o modelo de implantação do Gerenciador de Recursos, os servidores DNS podem ser especificados no Portal, na API/nos Modelos (vnet, nic) ou no 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).

Ao usar o modelo de implantação clássica, os servidores DNS da rede virtual podem ser especificados no Portal ou no arquivo Configuração de Rede.When using the classic deployment model, DNS servers for the virtual network can be specified in the Portal or the Network Configuration file. Para serviços de nuvem, os servidores DNS são especificados por meio do arquivo de Configuração de Serviço ou no PowerShell (New-AzureVM).For cloud services, the DNS servers are specified via the Service Configuration file or in PowerShell (New-AzureVM).

Observação

Se alterar as configurações DNS de uma rede virtual/máquina virtual já implantada, você precisará reiniciar cada máquina virtual afetada para que as alterações entrem em vigor.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.

Próximas etapasNext steps

Modelo de implantação do Gerenciador de Recursos:Resource Manager deployment model:

Modelo de implantação clássico:Classic deployment model: