Neste capítulo serão apresentadas informações sobre instalação, configuração e manutenção de um servidor DNS (Domain Name System[1]) em uma máquina com Conectiva Linux. Você aprenderá como criar um domínio e administrar as máquinas ligadas a ele. Será visto como fazer com que estações possam utilizar o servidor DNS para acessar umas às outras através de seus respectivos nomes. Além disso, você aprenderá um pouco sobre como o DNS consegue organizar um número absurdamente grande de máquinas conectadas possibilitando que se enxerguem, umas às outras, em uma rede.
O DNS converte nomes de máquinas em endereços IP. Ele mapeia nomes para IPs e IPs para nomes. Ele é um banco de dados distribuído, permitindo, assim, que uma seção seja gerenciada localmente e esteja, mesmo assim, disponível para todo o mundo.
Os servidores de nomes compõem a parte servidor do mecanismo cliente-servidor do DNS. Os servidores de nomes contêm informações sobre uma parte do banco de dados e as torna disponíveis para os clientes ou resolvedores.
A estrutura do banco de dados do DNS é semelhante à estrutura do sistema de arquivos do Conectiva Linux, representada por uma árvore invertida. No sistema de arquivos tudo parte do diretório raiz; no DNS tudo parte de um nulo (""), representado em texto como um ponto (".").
Cada ramo da árvore representa uma partição do banco de dados geral - um diretório no sistema de arquivos do Conectiva Linux ou um domínio no DNS. Cada domínio pode ser dividido em mais partes chamadas subdomínios.
Cada domínio tem um nome. Este nome é dividido em duas partes. A primeira identifica sua relação ao domínio pai. A segunda parte é o nome do domínio, que identifica sua posição no banco de dados. Por exemplo, podemos ver que em kepler.minhaorganizacao.com.br, o nome de domínio é minhaorganizacao.com.br e o nome da máquina é kepler.
Cada domínio pode ser administrado por uma organização diferente. Estas organizações podem quebrar estes domínios em subdomínios e delegar o controle destes a outras organizações, tornando assim a administração extremamente descentralizada.
A estrutura pode parecer um tanto complicada, mas é muito mais simples do que parece. Tudo é um questão de partir de um domínio e ir descendo, até chegar a uma máquina (ou host).
Como já foi mencionado anteriormente, o DNS funciona de forma análoga ao sistema de arquivos do Conectiva Linux. Cada unidade de dados do banco distribuído do DNS é indexada por um nome. Este nome é, basicamente, uma rota em uma árvore invertida, chamada de Espaço de Nomes de Domínios. No topo desta árvore está o domínio raiz. Como em um sistema de arquivos, cada ramo da árvore de domínios pode ter um número qualquer de outros ramos.
Cada ramo da árvore de domínios é identificado por um nome de, no máximo, 63 caracteres. Estes nomes não podem ser nulos, já que o nulo é reservado ao domínio raiz da árvore.
Quando o domínio raiz aparece no nome de domínio de um ramo, o nome parece terminar com um ponto, quando, na verdade, ele termina com um ponto e o domínio raiz, que é representado por uma seqüência nula de caracteres. Assim, alguns programas interpretam um ponto no final de um nome de domínio como significando que o nome de domínio é absoluto. Um nome de domínio absoluto identifica a localização do ramo na hierarquia sem ambigüidade. Nomes não seguidos por pontos são chamados de nomes relativos, já que eles não especificam sua localização exata na árvore, podendo, assim, ser relativos a diversos pontos dela.
O sistema de nomes de domínios requer que os ramos irmãos (ou seja, os ramos que partem diretamente de um ramo comum) tenham nomes únicos. Comparando com o sistema de arquivos, da mesma forma como não se pode ter dois /usr/bin, não se pode ter dois copernico.minhaorganizacao.com.br. Isso não chega a ser um problema, já que os nomes só têm de ser únicos entre os ramos filhos, ou seja, é possível existir dois ramos de mesmo nome desde que eles não sejam irmãos.
Um domínio nada mais é do que uma sub-árvore do espaço de nomes de domínio. O nome de um domínio é o nome do ramo que está no topo daquele domínio. Por exemplo, o topo do domínio minhaorganizacao.com.br é um ramo chamado com.br, da mesma forma como você esperaria encontrar o diretório /usr no topo de /usr/lib.
Cada sub-árvore é considerada parte de um domínio. Assim como um nome de domínio pode estar em diversas sub-árvores, um nome de domínio pode estar em diversos domínios. Por exemplo, minhaorganizacao.com.br faz parte do domínio com.br e também do domínio br.
Como um domínio é basicamente uma árvore de nomes de domínio, chega-se a conclusão de que as máquinas conectadas ao sistema também devem ser domínios. Lembre-se de que os nomes de domínio são apenas índices do banco de dados do DNS; assim, as máquinas são os nomes de domínio que apontam para informações sobre máquinas individuais.
Os domínios localizados nas pontas dos ramos da árvore de domínios geralmente representam máquinas individuais. Os nomes de domínios podem apontar para um endereço de rede ou informações de roteamento de correio eletrônico. Os domínios internos podem apontar para uma máquina específica e podem apontar para informações estruturais sobre os subdomínios. Por exemplo, minhaorganizacao.com.br pode ser o nome do domínio da Minha Organização e ainda o nome de domínio de uma máquina que encaminha correio eletrônico entre a Internet e a empresa.
O Sistema de Nomes de Domínios não impõe muitas regras aos nomes associados aos domínios. Além disso, nenhum significado particular é associado aos nomes de um nível particular. Quando você cria um domínio, você pode definir suas próprias regras para os nomes.
O espaço de nomes de domínios atual da Internet tem algumas regras para a sua estruturação. Em especial, os domínios próximos à raiz seguem certas tradições. Isso evita que os nomes de domínios pareçam desorganizados e sem sentido.
Originalmente, a Internet foi dividida em sete domínios, de maneira a dividir a Internet por tipo de organização. Estes domínios foram chamados de Domínios de Primeiro Nível ou DPN. Os domínios originais são:
com: Organizações comerciais
edu: Organizações de ensino
gov: Organizações governamentais
mil: Organizações militares
net: Organizações da rede
org: Organizações internacionais
É possível notar que os domínios acima parecem ser específicos para organizações norte-americanas. Isso se deve ao fato de a Internet ter-se originado da ARPANET, que era um projeto norte-americano. Na época, não se podia prever o sucesso da ARPANET e a conseqüente criação da Internet. Para acomodar a internacionalização da Internet, foi feita uma alteração nos DPNs. Foram reservados, além dos sete domínios originais, domínios que designavam localizações geográficas. Estes nomes de domínios seguem uma padronização internacional chamada ISO3166. Esta padronização define códigos de duas letras para cada país do mundo (por exemplo, br para Brasil).
Embora os domínios originais devessem continuar a ser respeitados dentro de cada um dos domínios internacionais, isto acabou não ocorrendo. Cada país definiu suas próprias regras para divisão. A maioria manteve a divisão por organizações, embora não necessariamente com os domínios originais. A Inglaterra, por exemplo, define co.uk para instituições comerciais e ac.uk para instituições acadêmicas. Já o Brasil manteve os domínios originais (por exemplo, com.br, net.br) e, recentemente, criou domínios adicionais como eti.br, para especialistas em tecnologia da informação, psi.br para provedores de acesso, g12.br para instituições de ensino de 1º e 2º graus, etc. Você pode obter mais informações sobre outros domínios na página da FAPESP .
Para configurar um domínio, você precisará de:
um servidor com uma placa de rede devidamente configurada; é importante que você certifique-se de que o nome da máquina e o domínio pertençam ao domínio que está sendo configurado;
um domínio registrado (opcional); quando o servidor DNS for usado somente para uma rede interna, não há necessidade de que o domínio (.com.br) seja registrado.
Para configurar um domínio, você precisará usar o Synaptic para instalar os seguintes pacotes:
bind
linuxconf-dnsconf
bind-utils
ou, através da linha de comando, poderá utilizar o apt-get:
# apt-get install bind bind-utils linuxconf-dnsconf |
Para configurar o servidor DNS, abra o Linuxconf e pressione a seqüência de botões Configuração -> Rede -> Tarefas do Servidor -> DNS - servidor de nomes de domínio.
Agora, você pode configurar todo o servidor de nomes de sua empresa. Pressione a opção Adicionar, localizado em Configurar -> Tarefas de Servidor -> DNS - servidor de nomes de domínio -> Configurar -> Configurar Domínios para configurar adicionar um domínio.
Nesta tela você deve informar os dados referentes ao seu domínio.
Domínio: este é o nome do domínio; no caso, o domínio que está sendo criado neste exemplo é chamado de minhaorganizacao.
Servidor principal: este é o nome da máquina onde o servidor de nomes estará sendo executado. No exemplo, o domínio minhaorganizacao será controlado pela máquina kepler.minhaorganizacao. Note que o ponto no final do nome é necessário.
Email do administrador: este é o endereço de correio eletrônico do administrador de sistema. Em caso de problemas, este administrador poderá ser avisado. Note que se usa um ponto (".") no lugar de arroba ("@") neste campo.
Há, ainda, algumas outras configurações que podem ser feitas nesta tela, mas que não serão descritas neste livro. São elas:
Servidores de nome (NS): em uma configuração simples, basta o nome do servidor principal. Além disso, você deverá informar aqui quais serão os servidores secundários de seu domínio.
Servidores de correio (MX): aqui você pode definir o servidor que encaminha as mensagens de correio eletrônico do seu domínio para a Internet.
IPs padrão: aqui você pode definir um ou mais endereços de IP de máquinas que serão acessadas através do domínio. É normal pesquisas em servidores de nome se referirem apenas ao domínio, mas os domínios não possuem IPs, apenas máquinas os têm, assim, definindo IPs padrão, uma pesquisa ao domínio minhaorganizacao irá resultar naquele IP padrão.
Funcionalidades: aqui podem ser definidas algumas funcionalidades do domínio. Por exemplo, pode-se definir de quanto em quanto tempo os servidores secundários serão atualizados.
Controle de Acesso: você pode definir algumas opções de segurança para seu servidor de nomes.
Outras Informações: define-se aqui informações opcionais, como por exemplo um comentário ou informação sobre o administrador do DNS.
Nota: A rede que terá acesso ao servidor DNS deverá ser cadastrada. Este cadastro deverá ser feito na aba Segurança -> Configurar Controle de Acesso, a partir do menu principal do DNS, para que as estações possam utilizar serviços como POP e SMTP.
A configuração do mapeamento reverso permite a conversão de endereços IP para nomes, facilitando as buscas para o servidor DNS. Para configurar o mapeamento reverso, dirija-se à opção Configurar-> Configurar mapas de IPs reversos -> Adicionar.
As opções são basicamente as mesmas para as telas da configuração de domínios (Figura 1-1), exceto pelas opções Número de Rede e Intervalo da sub-rede x-y. É através destes campos que o DNS saberá fazer a conversão.
Para cadastrar uma máquina no banco de dados do DNS a partir do menu inicial da configuração do servidor DNS, vá para Adicionar/Editar -> Adicionar/Editar Informações e surgirá uma tela como na Figura 1-2.
Simplesmente selecione o domínio desejado para iniciar a adição/edição de máquinas.
Clique em Adicionar para digitar o nome da máquina a ser adicionada. Na tela que aparece (Figura 1-3) já vem informado o nome do domínio; você deve digitar somente o nome da máquina antes do ponto.
Digite o nome da máquina antes do ponto e pressione Aceitar para preencher as informações da máquina.
Basicamente, a única informação que você tem de informar na próxima tela é o endereço IP da máquina incluída. O resto é opcional.
Depois de preencher corretamente o endereço IP da máquina, clique em Aceitar. Isso irá adicionar a máquina ao banco de dados do DNS.
Note que você retornará sempre à tela de adição de máquinas (Figura 1-3) para possibilitar a adição de máquinas adicionais. Clique em Cancelar quando não desejar mais cadastrar nenhuma máquina.
Após terminar de cadastrar máquinas você poderá ver as máquinas que estão cadastradas no domínio:
Além do modo apresentado de adição de máquinas
ao DNS, você pode utilizar a opção Adicionar/Editar (edição rápida).
Você deverá digitar o nome completo da máquina a ser adicionada, ou seja, o nome e o domínio. Clique em Aceitar para adicionar a máquina. A tela seguinte permite digitar as informações da máquina. Note que é a mesma tela utilizada na opção anterior.
Após as configurações, deve iniciar o serviço named (menu Controle -> Painel de Controle -> Controle de Atividades e Serviços).
Nota: Se você for sair do Linuxconf, pode ser que surja uma tela, pedindo que você faça as alterações mostradas. Clique no botão Não faça nada, pois todas as informações necessárias já foram incluídas ou modificadas.
Para verificar se a configuração está correta tente acessar outras máquinas da rede a partir de um cliente DNS (o comando ping pode auxiliar nesta tarefa).
Se não for possível conectar-se ao servidor DNS, verifique se o serviço named está sendo executado no servidor. Você pode fazer isso através do Linuxconf.
Outro teste que pode ser realizado é a execução dos seguintes comandos:
# host -t NS minhaorganizacao |
Este comando irá buscar o name server (NS), ou seja, o nome do servidor (ou servidores) de DNS. Se não retornar, verifique o erro e revise sua configuração. Outro parâmetro pode ser usado: o MX (para servidores de e-mail).
Solução Conectiva para a Implantação de um servidor DNS .
Um servidor secundário é uma espécie de cópia de segurança do servidor primário. Quando não é possível encontrar um domínio através do servidor primário o sistema tenta resolver o nome através do servidor secundário.
A instalação é idêntica à instalação do servidor primário, basta usar o Synaptic para instalar os seguintes pacotes:
bind
linuxconf-dnsconf
bind-utils
ou utilizar o apt-get:
# apt-get install bind bind-utils linuxconf-dnsconf |
Para configurar o DNS secundário acesse Configuração -> Rede -> Tarefas do servidor -> DNS - servidor de nomes de domínios -> Configurar -> Configurar secundários no Linuxconf, clique em Adicionar, preencha o domínio para o qual se deseja configurar o DNS secundário e o número IP do servidor de nomes primário deste domínio.
Isto é tudo o que você precisa fazer no DNS secundário. Não é necessário adicionar máquinas ou criar o mapa de IP reverso pois isso é feito automaticamente, uma vez que o DNS secundário busca estas informações no servidor de nomes primário para o domínio. No entanto, é necessário configurar o DNS primário para que ele divulgue o secundário e permita que ele leia a sua base de dados. Para fazer isso acrescente o nome do servidor secundário na lista de servidores de nomes do primário (veja a Figura 1-1) e o autorize em Controle de acesso -> Permite transferência para, como na Figura 1-6.
Existem casos em que não é interessante que o servidor de nomes envie uma grande quantidade de pacotes para fora da rede local. Isto pode ocorrer por diversos motivos, como, por exemplo, no caso de empresas que se conectam com a matriz através de antenas. Seria ineficiente que o servidor ficasse tentando localizar algo através do servidor da matriz. Para isso, pode-se criar servidores de nomes que servem para criar um grande cache (veja a seção Cache). Estes servidores são chamados de repetidores.
A configuração de zona de repetidores é um caso específico de repetidor. Os repetidores são utilizados para resolver nomes externos no lugar do servidor primário e a zona de repetidores é utilizada para resolver apenas os nomes de um domínio específico que o seu servidor primário não consegue resolver.
Por exemplo, se o seu departamento na empresa tem um servidor 200.20.57.1 e os departamentos vizinhos ao seu possuem os servidores 200.20.57.12 e 200.20.57.13, então você poderá configurar as zonas de repetição conforme a Figura 1-7.
Isso irá evitar a consulta ao servidor da matriz sempre que for necessário resolver um nome que está dentro da própria empresa.
Para configurar uma zona de repetidores, você precisará usar o Synaptic para instalar os seguintes pacotes:
bind
linuxconf-dnsconf
bind-utils
ou utilize o apt-get:
# apt-get install bind bind-utils linuxconf-dnsconf |
Para configurar um servidor de nomes como repetidor não é necessária qualquer configuração especial. Você só precisa configurar os outros servidores de nomes para encaminharem suas requisições para o repetidor. Desta forma, os servidores tentam resolver nomes através do repetidor, que, por sua vez, já pode ter a resposta em seu cache, evitando assim que a requisição tenha de sair da rede local.
Uma das características que aceleram o processo de procura de uma máquina é chamada de caching.
Um servidor de nomes procurando uma máquina pode ter de enviar um número considerável de pesquisas até encontrá-la. Enquanto faz isso, ele recebe uma grande quantidade de informações sobre os outros servidores.
O servidor de nomes guarda esta informação para acelerar futuras pesquisas. Na próxima vez em que o servidor de nomes tiver de pesquisar algo sobre isso, o processo será acelerado. Mesmo que ele não tenha a resposta em cache, ele pode ter informações sobre o servidor de nomes responsável por sua zona.
O protocolo DHCP (Dynamic Host Configuration Protocol[2]) é um método usado para configurar automaticamente computadores em uma rede durante a inicialização. É comumente usado para fornecer um endereço IP e um gateway padrão, mas pode também ser usado para fornecer endereços de servidores DNS, NIS, etc.
Você irá necessitar do endereço IP de sua(s) placa(s) de rede. Opcionalmente, você deverá informar os endereços de seus servidores DNS e NIS.
Para instalar um servidor DHCP, você deve usar o Synaptic para instalar os seguintes pacotes:
dhcp
linuxconf-dhcpd
ou utilizar o comando apt-get:
# apt-get install dhcp linuxconf-dhcpd |
Para criar um servidor DHCP, abra o Linuxconf e vá para Configuração -> Rede -> Serviços de Inicialização -> Servidor DHCP/BOOTP.
Na primeira vez em que você entrar neste módulo do Linuxconf, ele irá diretamente para a tela de edição de padrões (Figura 1-8).
A única informação obrigatória é o identificador do servidor. Informe o nome da máquina servidor neste campo.
Na parte inferior da tela encontram-se pastas para configurações opcionais do servidor DNS, NIS, configurações Netbios, roteadores, servidores de impressão, etc. Normalmente usa-se pelo menos a configuração do servidor DNS; digite o nome do domínio e o endereço do servidor DNS nos campos apropriados. Para mais informações consulte a Ajuda on-line do Linuxconf.
Após informar os padrões de sua rede, clique em Aceitar para continuar a configuração do DHCP.
A partir deste momento, o Linuxconf sempre voltará diretamente a esta tela (Figura 1-9), permitindo que você possa seguir diretamente às tarefas mais comuns.
Sempre que você quiser alterar os padrões novamente, você
pode usar o botão Padrões.
O próximo passo para a configuração é a criação de uma nova sub-rede. Clique em Adicionar Rede para adicionar uma nova sub-rede. O Linuxconf apresentará a tela mostrada na Figura 1-10.
Informe o número da rede e sua máscara. Agora você pode
começar a criar faixas de IP para serem usadas pelos clientes DHCP.
Para criar uma faixa, preencha os campos da aba Faixas
na parte inferior da tela. Você deve informar o IP inicial e o IP final.
Cada sub-rede pode ter uma configuração específica de DNS, NIS, servidores de impressão, etc. Para informar, por exemplo, o servidor DNS a ser utilizado pelas máquinas cliente, clique na pasta DNS e preencha os valores da mesma forma como foi feito na especificação dos padrões do servidor DHCP.
Quando você tiver terminado de criar faixas de IP, clique em Aceitar para retornar à tela inicial da configuração do DHCP. Note que as novas sub-redes aparecem nesta tela (Figura 1-11).
Para verificar se a configuração está correta, basta inicializar uma máquina cliente e verificar se ela recebe as configurações desejadas.
Se o cliente não conseguir conectar-se ao servidor, ou não receber as configurações corretas, verifique se o serviço dhcpd está sendo executado no servidor. Você pode fazer isto através do Linuxconf. Verifique a documentação do Linuxconf para saber como proceder.
[1] |
Sistema de nomes de domínio. |
[2] |
Protocolo de configuração dinâmica de hosts. |