(M)  s i s t e m a   o p e r a c i o n a l   m a g n u x   l i n u x ~/ · documentação · suporte · sobre

  Página seguinte Página anterior Índice

99. Um Servidor de Nomes Somente Para Cache.

Uma primeira aproximação à configuração do DNS, que pode ser muito útil para usuários que utilizam linhas discadas.

Um servidor de nomes somente para cache deve ser capaz de encontrar as respostas às pesquisas de nomes e endereços e deve ainda guardar as respostas, para a próxima em que sejam necessárias. Isto diminuirá o tempo de espera significativamente, especialmente quando se tem uma conexão lenta.

Inicialmente é necessário ter-se um arquivo /etc/named.conf, o qual será lido quando o servidor de nomes for inicializado. Por enquanto ele pode conter simplesmente:


// Configuração  do arquivo para um servidor de nomes somente para cache

options{
        directory "/var/named";

        // Não comentar isto pode ajudar caso se tenha um firewall presente
        // e as coisas não estejam funcionando:

        // endereço de pesquisa: porta 53;
};

zone "." {
        type hint;
        file "rott.hints ";
};

zone "0.0.127.in-addr.arpa" {
        type master;
        file "pz/127.0.0";
};

A linha `directory' indica onde os arquivos devem estar localizados. Todos os arquivos subseqüentes serão relativos a este. Assim pz é um diretório sob /var/named, ou seja estará localizado em /var/named/pz. /var/named é o diretório definido pelo Padrão de Sistemas de Arquivos Linux.

O arquivo denominado /var/named/root.hints deve conter:


.                       6D IN NS        G.ROOT-SERVERS.NET.
.                       6D IN NS        J.ROOT-SERVERS.NET.
.                       6D IN NS        K.ROOT-SERVERS.NET.
.                       6D IN NS        L.ROOT-SERVERS.NET.
.                       6D IN NS        M.ROOT-SERVERS.NET.
.                       6D IN NS        A.ROOT-SERVERS.NET.
.                       6D IN NS        H.ROOT-SERVERS.NET.
.                       6D IN NS        B.ROOT-SERVERS.NET.
.                       6D IN NS        C.ROOT-SERVERS.NET.
.                       6D IN NS        D.ROOT-SERVERS.NET.
.                       6D IN NS        E.ROOT-SERVERS.NET.
.                       6D IN NS        I.ROOT-SERVERS.NET.
.                       6D IN NS        F.ROOT-SERVERS.NET.

G.ROOT-SERVERS.NET.     5w6d16h IN A    192.112.36.4
J.ROOT-SERVERS.NET.     5w6d16h IN A    198.41.0.10
K.ROOT-SERVERS.NET.     5w6d16h IN A    193.0.14.129
L.ROOT-SERVERS.NET.     5w6d16h IN A    198.32.64.12
M.ROOT-SERVERS.NET.     5w6d16h IN A    202.12.27.33
A.ROOT-SERVERS.NET.     5w6d16h IN A    198.41.0.4
H.ROOT-SERVERS.NET.     5w6d16h IN A    128.63.2.53
B.ROOT-SERVERS.NET.     5w6d16h IN A    128.9.0.107
C.ROOT-SERVERS.NET.     5w6d16h IN A    192.33.4.12
D.ROOT-SERVERS.NET.     5w6d16h IN A    128.8.10.90
E.ROOT-SERVERS.NET.     5w6d16h IN A    192.203.230.10
I.ROOT-SERVERS.NET.     5w6d16h IN A    192.36.148.17
F.ROOT-SERVERS.NET.     5w6d16h IN A    192.5.5.241

Este arquivo descreve o nome dos servidores raiz no mundo. Este conteúdo pode mudar com o passar do tempo e tem que ser atualizado permanentemente. Veja a seção de manutenção para saber como mantê-lo atualizado.

A próxima seção em named.conf é zone. Explicaremos o seu uso num capítulo adiante. Por hora somente façamos deste um arquivo chamado 127.0.0 no subdiretório pz:


@               IN      SOA     ns.linux.bogus.hostmaster.linux.bogus. (
                                1     ; Serial
                                8H      ; Atualização
                                2H    ; Tentativas
                                1W      ; Expiração
                                1D)     ; TTL mínimo
                NS      ns.linux.bogus.
1               PTR     localhost

Em seguida, será necessário um arquivo /etc/resolv.conf com o seguinte conteúdo:


search subdomínio.seu\_domínio.edu.br seu\_domínio.edu.br
nome\_do\_servidor 127.0.0.1

A linha `search' especifica que o domínio deve ser pesquisado para qualquer nome de máquina com a qual se queira conectar. A linha `nameserver' especifica o endereço do servidor de nomes. Neste caso, a própria máquina, uma vez que é nela que o programa named é executado (já que 127.0.0.1 foi informado, não importando se a máquina tem também outro endereço). Caso se queira indicar vários servidores de nomes, deve-se criar uma linha `nameserver' para cada um deles. (Nota: O programa named nunca lê este arquivo, e sim o resolvedor que utilizar o named).

Vamos ilustrar um pouco mais a função deste arquivo: caso um cliente tente procurar por itamaraca, então itamaraca.subdomínio.seu_domínio.edu.br será a primeira tentativa, então será tentado itamaraca.seu_domínio.edu.br e finalmente somente itamaraca. Se um cliente tentar procurar metalab.unc.edu, metalab.unc.edu.subdomínio.seu_domínio.edu.br será tentado inicialmente (sim, não faz muito sentido, mas é o jeito que ele funciona), então metalab.unc.edu.seu_domínio.edu.br, e finalmente metalab.unc.edu. Caso se queira colocar muitos domínios na linha search, isso pode provocar uma sobrecarga nos tempos de pesquisa.

O exemplo presume que a máquina pertence ao domínio subdomínio.seu_domínio.edu.br, sendo provavelmente o servidor de nomes nome_da_máquina.subdomínio.seu_domínio.edu.br. A linha de busca não deve conter o TLD (Domínio Raiz `edu.br' neste caso). Caso seja necessário conectar-se com freqüência a máquinas de outros domínios, deve-se acrescentar aqueles domínios à linha de busca, como por exemplo:


search subdomínio.seu_domínio.edu.br seu_domínio.edu.br outro_domínio.com.br

e assim por diante. Obviamente deve-se utilizar nomes reais de domínios. Os aqui colocados servem somente como exemplos. Por favor atente para a falta de pontos no final dos nomes dos domínios.

A seguir, dependendo da versão da biblioteca libc, tanto pode ser necessário atualizar o /etc/nsswitch.conf ou o /etc/host.conf. Caso se tenha o nsswitch.conf este será utilizado, caso contrário , atualizaremos o host.conf.

/etc/nsswitch.conf

Este é um arquivo longo que especifica onde podem ser obtidos diferentes tipos de dados, de que arquivos e de qual base de dados. Usualmente contém comentários úteis no topo, que podem ser lidos agora. Depois disso, deve ser encontrada uma linha que comece com `hosts:', onde se pode ler:


hosts:      files dns

Caso não haja nenhuma linha iniciada com `hosts:' então deve ser incluída a linha acima. Ela indica que os programas devem primeiramente pesquisar o arquivo /etc/hosts, e após então verificar o DNS de acordo com o configurado no arquivo resolv.conf.

/etc/host.conf

Provavelmente contém várias linhas, uma delas deve começar com order e deve ter o seguinte:


order hosts, bind

Se não houver nenhuma linha `order', então uma deve ser criada. Esta linha indica que a resolução de nomes de máquinas deve pesquisar inicialmente no arquivo /etc/hosts, e depois pesquisar junto ao servidor de nomes (definido em resolv.conf como 127.0.0.1). Estes dois últimos arquivos estão documentados na página de manual do utilitário resolver(8) (para acessá-la execute man 8 resolv) na maioria das distribuições Linux. Aquela página do manual é clara e em nossa opinião, todos devem lê-la (especialmente os administradores de DNS). Faça-o agora caso você seja um daqueles que diz para si mesmo: "Eu vou ler mais tarde", mas nunca o faz.

99.1 Iniciando o named

Após tudo isto é hora de iniciar o servidor de nomes. Caso se esteja usando uma conexão discada, primeiro deve-se estabelecer a conexão. Deve-se digitar então `ndc start', sem opções. Caso isto não funcione, pode-se tentar `/usr/sbin/ndc start'. Caso isto não funcione, deve-se verificar a seção Perguntas e Respostas. Agora é possível testar a configuração. Ao se visualizar o arquivo de mensagens syslog (usualmente chamado /var/adm/messages; podem ser examinados também o diretório /var/log e o arquivo syslog) ao se iniciar o servidor de nomes (executando-se tail -f/var/log/messages ) deve-se obter algo como:

(linhas terminadas em \ continuam na linha seguinte)

Feb 15 01:26:17 roke named[6091]: starting.  named 8.1.1 Sat Feb 14 \
  00:18:20 MET 1998 ^Ijanl@roke.uio.no:/var/tmp/bind-8.1.1/src/bin/named
Feb 15 01:26:17 roke named[6091]: cache zone "" (IN) loaded (serial 0)
Feb 15 01:26:17 roke named[6091]: master zone "0.0.127.in-addr.arpa" \
  (IN) loaded (serial 1)
Feb 15 01:26:17 roke named[6091]: listening [127.0.0.1].53 (lo)
Feb 15 01:26:17 roke named[6091]: listening [129.240.230.92].53 (ippp0)
Feb 15 01:26:17 roke named[6091]: Forwarding source address is [0.0.0.0].1040
Feb 15 01:26:17 roke named[6092]: Ready to answer queries.

Se houver alguma mensagem de erro, ela deve ser examinada. O named indicará o arquivo onde o problema se encontra (ou named.conf. ou root.hints, esperamos). O servidor de nomes deve ser finalizado e os arquivos devem ser corrigidos.

Agora é hora de iniciar o nslookup para examinar o trabalho realizado até aqui.

$ nslookup
default Server:  localhost
Address:  127.0.0.1

>

Caso este seja o resultado obtido, parabéns, está funcionando. Esperamos que sim. Caso se obtenha um resultado diferente, deve-se retornar e verificar todos os passos. Cada vez que se altere o arquivo named.conf será necessário reiniciar o servidor de nomes usando o comando ndc restart.

Agora podemos fazer pesquisas no sistema. Podemos procurar por alguma máquina próxima; A pat.uio.no está próxima a mim na Universidade de Oslo:

> pat.uio.no
Server:  localhost
Address:  127.0.0.1

Name:    pat.uio.no
Address:  129.240.130.16

O nslookup agora perguntou ao seu servidor de nomes para procurar a máquina pat.uio.no. Este contactou uma dos servidores de nomes listados no arquivo root.hints , e perguntou a um deles qual o caminho para a máquina desejada. Pode levar bem pouco tempo antes de se obter o resultado, enquanto named procura todos os domínios definidos em /etc/resolv.conf.

Ao se pesquisar novamente, tem-se:

> pat.uio.no
Server:  localhost
Address:  127.0.0.1

Non-authoritative answer:
Name:    pat.uio.no
Address:  129.240.2.50

Note a linha `Non-authoritative answer:' que obtivemos desta vez. Isto indica que o servidor de nomes não saiu pela rede para perguntar sobre a máquina desejada. Ao invés disto procurou em seu cache e encontrou-o lá. Mas a informação do cache pode estar desatualizada (antiga). Então se está informado deste perigo (muito pequeno) quando o sistema informa `resposta Não autorizada:'. Quando o nslookup disser isto pela segunda vez para a mesma máquina, pode-se estar certo de que o cache está funcionando e fornecendo a informação certa. Pode sair-se do comando nslookup digitando-se `exit'.

Agora que sabemos como configurar um servidor de nomes de cache, aproveite para tomar uma cerveja, leite, ou qualquer coisa que se queira para comemorar este fato memorável.


Página seguinte Página anterior Índice