Entendendo TCP/IP (Parte 3) - Resolução de nomes

Neste terceiro artigo sobre TCP/IP, vou descrever o processo de resolução de nomes. Mostrarei como configurar
o cliente DNS, bem como a diferença entre nomes Netbios e DNS. Após entendidos os conceitos, passarei a falar
sobre o DNS Server, desde o registro um domínio na Fapesp até a configurações do Bind9, passando pelas
zonas de transferência e questões de segurança.

[ Hits: 42.007 ]

Por: Ricardo Lino Olonca em 07/05/2011


Funcionamento do DNS



O DNS é uma estrutura hierárquica de resolução de nomes, como uma árvore, onde cada "galho" é um domínio (como vivaolinux.com.br). Cada domínio possui um ou mais hosts (como por exemplo www). Quando tentamos acessar o endereço www.vivaolinux.com.br, estamos tentando acesso ao host "www" do domínio vivaolinux.com.br.

Nessa árvore hierárquica, a raiz é o "." (ponto). O servidor Raiz faz referência ao galhos logo acima, como br., jp., uk., etc. E cada galho faz referência aos galhos que "saem" dele, como .com.br, e assim por diante. Noutras palavras, existe um servidor raiz que é o núcleo do DNS.

Ao acessarmos o site www.vivaolinux.com.br, o DNS raiz nos direciona para o DNS responsável pelo domínio (galho) br. Este, por sua vez, nos direciona para o DNS responsável pelo domínio com.br. Por último, o DNS que administra o domínio com.br nos direciona para o DNS responsável pelo domínio vivaolinux.com.br. E este último servidor é quem realmente resolve o IP do host www.

Portanto, há uma entidade responsável pelos domínio na Internet. No caso do Brasil, é a Fapesp. Tudo o que estiver abaixo de br é responsabilidade da Fapesp. Para consultar mais informações sobre domínios, acesse http://registro.br.

Uma estrutura hierárquica possibilita que cada empresa, ou pessoa, seja responsável pelo seu domínio, bem como pelos host que fazem parte desse domínio. Assim sendo, não é mais necessário possuir uma única lista com todos os domínios da Internet.

Suponha que minha estação de trabalho tenha que resolver o nome www.vivaolinux.com.br. O processo de resolução é o seguinte:
  1. A estação de trabalho procura o nome em seu cache DNS. Esse cache é atualizado dinamicamente.
  2. Não achando o site no cache, a estação procura em seu arquivo /etc/hosts.
  3. Caso não encontre, consulta o servidor DNS.
  4. Caso o servidor DNS não seja o dono do domínio, ele vai consultar seu cache DNS.
  5. Caso o DNS não encontre o endereço em seu cache, ele vai consultar os DNS raiz.
  6. O DNS raiz vai direcioná-lo para o próximo DNS da estrutura.
  7. O processo segue até que o endereço seja resolvido, ou o domínio e/ou endereço não sejam encontrados.
  8. O servidor DNS registra o endereço em seu cache e devolve o endereço IP para a estação de trabalho.
  9. A estação de trabalho coloca o endereço em seu cache DNS.

Geralmente configuramos as estações de trabalho para utilizarem 2 servidores DNS, mas você pode configurar quantos quiser. Ao resolver um nome, o primeiro servidor DNS será utilizado e, caso não consiga resolver, o segundo será utilizado, e assim por diante.

Para configurar o cliente DNS é necessário alterar o arquivo /etc/resolv.conf. Sua estrutura é bem simples:

cat /etc/resolv.conf

nameserver 172.20.1.6
nameserver 172.20.1.1
search meudominio.net

O parâmetro "nameserver" diz ao cliente quais são os servidores DNS. No meu caso, 172.20.1.6 e 172.20.1.1.

O parâmetro search é bem interessante. Ele informa ao cliente qual o domínio usado para resolução de nomes quando o domínio não é especificado. Por exemplo, se eu colocar "search vivaolinux.com.br", ao tentar pingar o site www, a cliente DNS adicionará o domínio vivaolinux.com.br em sua solicitação. Ou seja, ao pingar www, a solicitação será para www.vivaolinux.com.br.

ping -c 1 www

Resposta:

PING vivaolinux.com.br (174.123.53.162) 56(84) bytes of data
. 64 bytes from sunshine.vivaolinux.com.br (174.123.53.162): icmp_req=1 ttl=49 time=152 ms

--- vivaolinux.com.br ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 152.251/152.251/152.251/0.000 ms

Basicamente essas são as configurações do cliente DNS. Para qualquer problema envolvendo redes, antes de testar regras de firewall, roteamento, ou proxy, verifique primeiro se o computador está resolvendo nomes através do ping. Analise principalmente os arquivos /etc/network/interfaces (visto no último artigo), /etc/hosts e /etc/resolv.conf.

Vamos ver alguns comandos úteis para trabalhar com resolução de nomes.
Página anterior     Próxima página

Páginas do artigo
   1. Introdução ao conceito de resolução de nomes
   2. Funcionamento do DNS
   3. Comandos úteis
   4. Nomes Netbios X nomes DNS
   5. Considerações finais
Outros artigos deste autor

Entendendo TCP/IP (Parte 5) - Portas TCP/UDP

Problemas encontrados na adoção do IPv6

Entendendo TCP/IP (Parte 6) - Firewall

O fim está próximo

Deduplicação com LessFS

Leitura recomendada

Configurando BIND 9 + chroot sem mistérios

A internet é inocente

LimeWire - um P2P muito interessante para Linux

Vsftp - Instalação de um servidor FTP focado em segurança

Gravando conversas no Skype do Linux

  
Comentários
[1] Comentário enviado por julio_hoffimann em 07/05/2011 - 18:51h

Oi Ricardo, parabéns!

É muita informação! Obrigado por explicar de maneira didática todos esses conceitos. A série como um todo já está nos meus favoritos. ;-)

Abraço!

[2] Comentário enviado por embura em 28/02/2012 - 13:38h

para usar esses comandos no fedora precisa do pacote bind-utils.

[3] Comentário enviado por sk4d1nh4 em 04/06/2013 - 11:07h

Só uma observação...
Configuramos dois ou mais servidores DNS para consulta para o caso de indisponibilidade de um o outro ser consultado.
O texto informa que se o primeiro nao conseguir resolver o nome ele passa para o segundo e nao funciona bem assim. O segundo servidor só é consultado se o primeiro não estiver disponível. Mas se o primeiro já responder que não conseguiu resolver o nome o erro já é retornado para o sistema operacional.

[4] Comentário enviado por ricardoolonca em 06/06/2013 - 10:17h

Você está correto, sk4d1nh4. É isso mesmo. Um segundo dns só será usado se o primeiro não responder. Se o primeiro responder mas não conseguir resolver o nome, o segundo dns não será usado e uma mensagem de erro será exibida.

Obrigado pela correção.


[5] Comentário enviado por removido em 20/02/2017 - 00:17h

Olá Ricardo.

Apenas uma informação para somar com o conteúdo. você escreveu no artigo que o Linux só consegue fazer até o passo 4 descrito na paǵina 4. Mas se for configurado, ele pode sim fazer os outros passos até a resolução de nomes NetBIOS utilizando o servidor Wins.

Basta configurar o arquivo /etc/nsswitch.conf e incluir uma nova base de dados que será consultada para resolução de nomes, nesse caso o WINS. é lógico que deve existir um servidor wins e o servidor linux deve ter o samba configurado e instalado, além do winbind instalado.

[6] Comentário enviado por ricardoolonca em 20/02/2017 - 10:00h


[5] Comentário enviado por eabreu em 20/02/2017 - 00:17h

Olá Ricardo.

Apenas uma informação para somar com o conteúdo. você escreveu no artigo que o Linux só consegue fazer até o passo 4 descrito na paǵina 4. Mas se for configurado, ele pode sim fazer os outros passos até a resolução de nomes NetBIOS utilizando o servidor Wins.

Basta configurar o arquivo /etc/nsswitch.conf e incluir uma nova base de dados que será consultada para resolução de nomes, nesse caso o WINS. é lógico que deve existir um servidor wins e o servidor linux deve ter o samba configurado e instalado, além do winbind instalado.


Correto. Obrigado pela informação, eabreu. É que geralmente isso não vem configurado por padrão.


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts