Fundamentos de DNS
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 digitar o número para ligar para 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.

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 nome ele irá buscar no 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.

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.

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 servidor DNS. Se encontrar em ambos, o /etc/hosts será quem vai traduzir.

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

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.

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 intenção.
Esses são os domínios conhecidos como TLD - (Top-Level Domain). O top level é o último bloco depois de dividir todo o domínio.

.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..
Existem muitos outros e quanto mais a Internet cresce, mais aparecem.
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.
Existem top levels que são os patrocinados que não podem ser vendidos pois têm 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 os demais são conhecidos como domínios de segundo nível. Geralmente esses domínios associados a 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. O .com é o TLD, google é o domínio, que sempre está sob algum TLD ou TDS de segundo nível como vimos no caso do .br e o www é o subdomínio.
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 árvore temos:

Vamos imaginar que estamos em uma organização e que ela tem o seu servidor DNS.
Quando fazemos uma requisição para acessar o app.google.com por exemplo qual o caminho percorrido para resolver o ip?
-
O DNS Server da organização confere se ele consegue resolver, se já tem cadastrado então devolve o Ip.
-
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 tempopara que a próxima solicitação seja mais rápida.

Append

Records

Tools
Algumas ferramentas para testar resolução de nomes.
nslookup
Essa ferramenta não considera o /etc/hosts, somente se os servidores DNS do resolv.conf irão conseguir resolver.
nslookup www.google.com
Server: 8.8.8.8 # Qual servidor DNS que eu tenho no meu resolv.conf que será usado para resolver
Address: 8.8.8.8#53 # Servidores DNS 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 está no seu servidor DNS, 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