Skip to main content

DNS Basics

Temos dois computadores hostA e hostB na mesma rede. A quer chegar em B.

Podemos pingar usando o IP de B ou dar a ele um nome para facilitar. Fazendo uma comparação, você pode digita o número para ligar pra alguém ou vai na agenda e clica no nome.

O arquivo /etc/hosts vincula um IP a um nome no Linux. É a nossa agenda.

O nome verdadeiro do hostname do hostB é host-2. Mas lembra que eu falei da agenda? Na minha agenda eu posso colocar o nome que eu quiser para ligar para joão. Eu quero chamar joão de john. É isso que o hostA acabou de fazer.

alt text

Podemos definir no arquivo de hosts o ip de qualquer coisa, mas não quer dizer que é verdade. Se pingar www.google.com o servidor que irá responder será aquele que você definiu o IP.

Podemos ter quantos nomes quisermos até para o mesmo IP.

A vantagem de usar nomes é que toda vez que escrevemos esse ele irá buscar na arquivo e traduzir para o IP de onde estamos indo sem precisar ficar guardando o IP das coisas.

O problema disso é que todo mundo precisaria ter todas as entradas da rede. Se um host mudasse de ip o nome não traduziria o ip correto.. Para gerenciar isso fica meio complicado quando a tendência é crescer.

alt text

Para resolver esse problema movemos todas as entradas para um único servidor que irá administrar de forma centralizada os nomes e quem precisar resolver um nome vai até ele. Esse servidor é conhecido como DNS Server.

alt text

No Linux configuramos quem será o DNS Server no arquivo /etc/resolv.conf evitando entradas no /etc/hosts.

Ainda podemos continuar fazendo configurações manualmente no /etc/hosts,inclusive ele é o primeiro arquivo que será consultado e caso não encontre o nome então usará o DNS Server. Se encontrar em ambos o /etc/hosts quem vai traduzir.

alt text

A precedência de quem deve ser utilizado primeiro encontra-se no arquivo /etc/nsswitch.conf podendo ser alterada.

alt text

Se não conseguimos resolver usando o /etc/hosts e com o servidor dns então falhará.

É possível ter vários servidores dns configurados no /etc/resolv.conf.

Também é possível que se um Servidor DNS falhe ao tentar resolver o nome chame OUTRO para ajudar. Por exemplo temos ali o Forward All 8.8.8.8. Isso quer dizer que ele resolve o que consegue e o que não consegue usa o dns do google que é um servidor dns público que conhece tudo.

Os mais utilizados são:

  • Google Public DNS:
    • 8.8.8.8 (Principal)
    • 8.8.4.4 (Alternativo)
    • Desenvolvido e mantido pelo Google, é conhecido por sua velocidade e confiabilidade.
  • DNS da Cloudflare
    • 1.1.1.1 (Principal)
    • 1.0.0.1 (Alternativo)
    • Focado em privacidade e segurança, o Cloudflare DNS é conhecido por sua rapidez e por não registrar logs de consulta de DNS
  • OpenDNS
    • 208.67.222.222 (Principal)
    • 208.67.220.220 (Alternativo)
    • Oferece proteção contra phishing e filtros de conteúdo opcionalmente configuráveis.

alt text

Domain

www.google.com

Os domínios são divididos por . para facilitar lembrar o nome na Internet e agrupar as coisas de acordo com a sua intensão.

Esses são os domino conhecido como TLD - (Top-Level Domain). O top level é o ultimo bloco depois de dividir todo o domínio.

alt text

  • .com – para sites comerciais.
  • .org – para organizações.
  • .net – para redes.
  • .xyz – para uso geral.
  • .name – para indivíduos.
  • .biz – para negócios e empreendimentos em geral.
  • .space – para ter seu próprio espaço na web.
  • .site – para fazer seu espaço próprio na Internet.
  • .info – para plataformas de informação.
  • .club – para clubes online.
  • .tech – para portais de tecnologia.
  • .online – para firmar uma presença na Internet.
  • .co – para corporações e marcas de grande porte.
  • .pro – para profissionais de qualquer nicho de mercado.
  • .app – para criadores de aplicativos
  • .dev – para desenvolvedores.
  • .studio – para artistas, músicos e profissionais da cultura.
  • .agency – para agências de qualquer tipo.
  • .life – para mostrar seu estilo de vida.
  • .blog – para reforçar que você é um blogueiro.
  • .cloud – para empresas e negócios na nuvem.
  • .link – para o mundo dos negócios conectados
  • .io – para empresas de tecnologia.
  • .tv – para entretenimento em geral.
  • MUITOS OUTROS..

Exitem muitos outros e quanto mais a Internet cresce, mais aparece.

Temos os TDL para países.

  • .br – Brasil.
  • .es – Espanha.
  • .ru – Rússia.
  • .us – Estados Unidos.
  • .eu – União Europeia.
  • .ca – Canadá.
  • .nl – Holanda.
  • .de – Alemanha.
  • .fr – França.
  • .jp – Japão.
  • .ai – Anguila
  • .cn – China.
  • OUTROS.

Existe top levels que são que são os patrocinados que não podem ser vendidos pois tem um destino específico.

  • .gov – para sites governamentais.
  • .edu – para instituições educacionais.
  • .int – para organizações internacionais baseadas em tratados.
  • .mil – para o exército dos EUA.
  • OUTROS.

E no caso do brasil que temos vários. .com.br, .net.br, .org.br?

O .br é o top level e o demais são conhecidos como domínios de segundo nível. Geralmente esse domínios associados à países possuem uma organização por trás para controlar. Se quiser ter um registro no top level .br é necessário comprar em Registro.br. Não existe como comprar um domínio somente com .br no final tipo meudominio.br.

Vamos pro caso simples.

Temos o exemplo www.google.com .com é o TDL, google é o domínio, que sempre esta sob algum TDL ou TDS de segundo nível como vimos no caso do .br e o www é o subdomain.

Uma vez que o temos o domínio (google.com) podemos criar vários subdomínios para apontar para diferentes coisas na Internet, mas tudo embaixo do domínio principal.

se analisarmos isso como uma arvore temos:

alt text

Vamos imaginar que estamos em um a organização e que ela tem o seu dns server.

Quando fazemos uma requisição para acessar o app.google.com por exemplo qual o caminho percorrido para resolver o ip?

  1. O DNS Server da organização confere se ele consegue resolver, se já tem cadastrado então devolve o Ip.

  2. Se não tiver outro dns (nameserver) que ele pode tentar resolver então devolver que não conhece. Caso contrário, tenta em outros dns servers e guarda o IP por um período de tempo para que a próxima solicitação seja mais rápida.

alt text

Append

alt text

Records

alt text

Tools

Algumas ferramentas para testar resolução de nomes.

nslookup

Essa ferramentas não considera o /etc/hosts somente se os dns servers do resolv.conf irão conseguir resolver.

nslookup www.google.com  
Server: 8.8.8.8 # QUAL DNS SERVER QUE EU TENHO NO MEU RESOLV.CONF QUE SERÁ USADO PARA RESOLVER
Address: 8.8.8.8#53 #DNS SERVERS USAM PORTA 53

Non-authoritative answer:
Name: www.google.com
Address: 142.250.78.228
Name: www.google.com
Address: 2800:3f0:4004:810::2004

# Posso usar um servidor específico para tentar resolver
nslookup google.com 1.1.1.1
Server: 1.1.1.1
Address: 1.1.1.1#53

Non-authoritative answer:
Name: google.com
Address: 142.251.135.110
Name: google.com
Address: 2800:3f0:4004:80b::200e

nslookup umdominioimpossivel.com.br
Server: 8.8.8.8
Address: 8.8.8.8#53

** server can't find umdominioimpossivel.com.br: NXDOMAIN

dig

Esta ferramenta é mais verbosa e retorna o que esta no seu dns server não somente o ip.

dig www.google.com  

; <<>> DiG 9.18.18-0ubuntu0.22.04.2-Ubuntu <<>> www.google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 19037
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
;; QUESTION SECTION:
;www.google.com. IN A

;; ANSWER SECTION:
www.google.com. 6 IN A 142.250.79.164

;; Query time: 4 msec
;; SERVER: 8.8.8.8#53(8.8.8.8) (UDP)
;; WHEN: Sat Feb 17 23:17:56 -03 2024
;; MSG SIZE rcvd: 59