
Um dos mais importantes serviços existentes na Internet, o DNS (Domain Name Service) ou Serviço de nome de domínio ou ainda, Servidor de nome de domínio (trate-o como quiser), é o assunto em destaque em useredhat.com.br.
Antes de aprendermos a montar um servidor DNS, é interessante relembrarmos como funcionam algumas coisas na Internet.
Quando usamos o browser para navegar, e aí consultamos sites diversos, vemo-nos sempre clicando na barra de endereços do mesmo e digitando algo como www.algumsite.com.br. A pergunta é: como após alguns segundos este site é exibido em nossa máquina, onde ele está fisicamente, como ele sabe que alguém fez uma solicitação pra que ele fosse exibido, porque digitamos WWW ?
Podemos observar uma coisa em comum em todos os sites pelos quais navegamos. Todos eles são chamados pelo nome, ou seja, aprendemos com muito mais facilidade o nome www.algumsite.com.br, do que o números de IP (Protocolo de Internet) do servidor onde o site esta hospedado. Ao digitarmos esse endereço no browser, o mesmo se encarrega de iniciar um trabalho para que esse nome possa ser traduzido (resolvido) em um numero IP. Os responsáveis por essa tradução são os servidores DNS. Sempre, lembre-se disso, ao digitarmos um nome de site qualquer em nosso browser, haverá sempre um DNS que vai descobrir pra nós onde está o site que queremos, ou melhor, qual o IP da máquina onde esse site está hospedado. Mas o DNS não atua apenas quando digitamos algo do tipo WWW. Há outros serviços em que o trabalho de um DNS é fundamental. O envio de mensagens eletrônicas (e-mail) e a transferência de arquivos na Internet (FTP), são outros exemplos que podemos citar. Para que o trabalho do DNS seja realmente válido, existe um outro elemento nessa história toda. São os domínios. Podemos citar o domínio useredhat.com.br como exemplo. Esse domínio (veja que o www não aparece, pois www não faz parte dos nomes de domínio) foi registrado por alguém em um órgão nacional que cuida do registro de domínios no Brasil. Estamos falando da Fapesp (www.registro.br). Para que um domínio seja válido, é necessário que o mesmo tenha sido registrado na Fapesp (isso no caso do Brasil). Após o registro, podemos usar o domínio para diversas finalidades, inclusive montar servidores DNS. Imagine um servidor DNS com o nome de DNS1.USEREDHAT.COM.BR. Observe que apenas acrescentamos o DNS1 ao nome do domínio. A mesma coisa pode acontecer com uma conta de e-mail como por exemplo: fulanodetal@useredhat.com.br. Note a presença do domínio nas duas situações. Em ambas as situações nós não temos a presença explícita de número de IP, apenas o nome do domínio. Como vimos anteriormente, quem se encarrega de traduzir domínios em número de IP são os servidores DNS.
Mas como eles fazem isso ? Bem, vamos voltar um pouco no tempo para entendermos sobre isso. No início da Internet, apenas poucos computadores dela faziam parte. Esses computadores, para se comunicarem, precisavam de um nome e, é lógico, de um número de IP. Essas informações eram armazenadas em um arquivo chamado hosts.txt e o mesmo era distribuído para todos os computadores da época para que todos pudessem se conhecer. Sendo assim, toda vez que um computador necessitasse encontrar outro na rede, ele consultava o hosts.txt e verificava a existência do computador procurado lá dentro.
Bem, o número de computadores começou a crescer e virou isto que temos hoje. O que aconteceu com o hosts.txt ? ficou sendo o tempo inteiro atualizado e redistribuído na rede ? Lógico que não. Para isso foi inventado o DNS. Com a chegada do DNS, a informação pode ser descentralizada e espalhada em diversos computadores. Hoje o que acontece é que temos milhares de DNS espalhados no mundo e, cada um deles, possui informações sobre uma quantidade de domínios específica.
A coisa começa a ficar mais clara agora, pois se vários computadores são responsáveis por uma quantidade de domínios X, então, quando o meu browser pergunta a um DNS sobre um domínio específico e este não possui a informação, então ele sai perguntando a outros DNS afora até alcançar a resposta. Como assim ?
E como quando chegamos a um lugar desconhecido e estamos procurando a casa de alguém. Perguntamos a uma pessoa que, caso não saiba, nos indica outra e assim sucessivamente até encontrarmos a tal casa. Com os servidores DNS acontece a mesma coisa.
Ao fazer uma conexão com a Internet, automaticamente o nosso provedor diz a nossa máquina quais são os DNS que vão responder pelos domínios que forem solicitados durante a navegação, envio de e-mail ou transferência de arquivos, etc. Se esses DNS não forem capazes de responder as minhas solicitações, então eles sairão buscando a informação em outros DNS na web.
Assim como em quase tudo, os domínios obedecem a uma hierarquia. Os servidores de Internet responsáveis pelos domínios de mais alto nível são os root servers. Neles encontram-se os "top level-domains" ou domínios de mais alto nível. Lembra que a nossa máquina pergunta por um determinado domínio ao DNS indicado pelo nosso provedor ? Pois é, quando esse DNS não sabe a resposta, então ele pergunta aos root servers. Os root servers podem não ter informações sobre um domínio X e então vão precisar perguntar para outros DNS no mundo. Mas, perguntar a quem ?
Sigamos o exemplo do useredhat.com.br. Você digita na barra de endereços do seu browser o domínio useredhat.com.br. Nesse instante o browser vai solicitar informações ao DNS indicado pelo provedor. Este não sabe nada sobre esse domínio e vai perguntar aos root servers que também não conhecem o domínio. E agora ? Os root servers analisam o domínio e verificam que o mesmo possui o final ".br". Opa !!! quem é capaz de responder por esse final ? Isso o root server sabe e endereça rapidamente a requisição para os servidores da Fapesp onde estão registrados os domínios "br". Os servidores da Fapesp não são responsáveis pelo useredhat, porém, sabem em que servidor o domínio se encontra e fazem a pergunta ao mesmo. O.k., o DNS responsável responde.: "o.k., eu sou o responsável por esse domínio". A busca foi encerrada. Para ilustrar essa situação, clique na miniatura abaixo para ver um pequeno layout do que acontece entre os DNS.
|
|
Clientes DNS
No início da matéria citamos o DNS como um dos mais importantes (talvez o mais importante) serviços da Internet. Não há exagero algum nisso. O esquema acima mostrou o que acontece com a máquina de um usuário brasileiro que requisita um web site. Vimos que ela precisa saber quem são os DNS que primeiro irão atendê-la. Pois é, então nós, usuários de Internet com conexão discada ou não, somos todos clientes DNS. O arquivo que devemos editar como um cliente DNS é o /etc/resolv.conf. Vamos observar o arquivo resolv.conf da figura abaixo.
Veja que temos apenas duas linhas "nameserver" com os respectivos IP's dos servidores DNS que a minha máquina usou durante a conexão. Podaríamos especificar mais um, caso quiséssemos. A pesquisa é feita preferencialmente ao primeiro da lista. Caso o primeiro não responda, a pesquisa é dirigida ao segundo e assim por diante até que o número máximo de tentativas seja feita.
Use um editor de textos
qualquer para criar o seu arquivo resolv.conf. Dois outros arquivos importantes
na configuração de um cliente DNS são o /etc/hosts e o /etc/hosts.conf. No /etc/hosts
podemos especificar...advinhe...acertou...hosts. Os hosts especificados nesse
arquivo não são procurados via DNS, pois o arquivo /etc/hosts é consultado
sempre antes do /etc/resolv.conf, ou seja, se um host é encontrado dentro de
/etc/hosts, então a busca não olha para /etc/resolv.conf. Veja abaixo um arquivo
/etc/hosts.
O conteúdo desse arquivo é:
| IP da maquina | hostname | fullname |
| 127.0.0.1 | localhost | localhost.localdomain |
Nesse caso específico há apenas uma máquina citada no arquivo, ou seja, um único host. Todas as vezes que tentarmos localizar "localhost", quem vai responder por esse nome e o /etc/hosts é não o /etc/resolv.conf.
Por último vamos falar
sobre o /etc/hosts.conf.
Este arquivo possui a diretiva "order" que estabelece por onde deve começar o processo de resolução de nomes. No caso acima, a busca é feita primeiro em /etc/hosts e, em seguida em /etc/resolv.conf. Observe que esta escrito "Bind", pois esse é o pacote que, ao ser instalado, é responsável por todo conjunto de tarefas referentes ao DNS.
Resumindo a configuração de um cliente DNS, temos três arquivos importantes nessa história toda. São eles: /etc/resolv.conf, /etc/hosts e /etc/host.conf. O primeiro indica quais servidores DNS serão usados por nossa máquina, o segundo possui uma listas de hosts que não precisarão ser perguntados aos DNS do resolv.conf e o terceiro indica em qual ordem a resolução de nomes e feita.
Servidores DNS
Agora vamos ver como preparar um servidor dns, uma máquina que é capaz de responder por domínios. Dois diretórios são muito importantes nesse trabalho:
/etc
/var/named
Dentro de /etc temos o arquivo named.conf. Dentro de /var/named temos os arquivos correspondentes a cada domínio pelo qual nosso servidor é responsável. Abaixo temos um exemplo de /etc/named.conf. Observe onde aparece o termo "zone". Cada vez que encontrá-lo significa que ali existe a indicação de um domínio. Note também o início do arquivo onde aparece "directory /var/named", etc. Essa é a parte do arquivo em que dizemos ao BIND em qual diretório os arquivos dos domínios devem ser procurados. Então a coisa funciona assim: crio uma nova zona para um domínio novo qualquer e, em seguida, crio em /var/named o arquivo referente a essa zona (domínio). Vamos criar uma zona para meudominio.com.br, basta imitar ou copiar e alterar uma zona já existente.

O.k., não foi difícil. Uma
outra coisa que devemos prestar atenção é na diretiva type. Na zona que
criamos, estabelecemos como "master". Isto significa que o nosso servidor é o
servidor primário dessa zona. Se fossemos o servidor secundário, trocaríamos "master"
por "slave". Vamos ver isso depois. Salve o named.conf e vá para o diretório
/var/named e copie o arquivo "named.local" para "meudomínio.com.br". Use o
comando:
# cp named.local meudominio.com.br
vamos agora editar esse arquivo e deixá-lo o.k., mas, antes vamos ver alguns detalhes do mesmo.
No início do arquivo temos uma informação "TTL (time to live) 3600. Essa diretiva indica a quantidade de tempo que as informações desse domínio são válidas para outros servidores. Calma, vamos entender melhor. Quando um outro dns recebe a informação sobre esse domínio, a mesma ficará no cache dessa máquina durante 3600 segundos (ou uma hora). Com essa informação em cache, a próxima vez que alguém perguntar por esse domínio, a consulta não precisa ser feita ao dns responsável (ao menos durante aquela 1hora em que a informação está no cache). Se houver uma outra consulta após essa 1 hora, aí sim, haverá uma nova consulta ao dns responsável.
Vamos ver sobre as outras informações:
SERIAL.: é uma versão do arquivo. Toda vez que houver uma alteração no arquivo do domínio, precisamos alterar esse número para que o servidor secundário saiba e possa copiar essa nova versão. No exemplo acima temos: 2001070402. Analisando da direita para esquerda, podemos dizer que temos a versão 02 de um arquivo criado em 04/07/2001. Não existe uma regra fixa pra essa informação, mas você deve criá-la de uma forma que possa interpretá-la depois.
REFRESH.: Indica o tempo, em segundos em que o servidor secundário deve fazer uma consulta ao primário para saber sobre os domínios do mesmo. É nessa hora que a informação serial é importante, pois, caso o serial de algum domínio tem sido alterado, então o servidor secundário realiza uma nova cópia do mesmo. No exemplo acima o refresh deve ser feito em 28800 segundos, ou seja, de 8 em 8 horas.
RETRY.: Se por algum motivo, na hora em que o servidor secundário fizer o "refresh" no primário, e o mesmo não responder, então ele tentará uma nova consulta no tempo estabelecido em "retry".
EXPIRE.: É o tempo máximo que o servidor secundário pode ficar sem consultar o primário. Após esse tempo, a informação sobre o domínio será expirada.
Vamos agora para as outras informações.
Obs. Comece a
editar o seu arquivo e deixe-o idêntico ao que temos abaixo:
Informações iniciadas com ";" são conseideradas comentários.
A linha:
informa quem éo servidor de nomes (NS) para "meudomínio.com.br (representado pelo simbolo @)".
A linha:
informa quem éo servidor de e-mail (MX) para "meudomínio.com.br (representado pelo simbolo @)".
Por fim temos a definição dos hosts, ou seja, os endereços IP das máquinas que respondem por determinados serviços como: www, ftp, mail, etc.
Observe por exemplo na linha iniciada em "mail". Essa linha resolve a indicação MX (mail exchanger) feita acima. Na indicação MX, dissemos que o servidor de e-mail desse domínio e o "mail.meudominio.com.br". Quando fazemos isso, devemos dizer quem e a máquina "mail" (que no nosso caso e a 200.198.71.220. Observe também que indicamos qual o IP para o serviço WWW, ou seja, quando alguém buscar por "www.meudominio.com.br", então, conforme a nossa configuração, o servidor será o 127.0.0.1, assim como para o serviço FTP. Veja abaixo a imagem de como seria o nosso domínio completo.
Para testarmos esse domínio é
preciso reiniciarmos o serviço NAMED. Para fazer isso vamos para o diretório
onde estão os principais serviços do nosso sistema. O diretório
é o /etc/rc.d/init.d. Dentro do
diretório digite:
../named status
Esse comando nos dirá se o serviço está sendo executado ou parado. Se estiver sendo executado, então você pode usar ./named restart para parar e iniciar o serviço imediatamente. Se estiver parado, então use ./named start. Para testarmos o nosso domínio podemos fazer alguns testes usando o comando ping. Veja abaixo as imagens dos testes com os serviços WWW, FTP e MAIL.
Nos exemplos acima fizemos teste com o comando "ping" nos serviços WWW e FTP.
Esperamos ter clareado um pouco a idéia de DNS nesse artigo. Aproveitamos também para pedir a sua colaboração para deixar esse artigo mais completo, pois sabemos que há muitas outras coisas a serem aqui acrescentadas e isso fará com que o site armazene uma quantidade grande e importante de informações que cada vez mais usuários poderão utilizar.
Valeu !!! useredhat.com.br agradece a sua participação.