shell-script

Configurando servidor DNS (bind) no linux CentOS, Debian, Ubuntu e outras

Qual a função do DNS?

A função do DNS é traduzir um domínio para endereço IP.
Imagina você memorizar todos endereços IPs dos sites que costuma acessar: Ex: 200.154.56.80 (http://www.terra.com.br), 200.18.7.2(http://www.joinville.udesc.br), etc, então é muito mais fácil lembrar o nome do site do que pelo endereço IP né, por isso que temos o serviço DNS que faz a tradução do site acessado para endereço IP.

O DNS (Domain Name System), é um serviço cliente/servidor baseado em hierarquias, em que a parte cliente é conhecida como resolver (resolvedor) e a parte servidora como name server. As conexões entre o cliente e o servidor se dão através do protocolo UDP e porta 53.

Estrutura de domínios
O servidor DNS é baseado em uma estrutura hierárquica, em que o processo de resolução se dá da hierarquia mais alta para a mais baixa. O ponto mais alto da hierarquia é chamado de root-level-domain, ou domínio raiz, que é representado por um caractere ‘.’.
O próximo nível da hierarquia são os top-level-domain, ou domínios de primeiro nível. Eles são representados por códigos domínio de primeiro nível. Veja alguns deles:

* com – Organização comercial
* mil – Militar
* net – Redes (backbones para a Internet)
* org – organizações sem fins comerciais
* gov – governamental
* xx – Sigla do país representado por dois caracteres. Ex: br, uk

Zona de autoridade

É a parte do domínio ao qual um servidor de DNS é o responsável. Em cada zona tem-se um arquivo de zona que é a base de referências entre os IPs e nomes desta zona.

Servidor primário

É o servidor onde estão os arquivos originais da zona. Só pode existir um servidor primário por zona.
Servidor secundário
Aqui é onde ficam as réplicas dos arquivos de zona, que podem ser consultados no caso de inoperabilidade do servidor primário. Ao contrário do servidor primário, podem existir vários servidores secundários. No Brasil, para que possamos registrar um domínio é obrigatório ter dois servidores: o Primário e também um Secundário.

Servidor master

É aquele servidor para o qual um servidor secundário irá solicitar as cópias dos arquivos de zona.
Servidor cache
É aquele servidor que não responde por zona alguma. Sua função é apenas armazenar resultados de consultas que ele armazena em cache. Assim, novas consultas ao mesmo registro serão atendidas com mais rapidez.

Instalação:

No Debian ou Ubuntu:

apt-get install bind9

No CentOS

yum install bind

Estruturação dos arquivos de configuração: 

* /etc/named.conf – Arquivo de configuração geral do BIND.
* /usr/sbin/named – O binário (daemon) do BIND.
* /usr/doc/bind-9.4.3-P4/ – Manual em html muito bom do BIND em inglês.
* /var/named/caching-example/ – Diretório com arquivos exemplo de configuração básicos do BIND

Depois de instalado o pacote bind, vamos para configuração dos arquivos.

No Debian ou Ubuntu a arrumação dos arquivos fica no arquivo

vim /etc/bind/named.conf
##This is the primary configuration file for the BIND DNS server named.
##
##Please read /usr/share/doc/bind9/README.Debian.gz for information on the 
##structure of BIND configuration files in Debian, *BEFORE* you customize 
##this configuration file.
##
##If you are just adding zones, please do that in /etc/bind/named.conf.local

include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";

Cada include representa os locais separados options, local e default-zones, abra cada arquivo para verificar a sua configuração

vim /etc/bind/named.conf.options
vim /etc/bind/named.conf.local
vim /etc/bind/named.conf.default-zones

em outras distros podem estar no mesmo arquivo, daí basta você olhar e ver em qual se encaixa.

vim /etc/bind/named.conf

Conteúdo do Arquivo:

options {
directory "/var/named";
version "PROTECT";
allow-transfer {192.168.1.103;};
listen-on {127.0.0.1; 192.168.1.103;};
allow-recursion {127.0.0.1; localhost; 192.168.1.0/24;};
/*
* If there is a firewall between you and nameservers you want
* to talk to, you might need to uncomment the query-source
* directive below. Previous versions of BIND always asked
* questions using port 53, but BIND 8.1 uses an unprivileged
* port by default.
*/
// query-source address * port 53;
};

//
// a caching only nameserver config
//
zone "." IN {
type hint;
file "caching-example/named.root";
};

zone "localhost" IN {
type master;
file "caching-example/localhost.zone";
allow-update { none; };
};

zone "0.0.127.in-addr.arpa" IN {
type master;
file "caching-example/named.local";
allow-update { none; };
};
zone "103.1.168.192.in-addr.arpa" IN {
type master;
file "caching-example/domain.rev";
allow-transfer {192.168.1.103;};
};
zone "fasim.com.br" IN {
type master;
file "caching-example/fasim.host";
allow-transfer {192.168.1.103;};
};

Explicação do arquivo named.conf

*directory – Aqui você indica qual será o diretório onde ficará os arquivos de registros DNS.
*version – versão do bind. Pensando na segurança é comum esconder a versão do bind, por exemplo nesse caso ‘PROTECT’.
*minimal-responses – Se habilitado, quando o servidor gerar respostas, somente adicionará registros na autoridade quando requerido. Esta opção aumenta a performance do servidor.
*allow-transfer – Aqui você indica quem poderá fazer transferência de autoridades.
*listen-on – Aqui você especifica quais interfaces estão habilitadas a “escutar” conexões no protocolo UDP e porta 53.
*allow-recursion – Caso vá usar um DNS que será acessível pela Internet, é bom que você não deixe que esse pessoal faça recursões, ou seja, que eles pesquisem outros domínios que não sejam os que você tem cadastrado no seu servidor.

Zona Reversa (domain.rev)

$TTL 86400
$ORIGIN fasim.com.br.
@ IN SOA fasim.com.br. root.fasim.com.br. (
4 ; Serial de sincronização
604800 ; refresh
86400 ; retry
2419100 ; expiry
640800 ) ; Negative cache TTL
IN NS fasim.com.br.
1 IN PTR fasim.com.br.
1 IN PTR ftp
1 IN PTR www

Explicação:

O $TTL se refere ao time-to-live, o tempo de vida do registro que é medido em segundos. Então, no nosso exemplo, o tempo de vida é de 86400 segundos.
$ORIGIN é uma variável que o BIND usa para registros que não entende. É onde você coloca o nome do seu domínio em qualquer registro não-qualificado.
Domínio (fasim.host)

$TTL 86400
@ IN SOA fasim.com.br. root.fasim.com.br. (
4 ; Serial de sincronização
694800 ; refresh
86400 ; rety
2419100 ; expiry
640800 ) ; Negative cache TTL
NS fasim.com.br.
IN MX 10 fasim.com.br.
localhost IN A 127.0.0.1
fasim.com.br. IN A 192.168.1.103
dns IN A 192.168.1.103
www IN A 192.168.1.103
ftp IN A 192.168.1.103

Conclusão
Depois de configurado inicie o serviço (bind).

No Debian:

/etc/init.d/bind9 start

Como verificar erros de sintaxe do Bind?

No terminal digite:

named-checkconf /etc/named.conf

Se não há saída, a configuração é considerada correta e você pode com segurança reiniciar o daemon Bind.

Se houver um erro será exibida na tela:

named-checkconf /etc/named.conf

Na máquina cliente, coloque o DNS do servidor que acabou de configurar e faça um teste.
Nesse caso: $ping fasim.com.br
Se obter resposta, então esta OK!

Configurando servidor DNS (bind) no linux CentOS, Debian, Ubuntu e outras

By Lucas Rodrigues Monteiro

Bacharel em Sistemas da Informação, Certificado MCTS 70-680 / MOS, Trabalho como Administrador de Redes, Firewall e Servidores Windows e Linux! Minhas atividades favoritas são: Caminhar, Fazer Trilhas, Natureza, Insetos e claro ler sobre Tecnologia.

Deixe uma resposta

Translate »