DNS: perguntas e respostas
O DNS traduz nomes em endereços, e cada resposta traz registros de um tipo: A, AAAA, CNAME, MX, TXT.
Computadores falam com endereços IP, mas pessoas lembram nomes. O DNS é o serviço que traduz um no outro. Antes de abrir estoque.galpao.test, a máquina pergunta a um servidor DNS (o resolvedor) qual é o endereço desse nome, normalmente por UDP na porta 53.
A consulta e a resposta são dois pacotes com o mesmo ID (transaction ID). A resposta repete a pergunta e acrescenta os registros:
| Tipo | O que guarda | Exemplo |
|---|---|---|
A |
Endereço IPv4 | 198.51.100.10 |
AAAA |
Endereço IPv6 | 2001:db8:10::10 |
CNAME |
Apelido: "este nome é outro nome" | estoque.galpao.test aponta para srv7.armazem.galpao.test |
MX |
Servidor de e-mail do domínio | 10 correio.galpao.test |
TXT |
Texto livre | Verificações de domínio, recados |
Quando o nome não existe, a resposta vem com o código NXDOMAIN, que o Wireshark mostra como No such name.
Um exemplo de resposta com apelido, como aparece nos detalhes do Wireshark:
Queries
estoque.galpao.test: type A, class IN
Answers
estoque.galpao.test: type CNAME, class IN, cname srv7.armazem.galpao.test
srv7.armazem.galpao.test: type A, class IN, addr 203.0.113.45
Lê-se assim: a máquina perguntou por estoque.galpao.test, esse nome é um apelido de srv7.armazem.galpao.test, e o endereço final é 203.0.113.45.
Filtros úteis no Wireshark: dns (tudo), dns.flags.response == 1 (só respostas), dns.qry.name == "estoque.galpao.test" (um nome), dns.a == 203.0.113.45 (respostas que contêm esse endereço) e dns.qry.type == 16 (consultas do tipo TXT).
Como o DNS comum não é cifrado, quem observa a rede vê todos os nomes que uma máquina consultou. É uma das primeiras coisas que um analista olha numa investigação.