Configurando o Serviço de Nomes
Use o BIND para configurar e administrar serviços de nome DNS no Oracle Linux, incluindo configuração do servidor de nomes, arquivos de zona, registros de recursos e pesquisas de DNS.
Este capítulo descreve como utilizar o Berkeley Internet Name Domain (BIND) para configurar um servidor de nomes DNS (Domain Name System).
Sobre DNS e BIND
DNS é um serviço baseado em rede que resolve nomes de domínio para endereços IP. Para uma rede pequena e isolada, você pode usar entradas no arquivo /etc/hosts para fornecer o mapeamento de nome para endereço. No entanto, a maioria das redes que estão conectadas à Internet usam DNS.
Os exemplos neste tópico usam nomes de host de placeholder em
example.com. Substitua-os por nomes de host e domínio do seu próprio ambiente.O DNS é um banco de dados hierárquico e distribuído.
Considere o nome de domínio totalmente qualificado (FQDN) wiki.us.example.com. Neste exemplo, o domínio de nível superior é com, example é um subdomínio de com, us é um subdomínio de example e wiki é o nome do host.
Cada um desses domínios é agrupado em zonas para fins administrativos. Um servidor DNS, ou servidor de nomes, armazena as informações necessárias para resolver os domínios do componente dentro de uma zona. Além disso, o servidor DNS de uma zona armazena ponteiros para os outros servidores DNS responsáveis por resolver cada subdomínio.
Se um cliente externo solicitar que seu servidor de nomes local resolva um FQDN, como wiki.us.example.com para um endereço IP para o qual esse servidor não tenha autoridade, o servidor consultará um servidor de nomes root para obter o endereço de um servidor de nomes que tenha autoridade para o domínio .com. Este servidor então fornece o endereço IP de outro servidor de nome autorizado para o domínio example.com, que por sua vez fornece o endereço IP do servidor de nome autorizado para us.example.com e assim por diante.
O processo de consulta termina com o endereço IP do FQDN sendo fornecido ao cliente externo que fez a solicitação. Este processo é conhecido como uma consulta recursiva, em que o servidor de nomes local lida com cada referência de um servidor de nomes externo para outro servidor de nomes em nome do resolvedor.
As consultas iterativas dependem do resolvedor ser capaz de lidar com a referência de cada servidor de nomes externo para rastrear o servidor de nomes que é autorizado para o FQDN. A maioria dos resolvedores usa consultas recursivas e, portanto, não pode usar servidores de nomes que suportem apenas consultas iterativas.
A maioria das versões do Oracle Linux fornece a implementação BIND do DNS. O pacote bind inclui o daemon do servidor DNS (named), ferramentas para trabalhar com DNS, como rndc, e alguns arquivos de configuração, incluindo o seguinte:
-
/etc/named.conf -
Contém configurações para
namede lista o local e as características dos arquivos de zona do domínio. Os arquivos de zona geralmente são armazenados em/var/named. -
/etc/named.rfc1912.zones -
Contém várias seções de zona para resolver nomes e endereços de loopback locais.
-
/var/named/named.ca -
Contém uma lista dos servidores DNS autorizados raiz.
Tipos de Servidores de Nomes
É possível configurar vários tipos de servidores de nome usando o BIND, incluindo o seguinte:
- Servidor de nome mestre
-
Autorizado para um ou mais domínios, um servidor de nome primário mantém seus dados de zona em vários arquivos de banco de dados e pode transferir essas informações periodicamente para qualquer servidor de nome de backup que também estão configurados na zona. Uma organização pode manter os dois servidores de nome principais a seguir para uma zona: um servidor principal fora do firewall para fornecer informações restritas sobre a zona para hosts e serviços acessíveis publicamente e um servidor principal oculto ou stealth dentro do firewall que contém detalhes de hosts e serviços internos.
- Servidor de nomes secundário ou de backup
-
Agindo como um backup para um servidor de nome principal, um servidor de nome de backup mantém uma cópia dos dados da zona, que é atualizada periodicamente a partir da cópia do servidor principal.
- Servidor de nomes Stub
-
Um servidor de nome principal para uma zona também pode ser configurado como um servidor de nome de stub que mantém informações sobre os servidores de nome principal e de backup das zonas filhas.
- Servidor de nomes somente cache
-
Executa consultas em nome de um cliente e armazena as respostas em um cache após retornar os resultados ao cliente. Este servidor não é autorizado para nenhum domínio e as informações que ele registra são limitadas aos resultados de consultas armazenadas em cache.
- Encaminhando servidor de nomes
-
Encaminha todas as consultas para outro servidor de nomes e armazena em cache os resultados, o que reduz o processamento local, o acesso externo e o tráfego de rede.
Na prática, um servidor de nomes pode ser uma combinação de vários desses tipos em configurações complexas.
Instalando e Configurando um Servidor de Nomes
Instale o BIND, configure as definições do resolvedor local, atualize /etc/named.conf e inicie o serviço DNS.
Por padrão, você pode usar a instalação BIND para configurar um servidor de nomes somente de armazenamento em cache usando as definições de configuração fornecidas no arquivo /etc/named.conf e nos arquivos que ele inclui. O procedimento a seguir pressupõe que você use as configurações padrão ou configure novos arquivos de configuração e zona named.
Para configurar um servidor de nomes, execute os passos a seguir.
Como Trabalhar com Arquivos de Configuração do DNS
Os domínios são agrupados em zonas que são configuradas através de arquivos de zona. Os arquivos de zona armazenam informações sobre domínios no banco de dados DNS. Cada arquivo de zona contém diretivas e registros de recursos. Diretivas opcionais aplicam configurações a uma zona ou instruem um servidor de nomes a executar determinadas tarefas. Registros de recursos especificam parâmetros de zona e definem informações sobre os sistemas ou hosts em uma zona.
Exemplos de arquivos de configuração BIND podem ser encontrados no arquivo /usr/share/doc/bind/sample/etc.
Configurando o Daemon nomeado
O arquivo de configuração principal do serviço named é /etc/named.conf. Informações detalhadas de configuração estão disponíveis na página do manual named.conf(5) e no Manual de Referência do Administrador do BIND 9. O exemplo a seguir vem do arquivo /etc/named.conf padrão que é instalado com o pacote bind e que configura um servidor de nome somente para armazenamento em cache:
options {
listen-on port 53 { 127.0.0.1; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
secroots-file "/var/named/data/named.secroots";
recursing-file "/var/named/data/named.recursing";
allow-query { localnets; };
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
/* Path to ISC DLV key */
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
pid-file "/run/named/named.pid";
session-keyfile "/run/named/session.key";
/* https://fedoraproject.org/wiki/Changes/CryptoPolicy */
include "/etc/crypto-policies/back-ends/bind.config";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
A instrução options define as opções de configuração do servidor global e define padrões para outras instruções.
-
listen-on -
É a porta na qual
namedfaz listening das consultas. -
directory -
Especifica o diretório padrão para arquivos de zona se um nome de caminho relativo for especificado.
-
dump-file -
Especifica onde
nameddespeja seu cache se ele falhar. -
statistics-file -
Especifica o arquivo de saída para o comando rndc stats.
-
memstatistics-file -
Especifica o arquivo de saída para estatísticas de uso da memória
named. -
allow-query -
Especifica quais endereços IP podem consultar o servidor.
localnetsespecifica todas as redes anexadas localmente. -
recursion -
Especifica se o servidor de nomes executa consultas recursivas.
-
dnssec-enable -
Especifica se o DNS seguro deve ser usado (DNSSEC).
-
dnssec-validation -
Especifica se o servidor de nome validaria respostas de zonas ativadas para DNSSEC.
-
dnssec-lookaside -
Especifica se a Validação de Lado de Vista DNSSEC (DLV) deve ser ativada usando a chave no
/etc/named.iscdlv.keydefinida porbindkeys-file.
A seção logging ativa o log de mensagens para /var/named/data/named.run. O parâmetro severity controla o nível de log e o valor dynamic significa que esse nível pode ser controlado usando o comando rndc trace.
A seção zone especifica o conjunto inicial de servidores raiz usando uma zona de dica. Esta zona especifica que named consulte /var/named/named.ca para obter os endereços IP de servidores autorizados para o domínio raiz (.).
É possível adicionar definições ao arquivo de configuração que são apropriadas ao ambiente de rede. O exemplo a seguir define configurações para o serviço e as definições de nível superior para zonas:
include "/etc/rndc.key";
controls {
inet 127.0.0.1 allow { localhost; } keys { "rndc-key"; }
};
zone "us.example.com" {
type master;
file "master-data";
allow-update { key "rndc-key"; };
notify yes;
};
zone "example.com" IN {
type slave;
file "sec/slave-data";
allow-update { key "rndc-key"; };
masters {10.1.32.1;};
};
zone "2.168.192.in-addr.arpa" IN {
type master;
file "reverse-192.168.2";
allow-update { key “rndc-key”; };
notify yes;
};
A instrução include permite que arquivos externos sejam referenciados para que dados confidenciais, como hashes de chaves, possam ser colocados em um arquivo separado com permissões restritas.
A instrução controls define as informações de acesso e os requisitos de segurança necessários para usar o comando rndc com o servidor named:
-
inet -
Especifica quais hosts podem executar rndc para controlar o nome. Neste exemplo, rndc deve ser executado no host local (
127.0.0.1). -
keys -
Especifica os nomes das chaves que podem ser usadas. O exemplo especifica o uso da chave chamada
rndc-key, que é definida em/etc/rndc.key. As chaves autenticam várias ações pornamede são o método principal de controlar o acesso e a administração remotos.
As instruções zone definem a função do servidor em zonas diferentes.
As seguintes opções de zona são usadas:
-
type -
Especifica que este sistema é o servidor de nome principal para a zona
us.example.come um servidor de backup paraexample.com.2.168.192.in-addr.arpaé uma zona inversa para resolver endereços IP para nomes de host. Consulte Sobre Registros de Recursos para Resolução de Nome Reverso. -
file -
Especifica o caminho para o arquivo de zona relativo a
/var/named. O arquivo de zona paraus.example.comé armazenado em/var/named/master-datae os dados de zona transferidos paraexample.comsão armazenados em cache em/var/named/sec/slave-data. -
allow-update -
Especifica que uma chave compartilhada deve existir nos servidores de nome primário e de backup para que uma transferência de zona ocorra do primário para o backup. Veja a seguir um exemplo de registro de uma chave no arquivo
/etc/rndc.key:key "rndc-key" { algorithm hmac-md5; secret "XQX8NmM41+RfbbSdcqOejg=="; };Você pode usar o comando rndc-confgen -a para gerar um arquivo de chave.
-
notify -
Especifica se os servidores de nome de backup devem ser notificados quando as informações da zona forem atualizadas.
-
masters -
Especifica o servidor de nome principal para um servidor de nome de backup.
Para obter mais informações, consulte a página do manual named.conf(5) e a documentação do BIND em /usr/share/doc/bind-version/arm.
Sobre registros de recursos em arquivos de zona
Um registro de recurso em um arquivo de zona contém os seguintes campos, alguns dos quais são opcionais, dependendo do tipo de registro:
- Nome
-
Nome do domínio ou endereço IP.
- TTL (tempo de vida)
-
O tempo máximo que um servidor de nomes armazena em cache um registro antes de verificar se há um mais recente disponível.
- Classe
-
Sempre
INpara a Internet. - Tipo
-
Tipo de registro, por exemplo:
A(endereço)-
Endereço IPv4 correspondente a um host.
AAAA(endereço)-
Endereço IPv6 correspondente a um host.
CNAME(nome canônico)-
Nome do alias correspondente a um nome de host.
MX(troca de e-mail)-
Destino do e-mail endereçado ao domínio.
NS(servidor de nomes)-
Nome de domínio totalmente qualificado de um servidor de nome autorizado para um domínio.
PTR(ponteiro)-
Nome do host que corresponde a um endereço IP para pesquisas de endereço a nome (resolução de nome reverso).
SOA(início de autoridade)-
Informações autorizadas sobre uma zona, como o servidor de nome principal, o endereço de email do administrador do domínio e o número de série do domínio. Todos os registros após um registro
SOAestão relacionados à zona que ele define até o próximo registroSOA.
- Dados
-
Informações que o registro armazena, como um endereço IP em um registro
A, ou um nome de host em um registroCNAMEouPTR.
O exemplo a seguir mostra o conteúdo de um arquivo de zona típico, como /var/named/master-data:
$TTL 86400 ; 1 day
@ IN SOA dns.us.example.com. root.us.example.com. (
57 ; serial
28800 ; refresh (8 hours)
7200 ; retry (2 hours)
2419200 ; expire (4 weeks)
86400 ; minimum (1 day)
)
IN NS dns.us.example.com.
dns IN A 192.168.2.1
us.example.com IN A 192.168.2.1
svr01 IN A 192.168.2.2
www IN CNAME svr01
host01 IN A 192.168.2.101
host02 IN A 192.168.2.102
host03 IN A 192.168.2.103
...
Um comentário em uma linha é precedido por um ponto e vírgula (;).
A diretiva $TTL define o valor padrão de tempo de vida útil para todos os registros de recursos na zona. Cada registro de recurso pode definir seu próprio valor de tempo de vida, que substitui a configuração global.
O registro SOA é obrigatório e inclui as seguintes informações:
-
us.example.com -
O nome do domínio.
-
dns.us.example.com. -
O nome de domínio totalmente qualificado do servidor de nomes, incluindo um período final (
.) para o domínio raiz. -
root.us.example.com. -
O endereço de e-mail do administrador do domínio.
- número de série
-
Um contador que, se incrementado, diz a
namedpara recarregar o arquivo de zona. - atualizar
-
O horário após o qual um servidor de nome principal notifica os servidores de nome de backup que eles devem atualizar seu banco de dados.
- repetir
-
Se uma atualização falhar, o tempo que um servidor de nome de backup deve aguardar antes de tentar outra atualização.
- expirar
-
O tempo máximo decorrido que um servidor de nomes de backup tem para concluir uma atualização antes que seus registros de zona não sejam mais considerados autorizados e ele interromperá a resposta às consultas.
- mínimo
-
O tempo mínimo durante o qual outros servidores devem armazenar em cache as informações obtidas desta zona.
Um registro NS declara um servidor de nomes autorizado para o domínio.
Cada registro A especifica o endereço IP que corresponde a um nome de host no domínio.
O registro CNAME cria o alias www para svr01.
Para obter mais informações, consulte a documentação do BIND em /usr/share/doc/bind-version/arm.
Sobre Registros de Recursos para Resolução de Nome Inverso
A resolução de encaminhamento retorna um endereço IP para um nome de domínio especificado. A resolução de nome reverso retorna um nome de domínio para um endereço IP especificado. O DNS implementa a resolução de nome reverso usando os domínios in-addr.arpa e ip6.arpa especiais para IPv4 e IPv6.
As características de um domínio in-addr.arpa ou ip6.arpa da zona geralmente são definidas em /etc/named.conf, por exemplo:
zone "2.168.192.in-addr.arpa" IN {
type master;
file "reverse-192.168.2";
allow-update { key “rndc-key”; };
notify yes;
};
O nome da zona consiste em in-addr.arpa, precedido pela parte de rede do endereço IP do domínio, com seus quads pontilhados gravados em ordem inversa.
Se a rede não tiver um tamanho de prefixo que seja um múltiplo de 8, consulte RFC 2317 para o formato que você precisa usar.
Os registros PTR nos domínios in-addr.arpa ou ip6.arpa definem nomes de host que correspondem à parte do host do endereço IP. O exemplo a seguir é obtido do arquivo de zona /var/named/reverse-192.168.2:
$TTL 86400 ;
@ IN SOA dns.us.example.com. root.us.example.com. (
57 ;
28800 ;
7200 ;
2419200 ;
86400 ;
)
IN NS dns.us.example.com.
1 IN PTR dns.us.example.com.
1 IN PTR us.example.com.
2 IN PTR svr01.us.example.com.
101 IN PTR host01.us.example.com.
102 IN PTR host02.us.example.com.
103 IN PTR host03.us.example.com.
...
Para obter mais informações, consulte a documentação do BIND em /usr/share/doc/bind-version/arm.
Administrando o Serviço de Nomes
O comando rndc permite administrar o serviço named. O serviço é administrado localmente. Se o serviço estiver configurado na seção controls do arquivo /etc/named.conf, você também poderá usar a linha de comando para gerenciar o named remotamente. Para evitar acesso não autorizado ao serviço, rndc deve ser configurado para fazer listening na porta selecionada (por padrão, porta 953), e ambas nomeadas e rndc devem ter acesso à mesma chave. Para gerar uma chave adequada, use o comando rndc-confgen:
sudo rndc-confgen -a
O comando cria o arquivo /etc/rndc.key.
Verifique o status do serviço named da seguinte forma:
sudo rndc status
number of zones: 3
debug level: 0
xfers running: 0
xfers deferred: 0
soa queries in progress: 0
query logging is OFF
recursive clients: 0/1000
tcp clients: 0/100
server is up and running
Se você alterar o arquivo de configuração ou os arquivos de zona named, o comando rndc reload instruirá named a recarregar os arquivos:
sudo rndc reload
Para obter mais informações, consulte as páginas do manual named(8), rndc(8) e rndc-confgen(8).
Executando Pesquisas de DNS
O utilitário host é recomendado para executar pesquisas de DNS. Sem argumentos, o comando exibe um resumo de seus argumentos e opções de linha de comando.
Por exemplo, procure o endereço IP de host01:
host host01
Execute uma pesquisa inversa para o nome de domínio que corresponde a um endereço IP:
sudo host 192.168.2.101
Consulte o DNS para o endereço IP que corresponde a um domínio:
sudo host dns.example.com
Use as opções -v e -t para exibir informações detalhadas sobre registros de um determinado tipo:
sudo host -v -t MX www.example.com
Trying "www.example.com"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 49643
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 0
;; QUESTION SECTION:
;www.example.com. IN MX
;; ANSWER SECTION:
www.example.com. 135 IN CNAME www.example.com.acme.net.
www.example.com.acme.net. 1240 IN CNAME d4077.c.miscacme.net.
;; AUTHORITY SECTION:
c.miscacme.net. 2000 IN SOA m0e.miscacme.net. hostmaster.misc.com. ...
Received 163 bytes from 10.0.0.1#53 in 40 ms
A opção -a, que é equivalente às opções -v, -t e ANY, exibe todos os registros disponíveis para uma zona, por exemplo:
sudo host -a www.us.example.com
Trying "www.us.example.com"
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 40030
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;www.us.example.com. IN ANY
;; ANSWER SECTION:
www.us.example.com. 263 IN CNAME www.us.example.acme.net.
Received 72 bytes from 10.0.0.1#53 in 32 ms
Para obter mais informações, consulte a página do manual host(1).