Difference between revisions of "Domain name resolution (Português)"

From ArchWiki
Jump to navigation Jump to search
(Update translation - sync with English article until May 23, 2019)
(Update translation - sync with English article until June 23, 2019)
Line 8: Line 8:
 
[[ja:Resolv.conf]]
 
[[ja:Resolv.conf]]
 
[[zh-hans:Domain name resolution]]
 
[[zh-hans:Domain name resolution]]
{{StatusTradução|Domain name resolution|2019-05-23|573789}}
+
{{StatusTradução|Domain name resolution|2019-06-23|576022}}
 
{{Related articles start (Português)}}
 
{{Related articles start (Português)}}
 
{{Related|Configuração de rede}}
 
{{Related|Configuração de rede}}
Line 147: Line 147:
 
|-
 
|-
 
! [[BIND]]
 
! [[BIND]]
| {{Pkg|bind}} || {{Sim}} || {{Sim}} || {{Sim}} || {{Sim}} || {{G|[[openresolv (Português)#Assinantes|Sim]]}} || {{Sim}} || {{Não}} || {{Não|https://kb.isc.org/docs/aa-01386}} || {{Não}}
+
| {{Pkg|bind}} || {{Sim}} || {{Sim}} || {{Sim}} || {{Sim}} || {{G|[[openresolv (Português)#Assinantes|Sim]]}} || {{Sim}} || {{Não}} || {{Y|[[stunnel#DNS over TLS]]}} || {{Não}}
 
|-
 
|-
 
! [[Knot Resolver]]
 
! [[Knot Resolver]]
Line 193: Line 193:
 
Para implementá-lo, você precisa usar um [[#Servidores DNS|resolvedor local]] porque o glibc não oferece suporte a isso.
 
Para implementá-lo, você precisa usar um [[#Servidores DNS|resolvedor local]] porque o glibc não oferece suporte a isso.
  
Em um ambiente dinâmico (laptops e algumas extensões de desktops), você precisa configurar seu resolvedor com base na(s) rede(s) à(s) qual(is) você está conectado. A melhor maneira de fazer isso é usar [[openresolv (Português)|openresolv]] porque ele possui suporte a [[Openresolv (Português)#Assinantes|vários assinantes]]. Alguns [[gerenciadores de rede]] possuem suporte, seja através do OpenResolv, ou configurando o resolvedor diretamente.
+
Em um ambiente dinâmico (laptops e algumas extensões de desktops), você precisa configurar seu resolvedor com base na(s) rede(s) à(s) qual(is) você está conectado. A melhor maneira de fazer isso é usar [[openresolv (Português)|openresolv]] porque ele possui suporte a [[openresolv (Português)#Assinantes|vários assinantes]]. Alguns [[gerenciadores de rede]] possuem suporte, seja através do openresolv, ou configurando o resolvedor diretamente.
  
{{Nota|Embora você possa usar outras condições para encaminhamento (por exemplo, IP de origem), "encaminhamento condicional" parece ser o nome usado para a condição "domínio consultado".}}
+
{{Nota|Embora você possa usar outras condições para encaminhamento (por exemplo, endereço de IP de origem), "encaminhamento condicional" parece ser o nome usado para a condição "domínio consultado".}}
  
 
== Veja também ==
 
== Veja também ==

Revision as of 14:25, 23 June 2019

Status de tradução: Esse artigo é uma tradução de Domain name resolution. Data da última tradução: 2019-06-23. Você pode ajudar a sincronizar a tradução, se houver alterações na versão em inglês.

Em geral, um nome de domínio representa um endereço IP e está associado a ele no Sistema de Nomes de Domínio, ou Domain Name System (DNS). Esse artigo explica como para configurar resolução de nome de domínio e resolver nomes de domínio.

Name Service Switch

O recurso Name Service Switch (NSS) é parte da biblioteca C do GNU (glibc) e apoia a API getaddrinfo(3), usada para resolver nomes de domínio. O NSS permite que bancos de dados do sistema sejam fornecidos por serviços separados, cuja ordem de pesquisa pode ser configurada pelo administrador no nsswitch.conf(5). O banco de dados responsável pela resolução de nomes de domínio é o banco de dados hosts, para o qual a glibc oferece os seguintes serviços:

Systemd fornece três serviços NSS para resolução de hostname:

Resolva um nome de domínio usando NSS

Bancos de dados NSS podem ser consultados com getent(1). Um nome de domínio pode ser resolvido por meio do NSS usando:

$ getent hosts nome_domínio
Nota: Enquanto a maioria dos programas resolve nomes de domínio usando NSS, alguns podem ler /etc/resolv.conf e/ou /etc/hosts diretamente. Veja Configuração de rede#Resolução de hostname local.

Resolvedor do glibc

O resolvedor do glibc lê /etc/resolv.conf para toda resolução para determinar os servidores de nome e opções para usar.

resolv.conf(5) lista servidores de nomes juntos com algumas opções de configuração.

Servidores de nome (nameservers) listados primeiros são tentados primeiro, até os três servidores podem ser listados. Linhas iniciando com um cerquilha (#) são ignoradas.

Nota: O resolvedor do glibc não faz cache de consultas. Para melhorar tempo de consulta, você pode configurar um resolvedor em cache. O resolvedor do glibc também não consegue validar DNSSEC. Um resolvedor com capacidade de validar DNSSEC é necessário para ele. Veja #Servidores DNS para mais informações.

Sobrescrita do /etc/resolv.conf

Gerenciadores de rede tendem a sobrescrever /etc/resolv.conf, para particularidades veja a seção correspondente:

Para evitar que programas sobrescrevam /etc/resolv.conf, você também pode protegê-lo contra gravação definindo o atributo de arquivo imutável:

# chattr +i /etc/resolv.conf
Dica: Se você quiser que vários processos escrevam no /etc/resolv.conf, você pode usar resolvconf.

Limitar o tempo de pesquisa

Se você for confrontado com uma consulta de hostname muito longa (seja no pacman ou enquanto navega), frequentemente ajuda a definir um pequeno tempo limite após o qual um servidor de nomes alternativo é usado. Para fazer isso, coloque o seguinte em /etc/resolv.conf:

options timeout:1

Pesquisa de hostname atrasada com IPv6

Se você tiver um atraso de 5 segundos ao resolver os hostname, isso pode ser devido a um mau comportamento do servidor DNS/Firewall e somente dando uma resposta a uma solicitação paralela A e AAAA.[1] Você pode corrigir isso configurando a seguinte opção no /etc/resolv.conf:

options single-request

Nomes de domínio local

Se você quiser usar o hostname de máquinas locais sem os nomes de domínio totalmente qualificados, adicione uma linha ao /etc/resolv.conf com o domínio local, como:

domain exemplo.com.br

Dessa forma, você pode se referir a hosts locais como maquinaprincipal1.exemplo.com.br como simplesmente maquinaprincipal1 ao usar o comando ssh, mas o comando drill ainda requer os nomes de domínio totalmente qualificados para realizar pesquisas.

Utilitários de pesquisa

Para consultar servidores DNS específicos e registros DNS/DNSSEC, você pode usar utilitários de pesquisa de DNS dedicados. Essas ferramentas implementam o próprio DNS e não usam NSS.

  • ldns fornece drill(1), que é uma ferramenta projetada para obter informações do DNS.

Por exemplo, para consultar um servidor de nomes específico com drill por registros TXT de um domínio:

$ drill @servidor-de-nome TXT domínio

Se você não especificar um servidor DNS, drill use os servidores de nome definidos em /etc/resolv.conf.

Dica: Alguns servidores DNS vêm com seus utilitários de consulta DNS. Por exemplo, knot tem khost(1) e kdig(1), Unboundunbound-host(1).

Desempenho de resolvedor

O resolvedor do Glibc não armazena em cache as consultas. Se você quiser que o cache local, use systemd-resolved ou configure um cache local servidor DNS e use 127.0.0.1 como seu servidor de nomes.

Dica:
  • Os utilitários de pesquisa drill ou dig relatam o tempo de consulta.
  • Um roteador geralmente configura seu próprio resolvedor de cache como o servidor DNS da rede, fornecendo assim o cache DNS para toda a rede.
  • Se demorar muito para mudar para o próximo servidor DNS, você pode tentar diminuir o tempo limite.

Privacidade e segurança

O protocolo DNS não é criptografado e não leva em conta a confidencialidade, integridade ou autenticação, portanto, se você usar uma rede não confiável ou um ISP mal-intencionado, suas consultas DNS poderão ser interceptadas e as respostas manipuladas. Além disso, os servidores DNS podem realizar redirecionamento de DNS (DNS hijacking).

Você precisa confiar em seu servidor DNS para tratar suas consultas de maneira confidencial. Os servidores DNS são fornecidos por ISPs e terceiros. Como alternativa, você pode executar seu próprio servidor de nome recursivo, o que, no entanto, exige mais esforço. Se você usa um cliente DHCP em redes não confiáveis, defina os servidores de nomes estáticos para evitar o uso e a sujeição a servidores DNS arbitrários. Para proteger sua comunicação com um servidor DNS remoto, você pode usar um protocolo criptografado, como DNS por TLS, DNS por HTTPS ou DNSCrypt, desde que o servidor upstream e seu resolvedor possuam suporte ao protocolo. Para verificar se as respostas são realmente de servidores de nome autoritativos, você pode validar DNSSEC, desde que ambos os servidores upstream e seu resolvedor tenha suporte a isso.

Esteja ciente de que o software cliente, como os principais navegadores da Web, também pode (começar a) implementar alguns dos protocolos. Embora a criptografia de consultas possa ser vista como um bônus, isso também significa que o software avisa sobre a configuração do resolvedor do sistema. [2]

Serviços DNS de terceiros

Nota: Antes de usar um serviço DNS de terceiros, verifique sua política de privacidade para obter informações sobre como os dados do usuário são manipulados. Os dados do usuário têm valor e podem ser vendidos para outras partes.

Existem vários serviços DNS de terceiros disponíveis, alguns dos quais também possuem software dedicado:

  • dingo — Um cliente DNS para o DNS do Google por HTTPS
https://github.com/pforemski/dingo || dingo
  • opennic-up — Automatiza a renovação de servidores DNS com os servidores OpenNIC mais responsivos
https://github.com/kewlfft/opennic-up || opennic-upAUR

Servidores DNS

Os servidores DNS podem ser autoritativos e recursivos. Se eles não forem, eles são chamados de stub resolvers e simplesmente encaminham todas as consultas para outro servidor de nomes recursivo. Os stub resolvers são normalmente usados para introduzir o cache de DNS no host ou na rede local. Observe que o mesmo também pode ser obtido com um servidor de nomes completo. Esta seção compara os servidores DNS disponíveis, para uma comparação mais detalhada, consulte o Wikipedia:Comparison of DNS server software.

Nome Pacote Capacidades resolvconf Protocolos suportados
Autoritativo Recursivo Cache Valida
DNSSEC
DNS DNSCrypt DNS
por TLS
DNS
por HTTPS
dnscrypt-proxy dnscrypt-proxy Não Não Sim Não Não Servidor Resolvedor Não Resolvedor
Rescached rescached-gitAUR Não Não Sim Não Sim Sim Não Não Limitado1
Stubby stubby Não Não Não Sim Não Servidor Não Resolvedor Não
systemd-resolved systemd Não Não Sim Sim Sim servidor limitado e resolvedor Não Resolvedor inseguro2 Não
dnsmasq dnsmasq Parcial3 Não Sim Sim Sim Sim Não Não Não
BIND bind Sim Sim Sim Sim Sim Sim Não stunnel#DNS over TLS Não
Knot Resolver knot-resolverAUR Sim Sim Sim Sim Não Sim Não Sim Servidor
MaraDNS maradnsAUR Sim Sim Sim Não Não Sim Não Não Não
pdnsd pdnsd Sim Sim Permanente Não Sim Sim Não Não Não
PowerDNS Recursor powerdns-recursor Sim Sim Sim Sim Não Sim Não Não Não
Unbound unbound Sim Sim Sim Sim Sim Sim Servidor Sim Não
  1. Só encaminha usando DNS por HTTPS quando Rescached em si é consultado usando DNS por HTTPS.[3]
  2. Do resolved.conf(5): Note que como o resolvedor não é capaz de autenticar o servidor, ele é vulnerável a ataques "man-in-the-middle".[4] Além disso, o único modo suportado é "opportunistic", o que torna o DNS-over-TLS vulnerável a ataques de "downgrade".[5]
  3. Do Wikipédia: dnsmasq tem um suporte autoritativo limitado, sendo destinado a rede interna em vez de uso público na Internet.

Servidores apenas autoritativos

Nome Pacote DNSSEC Balanceamento
geográfico
gdnsd gdnsd Não Sim
Knot DNS knot Sim Sim
NSD nsd Não Não
PowerDNS powerdns Sim Sim

Encaminhamento condicional

É possível usar resolvedores de DNS específicos ao consultar nomes de domínio específicos. Isso é particularmente útil ao se conectar a uma VPN, para que as consultas à rede VPN sejam resolvidas pelo DNS da VPN, enquanto as consultas à Internet ainda serão resolvidas pelo seu resolvedor DNS padrão. Também pode ser usado em redes locais.

Para implementá-lo, você precisa usar um resolvedor local porque o glibc não oferece suporte a isso.

Em um ambiente dinâmico (laptops e algumas extensões de desktops), você precisa configurar seu resolvedor com base na(s) rede(s) à(s) qual(is) você está conectado. A melhor maneira de fazer isso é usar openresolv porque ele possui suporte a vários assinantes. Alguns gerenciadores de rede possuem suporte, seja através do openresolv, ou configurando o resolvedor diretamente.

Nota: Embora você possa usar outras condições para encaminhamento (por exemplo, endereço de IP de origem), "encaminhamento condicional" parece ser o nome usado para a condição "domínio consultado".

Veja também