Criando um servidor de dns local com o bind no debian

Mas aí você se pergunta: O que é DNS?

O DNS é o banco de dados distribuído de traduções de nome para endereço IP. Tecnicamente não é necessário usar nomes de host e de domínio, como www.meudominio.com.br, porque é o endereço IP que o computador usa para estabelecer comunicação.

O DNS foi criado para permitir o uso de nomes de domínios mais convenientes. Por exemplo, quando o usuário digita um nome DNS como parte de uma URL em um navegador, a parte do nome é enviada para o servidor DNS para que seja resolvido em um endereço IP. Uma vez encontrado o endereço, ele é usado para se reescrever a URL e obter diretamente a página web.

Um dos servidores DNS mais conhecido é o Bind. Nesse exemplo estaremos usando o Bind9, que é uma versão mais atualizada e mais segura deste software.

O primeiro passo é instalar o Bind:

# apt-get install bind9

Agora com o Bind instalado, vamos conhecer e configurar os arquivos usados por ele:

Arquivos de configuração DNS:

Edite seu resolv.conf para ele fazer a busca do DNS local:

# vim /etc/resolv.conf

Este arquivo lista os endereços IP dos servidores de nomes:

1
2
nameserver 127.0.0.1
nameserver 192.168.254.1

Agora vamos configurar os arquivos do Bind:

# vim /etc/bind/named.conf.local

Este arquivo é onde você indicará em que caminho estarão suas zonas. Edite-o e inclua estas linhas:

1
2
3
4
5
6
7
8
9
10
11
12
## minhas zonas ##
zone "meudominio.com.br"{
type master;
file "db.meudominio.com.br";
};
## reverso da rede 192.168.254.0
zone "254.168.192.in-addr.arpa"{
type master;
file "db.254.168.192";
};
## fim das minhas zonas ##

Agora criaremos os arquivos db.meudominio.com.br e db.254.168.192:

Dentro do diretório /etc/bind existe um arquivo db.local que poderemos copiar para fazermos nosso db.meudominio.com.br. Como root execute:

# cd /etc/bind
# touch /var/cache/bind/db.meudominio.com.br
# cat db.local > /var/cache/bind/db.meudominio.com.br

Agora edite o seu arquivo /var/cache/bind/db.meudominio.com.br para ficar assim:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
;
; BIND zone file for home.lan
;
$TTL    3D
@       IN      SOA     ns.meudominio.com.br.    root.meudominio.com.br. (
                        01              ; serial
                        8H              ; refresh
                        2H              ; retry
                        4W              ; expire
                        1D )            ; minimum
;
                NS      ns              ; Inet address of name server
                MX      10 mail         ; Primary mail exchanger
; Necessario para funfar
ns              IN      A       192.168.254.1
;
; Hosts Reais
www             IN      A       192.168.254.1
ftp             IN      A       192.168.254.1
smtp            IN      A       192.168.254.1
imap            IN      A       192.168.254.1
;
gateway         CNAME   router
gw      CNAME   router

Ainda como root, crie o db reverso de sua rede:

# touch /var/cache/bind/db.254.168.192

Edite o arquivo para que fique assim:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
;
; BIND zone file for 192.168.1.xxx
;
$TTL    3D
@       IN      SOA     ns.home.lan.    root.home.lan. (
                        2010111101      ; serial
                        8H              ; refresh
                        2H              ; retry
                        4W              ; expire
                        1D )            ; minimum
;
                NS      ns.meudominio.com.br.    ; Nameserver address
100             PTR     server.meudominio.com.br.
100             PTR     ns.meudominio.com.br.
100             PTR     mail.meudominio.com.br.
101             PTR     virtual.meudominio.com.br.
1               PTR     router.meudominio.com.br.

Agora vamos editar o arquivo named.conf.options

# vim /etc/bind/named.conf.options

Deixe-o assim:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
options {
        directory "/var/cache/bind";
        // If there is a firewall between you and nameservers you want
        // to talk to, you may need to fix the firewall to allow multiple
        // ports to talk.  See http://www.kb.cert.org/vuls/id/800113
        // If your ISP provided one or more IP addresses for stable
        // nameservers, you probably want to use them as forwarders.
        // Uncomment the following block, and insert the addresses replacing
        // the all-0's placeholder.
        // Security options
        listen-on port 53 { 127.0.0.1; 192.168.254.1; };
        allow-query { 127.0.0.1; 192.168.254.0/24; };
        allow-recursion { 127.0.0.1; 192.168.254.0/24; };
        allow-transfer { none; };
        auth-nxdomain no;    # conform to RFC1035
        // listen-on-v6 { any; };
};

Feito isso reinicie seu bind:

# /etc/init.d/bind9 restart

Agora já podemos pingar internet.meudominio.com.br e mail.meudominio.com.br:

# ping internet.meudominio.com.br
PING internet.meudominio.com.br (192.168.254.1) 56(84) bytes of data.
64 bytes from 192.168.254.1: icmp_seq=1 ttl=64 time=4.86 ms
64 bytes from 192.168.254.1: icmp_seq=2 ttl=64 time=0.228 ms
64 bytes from 192.168.254.1: icmp_seq=3 ttl=64 time=0.229 ms

Utilidades e checando configurações DNS:

Um servidor DNS interno é muito útil para os administradores de redes, por exemplo: se você tem um servidor proxy autenticado, nos navegadores dos clientes podemos usar um endereço de proxy como internet.empresa.com.br, assim se um dia necessitar alterar o ip de seu proxy, só mude as configurações de DNS no seu db.empresa.com.br.

Podemos usar alguns comandos para checar as configurações de seu dns.

named-checkconf (verifica as configurações do Bind)

# named-checkconf

Se não retornar nada é que está ok.

named-checkzone (verifica suas zonas):

# named-checkzone zonename db.meudominio.com.br
zone zonename/IN: loaded serial 2
OK

Servidor DNS pronto e funcionando! Você já pode dar nomes a seus IPs, facilite seu trabalho.

Rolar para cima