20.4. O arquivo de configuração /etc/named.conf

Todas as configurações do servidor de nomes BIND são armazenadas no arquivo /etc/named.conf. Entretanto, os dados de zona que os domínios devem gerenciar, consistindo em nomes de host, endereços IP etc, são armazenados em arquivos separados, no diretório /var/lib/named. Os detalhes serão descritos posteriormente.

/etc/named.conf é dividido em aproximadamente duas áreas. Uma é a seção options para configurações gerais, e a outra consiste nas entradas da zone dos domínios específicos. Uma seção logging e entradas de acl (access control list - lista de controles de acesso) são opcionais. Linhas de comentário começam com um sinal de # ou //. Um arquivo /etc/named.conf mínimo é exibido no Exemplo 20.2, “Um arquivo /etc/named.conf básico”.

Exemplo 20.2. Um arquivo /etc/named.conf básico

options { 
        directory "/var/lib/named"; 
        forwarders { 10.0.0.1; };
        notify no;
};

zone "localhost" in {
       type master;
       file "localhost.zone";
};

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

zone "." in {
        type hint;
        file "root.hint";
};

20.4.1. Opções importantes de configuração

diretório "nomedoarquivo";

Especifica o diretório no qual o BIND pode encontrar os arquivos contendo os dados da zona. Normalmente, é o /var/lib/named.

forwarders { endereço-ip; };

Especifica os servidores de nomes (principalmente do provedor) para os quais as solicitações do DNS devem ser encaminhadas se não puderem ser resolvidas diretamente. Substitua endereço-ip por um endereço IP como 10.0.0.1.

forward first;

Faz com que solicitações do DNS sejam encaminhadas antes de uma tentativa ser feita para resolvê-las por meio dos servidores de nomes raiz. Em vez de forward first, é possível escrever forward only para que todas as solicitações sejam encaminhadas e nenhuma delas seja enviada para os servidores de nomes raiz. Isso faz sentido para configurações de firewall.

listen-on port 53 { 127.0.0.1; endereço ip; };

Comunique ao BIND em que interfaces de rede e porta ele deve aceitar consultas de cliente. A porta 53 não precisa ser especificada explicitamente, pois 53 é a porta padrão. Digite 127.0.0.1 para permitir solicitações do host local. Se você omitir totalmente essa entrada, todas as interfaces serão usadas por padrão.

listen-on-v6 port 53 {any; };

Comunique ao BIND qual porta ele deve escutar para solicitações de clientes IPv6. A única alternativa para any é none. Até onde o IPv6 está envolvido, o servidor só aceita um endereço curinga.

query-source address * port 53;

Esta entrada será necessária se um firewall estiver bloqueando as solicitações de saída do DNS. Assim o BIND é avisado para publicar as solicitações externamente à porta 53, e não de qualquer outra porta superior acima da 1024.

query-source-v6 address * port 53;

Comunica ao BIND qual porta deve ser usada para consultas do IPv6.

allow-query { 127.0.0.1; rede; };

Define as redes a partir das quais os clientes podem publicar solicitações de DNS. Substitua rede pelas informações de endereço, como 192.168.1/24. /24, no fim, é uma expressão de abreviação para uma máscara de rede, neste caso, 255.255.255.0.

allow-transfer ! *;;

Controla quais hosts podem solicitar transferências de zona. No exemplo, tais solicitações são completamente negadas com ! *. Sem essa entrada, as transferências de zona podem ser solicitadas de qualquer local, sem restrições.

statistics-interval 0;

Na ausência desta entrada, o BIND gera várias linhas de informações estatísticas por hora em /var/log/messages. Defina-a como 0 para suprimir totalmente estas estatísticas ou definir um intervalo em minutos.

cleaning-interval 720;

Esta opção define os intervalos de tempo em que o BIND limpa seu cache. Ela aciona uma entrada em /var/log/messages sempre que isso ocorre. A especificação de tempo é em minutos. O padrão é de 60 minutos

interface-interval 0;

O BIND pesquisa regularmente as interfaces de rede em busca de interfaces novas ou não existentes. Se seu valor for definido como 0, isso não será feito, e o BIND escutará apenas as interfaces detectadas na inicialização. Caso contrário, o intervalo poderá ser definido em minutos. O padrão é de 60 minutos

notify no;

no evita que outros servidores de nomes sejam informados sobre a ocorrência de mudanças nos dados da zona ou sobre quando o servidor de nomes foi reiniciado.

20.4.2. Registro

O BIND pode ser extensivamente configurado para que se determine qual registro está sendo usado, como e onde. Normalmente, as configurações padrão devem ser suficientes. O Exemplo 20.3, “Entrada para desabilitar o registro” mostra a forma mais simples de uma entrada como esta e suprime totalmente qualquer registro.

Exemplo 20.3. Entrada para desabilitar o registro

logging {
        category default { null; };
};

20.4.3. Entradas das zonas

Exemplo 20.4. Entrada da zona para my-domain.de

zone "my-domain.de" in {
      type master;
      file "my-domain.zone";
      notify no;
};

Depois de zone, especifique o nome do domínio para o administrador (my-domain.de), seguido de in e um bloco de opções relevantes incluídas entre chaves, como mostrado no Exemplo 20.4, “Entrada da zona para my-domain.de”. Para definir uma zona escrava, altere type para slave e especifique um servidor de nomes que administre essa zona como master (que, por sua vez, pode ser uma escrava de outra master), como mostrado no Exemplo 20.5, “Entrada da zona para other-domain.de”.

Exemplo 20.5. Entrada da zona para other-domain.de

zone "other-domain.de" in {
      type slave;
      file "slave/other-domain.zone";
      masters { 10.0.0.1; }; 
};

As opções de zona:

type master;

Ao especificar master, comunique ao BIND que a zona é gerenciada pelo servidor de nomes local. Esse procedimento pressupõe que um arquivo de zona tenha sido criado no formato correto.

type slave;

Esta zona é transferida de outro servidor de nomes. Ela deve ser usada juntamente com masters.

type hint;

A zona . do tipo hint é usada para definir os servidores de nomes raiz. Essa definição de zona pode ser deixada assim.

arquivo my-domain.zone ou arquivo “slave/other-domain.zone”;

Esta entrada especifica o arquivo em que os dados da zona para o domínio estão localizados. Este arquivo não é necessário para uma escrava, pois os dados são buscados em outro servidor de nomes. Para diferenciar arquivos master de escravos, use o diretório slave para os arquivos escravos.

masters { endereço-ip-servidor; };

Esta entrada só é necessária para zonas escravas. Ela especifica o servidor de nomes do qual o arquivo da zona deve ser transferido.

allow-update {! *; };

Esta opção controla o acesso de gravação externo, permitindo que os clientes façam uma entrada no DNS, o que normalmente não é desejável por razões de segurança. Sem essa entrada, as atualizações da zona não são permitidas. A entrada acima obtém o mesmo porque ! * proíbe efetivamente qualquer atividade afim.