Skip to main content

109.4 Configuração de cliente DNS


Primeiro de tudo é o arquivo /etc/hosts, é o primeiro lugar que o Linux vai tentar resolver os nomes para IP, isso numa configuração padrão, você pode mudar esse comportamento em /etc/nsswitch.conf.


Já o arquivo principal que temos é o /etc/resolv.conf, nele vamos poder adicionar os servidores DNS que queremos usar, bem dizer, adicionar diretamente nesse arquivo não, a menos que façamos com que o systemd-resolved não gerencie mais esse arquivo.

Opções do NameserverDescrição
nameserverIndica qual servidor DNS vai ser consultado.
domainDominio principal da máquina.
searchLista de domínios que o sistema vai considerar para consulta.


stub-resolv.conf e resolv.conf

Normalmente o arquivo /etc/resolv.conf é um link simbólico para o arquivo /run/systemd/resolve/stub-resolv.conf no qual é criado pelo SystemD.

$ ls -lh /etc/resolv.conf 
lrwxrwxrwx 1 root root 39 Apr 2 12:32 /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf

Ao usar stub-resolv.conf, os aplicativos farão solicitações DNS ao resolvedor stub DNS fornecido pelo systemd no endereço 127.0.0.53. Este resolvedor de stub fará o proxy das solicitações de DNS para os resolvedores de DNS upstream configurados no systemd-resolve, aplicando qualquer lógica que desejar a essas solicitações e respostas, como armazená-las em cache.


Ao usar o resolv.conf, os aplicativos farão solicitações DNS diretamente para os resolvedores DNS "reais" (também conhecidos como upstream) configurados no systemd-resolvido. Nesse caso, o systemd-resolve atua apenas como um "gerenciador do resolv.conf", e não como um resolvedor de DNS em si.



Comando host


O comando host é usado para resolver nomes. A opção -t <tipo> informa que tipo de informação nós queremos ver, isso é conhecido como DNS records.

Opções de DNS RecordsDescrição
ACorresponde ao endereço IPv4 do domínio.
AAAACorresponde ao endereço IPv6 do domínio.
MXCorresponde ao servidor de e-mail do domínio.
CNAMEAlias para o domínio, geralmente um redirecionamento de um subdomínio para outro subdominio ou domínio.
TXTUsado para armazenar informações baseadas em texto relacionadas ao seu domínio. Mais comumente usado para armazenar dados SPF.
SPFUm protocolo de validação de email usado para evitar spoofing de email.
SRVSignifica Registro de Serviço e especifica apenas um IP, mas também uma porta.

Alguns testes.

# Resolvendo o IP do nic.br:
$ host nic.br
nic.br has address 200.160.4.6
nic.br has IPv6 address 2001:12ff:0:4::6
nic.br mail is handled by 1 mx.nic.br.
nic.br mail is handled by 5 enqueuer.nic.br.

# Resolvendo o IP da uol.com.br:
$ host uol.com.br
uol.com.br has address 200.147.35.149
uol.com.br has IPv6 address 2804:49c:3102:401:ffff:ffff:ffff:36
uol.com.br has IPv6 address 2804:49c:3101:401:ffff:ffff:ffff:45
uol.com.br mail is handled by 10 mx.uol.com.br.

# Fazendo resolução reversa, descobrindo o nome a partir do IP:
$ host 200.160.4.6
6.4.160.200.in-addr.arpa domain name pointer nic.br.

$ host 200.147.35.149
149.35.147.200.in-addr.arpa domain name pointer 200-147-35-149-149.static.uol.com.br.

# Verificando os servidores de email do nic.br:
$ host -t mx nic.br
nic.br mail is handled by 1 mx.nic.br.
nic.br mail is handled by 5 enqueuer.nic.br.

# Verificando o IPv4:
$ host -t a nic.br
nic.br has address 200.160.4.6

# Verificando o IPv6:
$ host -t aaaa nic.br
nic.br has IPv6 address 2001:12ff:0:4::

# Verificando o TXT:
$ host -t txt nic.br
nic.br descriptive text "v=spf1 mx a:mail.nic.br -all"


Comando dig


É uma ferramenta para resolução de DNS, é a ferramenta mais completa para fazer testes, e solucionar problemas de DNS, principalmente do lado do cliente.

OpçõesDescrição
@IPConsulta o servidor DNS, o IP deve ser do servidor DNS.
+shortExibe um output mais direto, com menos informações.
-xFaz uma consulta reversa.

$ dig nic.br

; <<>> DiG 9.16.1-Ubuntu <<>> nic.br
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62689
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;nic.br. IN A

;; ANSWER SECTION:
nic.br. 1508 IN A 200.160.4.6

;; Query time: 40 msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Tue Jun 22 16:25:59 UTC 2021
;; MSG SIZE rcvd: 51



Getent


Já foi falado anteriormente, veja aqui.


Aqui vamos ver o uso dele com hosts.

$ getent hosts www.google.com.br
2800:3f0:4001:814::2003 www.google.com.br

$ getent ahostsv4 www.google.com.br
172.217.29.227 STREAM www.google.com.br
172.217.29.227 DGRAM
172.217.29.227 RAW