A resolução de nomes (DNS) é o que permite usar google.com em vez de decorar 142.250.79.46. Neste post vamos explorar como o Linux resolve nomes e as ferramentas para diagnosticar problemas de DNS.

Como funciona a resolução

Quando um programa precisa resolver um nome, o fluxo típico é:

  1. Consulta o arquivo /etc/hosts (mapeamentos locais).
  2. Consulta o servidor DNS configurado em /etc/resolv.conf.
  3. O servidor DNS responde com o IP correspondente.

A ordem é definida em /etc/nsswitch.conf na linha hosts::

grep ^hosts /etc/nsswitch.conf
hosts:          files dns

files significa /etc/hosts primeiro, depois dns consulta o servidor.

/etc/resolv.conf

Este arquivo define quais servidores DNS o sistema deve consultar:

cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 192.168.1.1
nameserver 8.8.8.8
search home.lan
Dica: Em muitas distribuições modernas, o /etc/resolv.conf é um symlink gerenciado pelo systemd-resolved ou NetworkManager. Editar diretamente pode não ter efeito permanente.

/etc/hosts

O arquivo /etc/hosts fornece mapeamento estático de nomes para IPs:

cat /etc/hosts
127.0.0.1       localhost
127.0.1.1       meuservidor.home.lan meuservidor
192.168.1.50    db-server
192.168.1.51    app-server

Ideal para ambientes pequenos, testes locais ou para sobrescrever registros DNS.

nslookup

Consulta rápida de DNS:

nslookup google.com
Server:		192.168.1.1
Address:	192.168.1.1#53

Non-authoritative answer:
Name:	google.com
Address: 142.250.79.46
Name:	google.com
Address: 2800:3f0:4001:82a::200e

Para consultar um servidor DNS específico:

nslookup google.com 8.8.8.8

dig

O dig é mais detalhado e preferido por administradores:

dig google.com
;; ANSWER SECTION:
google.com.		229	IN	A	142.250.79.46

;; Query time: 12 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Thu Mar 27 10:30:00 -03 2026
;; MSG SIZE  rcvd: 55

Consultas úteis com dig:

# Apenas a resposta, sem extras
dig +short google.com

# Consultar registro MX (e-mail)
dig MX google.com

# Consultar servidor específico
dig @8.8.8.8 google.com

# Resolução reversa (IP -> nome)
dig -x 8.8.8.8

systemd-resolved

Distribuições modernas usam o systemd-resolved como cache DNS local. Para verificar o status:

resolvectl status
Global
       Protocols: +LLMNR +mDNS -DNSOverTLS DNSSEC=no/unsupported
resolv.conf mode: stub

Link 2 (eth0)
    Current Scopes: DNS LLMNR/IPv4
         Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 192.168.1.1
       DNS Servers: 192.168.1.1 8.8.8.8

Para limpar o cache DNS:

sudo resolvectl flush-caches
resolvectl statistics
Dica: Se ping resolve nomes mas dig não (ou vice-versa), lembre-se que ping usa a libc (respeita /etc/hosts e nsswitch.conf), enquanto dig consulta o servidor DNS diretamente.