Criando e configurando um servidor DNS no CentOS versão 6.x

Aprenderemos sobre Domain Name System, criando e configurando um servidor DNS no CentOS versão 6.x, que é uma distribuição do sistema operacional Linux.

DNS é a sigla em inglês para Domain Name System (Sistema de Nomes e Domínios, em português), responsável por converter os nomes de domínios dos sites que digitamos nos browsers em números IP.

O DNS possui, principalmente, duas funções distintas que é examinar e atualizar os bancos de dados e resolver nomes de domínios em endereços de rede.

Possui tamanho ilimitado, pois o banco de dados pode ser distribuído e o desempenho não é alterado quando outros servidores são adicionados.

O servidor DNS traduz nomes para os endereços IP e vice-versa ( chamado de consulta reversa ), permitindo a localização de uma máquina sem um domínio determinado.

O servidor DNS é dividido entre DNS primário e DNS secundário, que é a cópia de segurança do DNS primário.

Mãos à obra!

O nosso cenário foi baseado na distribuição CentOS – versão 6.7

Servidor DNS primário – Master:

Sistema Operacional     : CentOS release 6.7 (Final)
Nome (hostname)         : primario.infotecnews.local
Endereço de IP          : 192.168.1.100/24

Servidor DNS secundário – Slave:

Sistema Operacional     : CentOS release 6.7 (Final)
Nome (hostname)         : secundario.infotecnews.local
Endereço de IP          : 192.168.1.101/24

 Máquina cliente:

Sistema Operacional     : CentOS release 6.5 Desktop
Nome (hostname)         : cliente.infotecnews.local
Endereço de IP          : 192.168.1.102/24

A) Configurando o servidor primário – Master:

1. Instale os pacotes necessários:

[root@primario ~]# yum install bind* -y

2. Adicione as linhas no arquivo ‘/etc/named.conf’:

[root@primario ~]# vim /etc/named.conf 
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
options {
listen-on port 53 { 127.0.0.1; 192.168.1.100; }; #IP do servidor primário
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";
allow-query     { localhost; 192.168.1.0/24; }; #Endereços permitidos para consulta 
allow-transfer{ localhost; 192.168.1.101; }; #IP do servidor secundário
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
};
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
zone "." IN {
type hint;
file "named.ca";
};
zone "infotecnews.local" IN {
type master;
file "forward.infotecnews";
allow-update { none; };
};
zone "1.168.192.in-addr.arpa" IN {
type master;
file "reverse.infotecnews";
allow-update { none; };
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

3. Crie os arquivos de cada zona

Crie os arquivos para as zonas de pesquisa que foram indicadas no ‘/etc/named.conf‘.

3.1 Zona de pesquisa direta – forward

Crie o arquivo forward.infotecnews dentro do diretório ‘/var/named‘:

[root@primario ~]# vim /var/named/forward.infotecnews
$TTL 86400
@   IN  SOA     primario.infotecnews.local. root.infotecnews.local. (
        2017011001  ;Serial
        3600        ;Refresh
        1800        ;Retry
        604800      ;Expire
        86400       ;Minimum TTL
)
@       IN  NS          primario.infotecnews.local.
@       IN  NS          secundario.infotecnews.local.
@       IN  A           192.168.1.100
@       IN  A           192.168.1.101
@       IN  A           192.168.1.102
primario       IN  A   192.168.1.100
secundario     IN  A   192.168.1.101
cliente        IN  A   192.168.1.102

3.2 Zona de pesquisa inversa – reverse

Crie o arquivo reverse.infotecnews dentro do diretório ‘/var/named‘:

[root@primario ~]# vim /var/named/reverse.infotecnews 
$TTL 86400
@   IN  SOA     primario.infotecnews.local. root.infotecnews.local. (
        2017011001  ;Serial
        3600        ;Refresh
        1800        ;Retry
        604800      ;Expire
        86400       ;Minimum TTL
)
@       IN  NS          primario.infotecnews.local.
@       IN  NS          secundario.infotecnews.local.
@       IN  PTR         infotecnews.local.
primario       IN  A   192.168.1.100
secundario     IN  A   192.168.1.101
cliente        IN  A   192.168.1.102
100     IN  PTR        primario.infotecnews.local.
101     IN  PTR        secundario.infotecnews.local.
102     IN  PTR        cliente.infotecnews.local.

4. Inicie o serviço e adicione-o na inicialização:

[root@primario ~]# service named start
Starting named:                                            [  OK  ]
[root@primario ~]# chkconfig named on

Importante: Se seu servidor DNS possuir firewall, lembre-se de liberar a porta 53 – TCP e UDP – caso contrário seus clientes não conseguirão consultar o serviço.

5. Teste a configuração do DNS e arquivos de zona procurando por algum erro:

[root@primario ~]# named-checkconf /etc/named.conf 
[root@primario ~]# named-checkzone infotecnews.local /var/named/forward.infotecnews 
zone infotecnews.local/IN: loaded serial 2017011001
OK
[root@primario ~]# named-checkzone infotecnews.local /var/named/reverse.infotecnews 
zone infotecnews.local/IN: loaded serial 2017011001
OK

6. Teste o servidor DNS primário – Master:

[root@primario ~]# nslookup cliente.infotecnews.local
Server:192.168.1.100
Address:192.168.1.100#53
Name:cliente.infotecnews.local
Address: 192.168.1.102

[root@primario ~]# nslookup primario.infotectews.local
Server:192.168.1.100
Address:192.168.1.100$53
Name:primario.infotecnews.local
Address: 192.168.1.100

[root@primario ~]# nslookup secundario.infotecnews.local
Server:192.168.1.100
Address:192.168.1.100#53
Name:secundario.infotecnews.local
Address: 192.168.1.101

Perfeito! O servidor primário já está configurado e pronto para uso!

B) Configurando o servidor secundário – Slave:

1. Instale os pacotes necessários:

[root@secundario ~]# yum install bind* -y

2. Adicione as linhas no arquivo ‘/etc/named.conf’:

[root@secundario ~]# vim /etc/named.conf 
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named configuration files.
//
options {
listen-on port 53 { 127.0.0.1; 192.168.1.101; }; #IP do servidor secundário
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";
allow-query     { localhost; 192.168.1.0/24; }; #Endereços permitidos para consulta
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
};
logging {
        channel default_debug {
                file "data/named.run";
                severity dynamic;
        };
};
zone "." IN {
type hint;
file "named.ca";
};
zone"infotecnews.local" IN {
type slave;
file "slaves/infotecnews.forward";
masters { 192.168.1.100; };
};
zone"1.168.192.in-addr.arpa" IN {
type slave;
file "slaves/infotecnews.reverse";
masters { 192.168.1.100; };
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";

3. Inicie o serviço e adicione-o na inicialização:

[root@secundario ~]# service named start
Generating /etc/rndc.key:                                  [  OK  ]
Starting named:                                            [  OK  ]
[root@secundario ~]# chkconfig named on

As zonas de pesquisa direta (forward) e reversa (reverse) serão automaticamente replicadas do servidor primário para o diretório ‘/var/named/slaves‘ no servidor secundário.

[root@secundario ~]# ls /var/named/slaves/
infotecnews.forward  infotecnews.reverse
[root@secundarios ~]# cat /var/named/slaves/infotecnews.forward 
$ORIGIN .
$TTL 86400; 1 day
infotecnews.local IN SOA primario.infotecnews.local. root.infotecnews.local. (
2017011001 ; serial
3600       ; refresh (1 hour)
1800       ; retry (30 minutes)
604800     ; expire (1 week)
86400      ; minimum (1 day)
)
NS primario.infotecnews.local.
NS secundario.infotecnews.local.
A 192.168.1.100
A 192.168.1.101
A 192.168.1.102
$ORIGIN infotecnews.local.
cliente A 192.168.1.102
primario A 192.168.1.100
secundario A 192.168.1.101

C) Adicione as informações dos servidores DNS nos servidores e estações:

1. Linux

[root@primario ~]# vim /etc/resolv.conf
search infotecnews.local
nameserver 192.168.1.100
nameserver 192.168.1.101

2. Windows

D) Tipos de registros DNS

Existem diversos tipos diferentes de registros DNS disponíveis, no entanto, abaixo será mostrado apenas o que significam os mais comuns de serem encontrados durante o gerenciamento de um domínio:

  • A – O A, também conhecido por hostname, é o registro central de um DNS, ele vincula um domínio ou subdomínio a um endereço IP direto.
  • AAAA – Executa a mesma função de A, porém, para um endereço IPv6.
  • NS – Name Server (Servidor de Domínio), especifica servidores DNS para o domínio ou subdomínio. Pelo menos, dois registros NS devem ser definidos para cada domínio. Geralmente, um principal e outro secundário.
  • CNAME – Significa Canonical NAME. Especifica um apelido (alias) para o hostname (A). É uma forma de redirecionamento.
  • MX – Sigla para Mail eXchanger. Aponta o servidor de e-mails. Pode-se especificar mais de um endereço, formando-se assim uma lista em ordem de prioridade para que haja alternativas no caso de algum e-mail não puder ser entregue.
  • PTR – PoinTeR, aponta o domínio reverso a partir de um endereço IP.
  • SOA – Start Of Authority. Indica o responsável por respostas autoritárias a um domínio, ou seja, o responsável pelo domínio. Também indica outras informações úteis como número serial da zona, replicação, etc.
  • TXT – Refere-se a TeXT, o qual permite incluir um texto curto em um hostname. Técnica usada para implementar o SPF.
  • SPF – Sender Policy Framework, é uma tentativa de controle de falsos e-mails. Permite ao administrador de um domínio definir os endereços das máquinas autorizadas a enviar mensagens neste domínio.
  • SRV – Abreviação de SeRVice, permite definir localização de serviços disponíveis em um domínio, inclusive seus protocolos e portas.

Quer saber sobre o modelo TCP/IP e suas camadas? Clique aqui !

Rodrigo Reis

Rodrigo Reis

Gerente de infraestrutura e banco de dados de uma grande empresa em Belo Horizonte. Trabalha na área há 15 anos e é o idealizador do site InfoTecNews. Tem amplos conhecimentos em sistemas operacionais, Linux e Windows, além de banco de dados Oracle.

E-mail: rodrigo@rodrigoreis.eti.br
Site: www.rodrigoreis.eti.br
Rodrigo Reis