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.
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.
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 DNS Server. Se encontrar em ambos o /etc/hosts 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 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.
.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:
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?
-
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 tempo
para que a próxima solicitação seja mais rápida.
Append
Records
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