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:
- A estação de trabalho procura o nome em seu cache DNS. Esse cache é atualizado dinamicamente.
- Não achando o site no cache, a estação procura em seu arquivo /etc/hosts.
- Caso não encontre, consulta o servidor DNS.
- Caso o servidor DNS não seja o dono do domínio, ele vai consultar seu cache DNS.
- Caso o DNS não encontre o endereço em seu cache, ele vai consultar os DNS raiz.
- O DNS raiz vai direcioná-lo para o próximo DNS da estrutura.
- O processo segue até que o endereço seja resolvido, ou o domínio e/ou endereço não sejam encontrados.
- O servidor DNS registra o endereço em seu cache e devolve o endereço IP para a estação de trabalho.
- 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.