Apesar desse post ser feito para CentOS, você pode adaptar para Debian ou Ubuntu (alterando yum para apt-get install e de bind para bind9 e adaptando o arquivo de .conf)

Para instalar esse servidor, você vai precisar:

  • Instalar o servidor CentOS padrão: Caso tenha dúvidas consulte aqui ou no link disponibilizado nas referências.

Antes de iniciar a configuração de um servidor DNS, vamos entender alguns conceitos:

  • ACLs: São objetos que você cria para usar nas configurações do BIND (como a sua rede interna);
  • Views: São como servidores diferentes, que respondem dependo da consulta. Aqui vamos criar Views para o servidor funcionar diferente para a rede interna e para a internet;
  • Serial: Informação é usada ENTRE os servidores DNS para saber se as informações estão atualizadas (se estão com o mesmo serial) ou se um servidor precisa atualizar sua zona DNS, sempre que se atualiza uma zona é necessário incrementar o serial dela (diferente de atualizar, esse número tem que ser maior que o anterior);
  • Root Hints: São as entidades responsáveis pelos registros DNS no mundo, são usados por padrão como encaminhadores;
  • Encaminhadores (Forwarders): Para “quem” o servidor DNS consulta quando for uma pesquisa DNS que ele não é o responsável e ele não possuí a informação;
  • Recursividade: É a permissão para o servidor DNS consultar informações de domínios que ele não tem a zona cadastrada (em servidores Externos, normalmente se desabilita, para que não usem seu servidor para navegar na internet).

Agora, vamos começar. Para instalar o Bind, execute os seguintes comandos:

yum install bind bind-utils bind9-doc -y

Lembrando que nesse post, vamos exemplificar duas views:

  • Uma para os clientes da rede interna: Nesse caso vamos permitir a recursividade e redirecionar as consultas do domínio seudominiointerno.com para outro servidor DNS interno (se fosse o servidor Active Directory, por exemplo);
  • Uma para os demais clientes (rede externa): Nesse caso vamos desabilitar a recursividade e responder apenas as consultas sobre o domínio as consultas do domínio seudominioexterno.com;

Para isso execute o comando:

vim /etc/named.conf

Deixe o arquivo da seguinte forma:

options {
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”;
dnssec-enable yes;
dnssec-validation yes;
bindkeys-file “/etc/named.iscdlv.key”;
managed-keys-directory “/var/named/dynamic”;
pid-file “/run/named/named.pid”;
session-keyfile “/run/named/session.key”;
};

logging {
channel default_debug {
file “data/named.run”;
severity dynamic;
};
};


acl “rede_interna” {
IP_SUA_REDE_INTERNA/CIDR;
};


view “view_para_rede_interna”{
match-clients { rede_interna; };
match-destinations { localhost; };
recursion yes;
include “/etc/named.root.key”;
include “/etc/named.rfc1912.zones”;
zone “seudominiointerno.com” IN {
type forward;
forwarders {
IP_DNS_PRIMARIO;
IP_DNS_SECUNDARIO;
};
};
};

view “view_external”{
match-clients { any; };
match-destinations { any; };
recursion no;
allow-query-cache { none; };
allow-transfer { active_directory; };
zone “seudominioexterno.com” {
type master;
file “/var/named/zonas/seudominioexterno.com.dns”;
};
zone “seuoutrodominioexterno.com” {

type slave;
file “/var/named/zonas/seuoutrodominioexterno.com.dns”;
masters { IP_DNS_MASTER; };
};
};

Agora crie os registros do seudominioexterno.com e adicionar alguns registros

mkdir /var/named/zonas
touch  /var/named/zonas/seudominioexterno.com.dns
touch  /var/named/zonas/seuoutrodominioexterno.com.dns
chmod -R 775 /var/named/zonas/
chown -R named.named /var/named/zonas/

vim  /var/named/zonas/seudominioexterno.com.dns 

Dentro insira o seguinte conteúdo (deixamos alguns exemplos para ajudar, como um registro SPF e configurando o gmail como o provedor de e-mail desse domínio):

$TTL 86400
@ IN SOA nomedoservidor.seudominioexterno.com. root.nomedoservidor.seudominioexterno.com. (
2011120201 ; Serial: use no formato ano,mes,dia,atualizadao do dia (yyyymmddnn[00..99])
3H ; Refresh every 3 hours: 3h
60m60s
1H ; Retry every 15 minutes: 15m
60s 1W ; Expire after a week: 7d24h60m60s
1H ) ; Minimum ttl of 1 hour: 1h
60m60s
@ IN NS nomedoservidor.seudominioexterno.com.
@ IN MX 10 smtp.gmail.com.
@ IN TXT “v=spf1 mx a:SERVIDOR +all”
dns1 IN A IP
www IN CNAME nomedoservidor

Agora, execute:

systemctl enable named
systemctl start named

Se precisar testar se a configuração está correta, execute o comando:

named-checkconf

Fontes/Referências

NVLAN – Instalação padrão do CentOS7

https://help.ubuntu.com/10.04/serverguide/dns-configuration.html
https://social.technet.microsoft.com/Forums/pt-BR/bfa2f560-9bd8-4241-8140-c9e5502752e7/diferena-entre-forwarders-e-root-hints-?forum=winsrv2008pt
http://aesptux.com/2011/11/08/configuring-bind9-master-slave-on-ubuntu/

Mais Informações

Esperamos ter ajudado da melhor forma possível e estaremos sempre a disposição para mais informações.

Entre em contato conosco pelo e-mail equipe@nvlan.com.br.

NVLAN - Consultoria