Ferramentas do usuário

Ferramentas do site


bind9

Instando servidor DNS (BIND) usando SO FreeBSD.

1 - Primeiramente vamos atualizar o Ports e o PKG:

# pkg update
# portsnap fetch extract

2 - Agora vamos pesquisar qual a versão do BIND9 mais recente e efetuar a instalação. No meu caso estou usando a versão 13.1 do SO FreeBSD e a versão do Bind será bind918-9.18.12 :

# pkg search bind9
bind9-devel-9.19.3.2022.06.16_1 BIND DNS suite with updated DNSSEC and DNS64
bind916-9.16.38                BIND DNS suite with updated DNSSEC and DNS64
bind918-9.18.12                BIND DNS suite with updated DNSSEC and DNS64

3 - Vamos instalar o bind via PKG:

# pkg install -y bind918-9.18.12

4 - A instalação deverá ocorrer sem nenhum problema, no caso de algum problema existir, você receberá uma mensagem de erro. Finalizando a instalação, vamos adicionar a linha de inicialização do serviço no /etc/rc.conf:

# /usr/local/etc/rc.d/named enable
named enabled in /etc/rc.conf

5 - Após isto, vamos configurar nosso arquivo named.conf que se encontra em /usr/local/etc/namedb:

– Depois de entrar no diretório ,vamos fazer uma cópia do arquivo de configuração:

# cd /usr/local/etc/namedb
# cp named.conf named.conf.bkp

6 - Agora vamos editar o arquivo de configuração de acordo com nossas necessidades. Vou deixar um exemplo de um arquivo básico de configuração que pode ser usado. Dependendo do da sua necessidade pode ser um pouco mais fácil ou um pouco mais complexo:

– Arquivo de exemplo:

options {
        directory       "/usr/local/etc/namedb/working";
        pid-file        "/var/run/named/pid";
        dump-file       "/var/dump/named_dump.db";
        statistics-file "/var/stats/named.stats";
        listen-on       { 127.0.0.1; 192.168.0.1; };
//      listen-on-v6    { ::1; };    // Caso queira ativar IPv6
        allow-query { any; };
//      dnssec-policy "my-policy";   // Caso queira ativar uma politica de configuracao de DNSSEC
        recursion no;
        version "Nao disponivel";
//      forwarders { 192.168.1.254; 8.8.8.8; };   // Caso queira configurar outros DNSs de encaminhamento
        empty-zones-enable no;
        disable-empty-zone "255.255.255.255.IN-ADDR.ARPA";
        disable-empty-zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA";
        disable-empty-zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA";

};

logging {


channel resolver_file {
        file "/var/log/named/resolver.log" versions 3 size 5m;
        severity dynamic;
        print-time yes;
    };

channel notify_file {
        file "/var/log/named/notify.log" versions 3 size 5m;
        severity dynamic;
        print-time yes;
        };
channel client_file {
        file "/var/log/named/client.log" versions 3 size 5m;
        severity dynamic;
        print-time yes;
    };
channel queries_file {
        file "/var/log/named/queries.log" versions 3 size 5m;
        severity dynamic;
        print-time yes;
    };
    category resolver { resolver_file; };
    category notify { notify_file; };
    category client { client_file; };
    category queries { queries_file; };
};

zone "nome_de_sua_zona_vem_aqui" {
        type master;
        allow-transfer { 192.168.0.2; };  // Aqui, será informado seu DNS secundário, caso tenha, importante ter um
        also-notify { 192.168.0.2; };     // Aqui, será informado seu DNS secundário, para que ele receba as 
                                          // notificações de modificações da zona
        file "/usr/local/etc/namedb/nome_do_seu_arquivo_de_zona";   // Seu arquivo de configuração de zona
       };

7 - O Arquivo de configuração acima pode ser usado por qualquer um, sendo que será necessário editar as opções referentes a sua zona:

– Vou explicar cada linha do arquivo:

– Seção Options:

1 - options { - Início das opções de configuração do BIND;

2 - directory "/usr/local/etc/namedb/working"; - Diretório onde o BIND deve ler e gravar seus arquivos de 
configuração e outros arquivos;

3 - pid-file "/var/run/named/pid"; - Arquivo onde o PID (identificação do processo) do BIND deve ser gravado;

4 - dump-file "/var/dump/named_dump.db"; - Arquivo onde o BIND deve gravar o dump (cópia do conteúdo da memória) de suas zonas;

5 - statistics-file "/var/stats/named.stats"; - Arquivo onde o BIND deve gravar suas estatísticas;

6 - listen-on { 127.0.0.1; 192.168.0.1; }; - Interfaces de rede em que o BIND deve escutar por consultas de DNS;

7 - // listen-on-v6 { ::1; }; - Linha comentada que indica como habilitar o suporte ao IPv6 no BIND;

8 - allow-query { any; }; - Permite que qualquer host envie consultas de DNS para o servidor BIND;

9 - // dnssec-policy "my-policy"; - Linha comentada que indica como habilitar uma política de DNSSEC;

10 - recursion no; - Desabilita a recursão de consultas de DNS no BIND;

11 - version "Nao disponivel"; - Define a versão do BIND como "Não disponível";

12 - // forwarders { 192.168.1.254; 8.8.8.8; }; - Linha comentada que indica como configurar outros servidores DNS para encaminhamento de consultas;

13 - empty-zones-enable no; - Desabilita a criação automática de zonas vazias (para prevenir ataques de amplificação de DNS);

14 - disable-empty-zone "255.255.255.255.IN-ADDR.ARPA"; - Desabilita a criação automática da zona reversa para o endereço de broadcast IPv4;

15 - disable-empty-zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA"; - Desabilita a criação automática da zona reversa para o endereço de loopback IPv6;

16 - disable-empty-zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA"; - Desabilita a criação automática da zona reversa para o endereço de multicast IPv6;

17 - }; - Fim das opções de configuração do BIND.

– Seção logging:

1 - logging { - Início da configuração de log.

2 - channel resolver_file { - Configuração do canal de log resolver_file.

3 - file "/var/log/named/resolver.log" versions 3 size 5m; - Configura o caminho e o nome do arquivo de log, bem como a política de rotação de log (mantém 3 versões com tamanho máximo de 5 megabytes).

4 - severity dynamic; - Configura o nível de gravidade do log como dinâmico, o que significa que pode ser alterado durante a execução.

5 - print-time yes; - Habilita a impressão do tempo no registro de log.

6 - }; - Fim da configuração do canal resolver_file.

7 - channel notify_file { - Configuração do canal de log notify_file.

8 - file "/var/log/named/notify.log" versions 3 size 5m; - Configura o caminho e o nome do arquivo de log, bem como a política de rotação de log (mantém 3 versões com tamanho máximo de 5 megabytes).

9 - severity dynamic; - Configura o nível de gravidade do log como dinâmico, o que significa que pode ser alterado durante a execução.

10 - print-time yes; - Habilita a impressão do tempo no registro de log.

11 - }; - Fim da configuração do canal notify_file.

12 - channel client_file { - Configuração do canal de log client_file.

13 - file "/var/log/named/client.log" versions 3 size 5m; - Configura o caminho e o nome do arquivo de log, bem como a política de rotação de log (mantém 3 versões com tamanho máximo de 5 megabytes).

14 - severity dynamic; - Configura o nível de gravidade do log como dinâmico, o que significa que pode ser alterado durante a execução.

15 - print-time yes; - Habilita a impressão do tempo no registro de log.

16 - }; - Fim da configuração do canal client_file.

17 - channel queries_file { - Configuração do canal de log queries_file.

18 - file "/var/log/named/queries.log" versions 3 size 5m; - Configura o caminho e o nome do arquivo de log, bem como a política de rotação de log (mantém 3 versões com tamanho máximo de 5 megabytes).

19 - severity dynamic; - Configura o nível de gravidade do log como dinâmico, o que significa que pode ser alterado durante a execução.

20 - print-time yes; - Habilita a impressão do tempo no registro de log.

21 - }; - Fim da configuração do canal queries_file.

22 - category resolver { resolver_file; }; - Configura a categoria de log resolver para usar o canal resolver_file.

23 - category notify { notify_file; }; - Configura a categoria de log notify para usar o canal notify_file.

24 - category client { client_file; }; - Configura a categoria de log client para usar o canal client_file.

25 - category queries { queries_file; }; - Configura a categoria de log queries para usar o canal queries_file.

26 - };: Fim da configuração de log

– Seção da zona

1 - zone "nome_de_sua_zona_vem_aqui" { - indica o início da definição de uma zona

2 - type master; - indica que o servidor DNS é a fonte autoritativa para essa zona.

3 - allow-transfer { 192.168.0.2; }; - especifica o endereço IP de um servidor que está autorizado a receber a transferência das informações da zona.

4 - also-notify { 192.168.0.2; }; - especifica o endereço IP de um servidor que também será notificado quando a zona for atualizada.

5 - file "/usr/local/etc/namedb/nome_do_seu_arquivo_de_zona"; -  especifica o arquivo de zona que contém as informações de DNS da zona

OBS: As linhas obrigatórias que vocês terão que alterar no seu ambiente serão:

– Linha 6 da seção OPTIONS

– Linhas 1, 3, 4 e 5 da seção ZONA

8 - Feche seu arquivo named.conf com suas configurações, uma forma de saber se as configurações estão corretas é por meio do comando abaixo:

# named-checkconf named.conf

9 - Se tudo estiver correto vamos configurar nosso arquivo de zona:

OBS: O arquivo de zona deverá se encontrar no mesmo local em que foi descrito na linha 5 da seção de zona do named.conf.

– No meu caso vou criar um arquivo de zona chamado exemplo.com.br.zone

# touch exemplo.com.br.zone

=== 10 - Vamos editá-lo, segue o exemplo do meu arquivo de configuração:

$TTL    2d
@       IN      SOA     ns1.exemplo.com.br. hostmaster.exemplo.com.br. (
                     2023092300         ; Serial
                            12h         ; Refresh
                            15m         ; Retry
                            3w          ; Expire
                            2h          ; Negative Cache TTL
)

@                       IN      NS      ns1
@                       IN      NS      ns2

exemplo.com.br.            A       192.168.1.3 ; end externo


; name servers

ns1                     A       192.168.1.1 ; 
ns2                     A       192.168.1.2 ; 

; registros

server1                 A       192.168.1.4
server2                 A       192.168.1.5
server3                 A       192.168.1.6

www                     A       192.168.1.3

; CNAMEs

www.exemplo.com.br     CNAME   exemplo.com.br

– Uma forma de testar as zonas é por meio do seguinte comando:

# named-checkzone exemplo.com.br exemplo.com.br.zone

11 - Para o DNS secundário você fará os mesmos passos anteriores, porém irá alterar para o endereço dele (secundário), o que irá mudar será as linhas da zona no named.conf. Segue um exemplo, do que irá sofrer alteração no DNS secundário:

DNS Secundário - named.conf

zone "nome_da_sua_zona" {
        type slave;
        masters { 192.168.1.1; };
        file "/usr/local/etc/namedb/nome_do_arquivo_da_sua_zona";
       };

12 - Feito todas as configurações, todos os testes, vamos dar permissão para o usuário bind ao diretório /etc/usr/local/namedb e vamos inicializar o serviço:

# chown -R bind:bind /usr/local/etc/namedb/
# /usr/local/etc/rc.d/named start

13 - Vamos ver se o serviço subiu normalmente com o comando sockstat -4l, você deverá receber uma saída da seguinte forma:

# sockstat -4l
USER     COMMAND    PID   FD PROTO  LOCAL ADDRESS         FOREIGN ADDRESS      
bind     named      11268 25 udp4   192.168.1.1:53       *:*
bind     named      11268 26 udp4   192.168.1.1:53       *:*
bind     named      11268 27 tcp4   192.168.1.1:53       *:*
bind     named      11268 28 tcp4   192.168.1.1:53       *:*
bind     named      11268 37 udp4   127.0.0.1:53          *:*
bind     named      11268 38 udp4   127.0.0.1:53          *:*
bind     named      11268 39 tcp4   127.0.0.1:53          *:*
bind     named      11268 40 tcp4   127.0.0.1:53          *:*
bind     named      11268 41 tcp4   127.0.0.1:953         *:*
bind     named      11268 42 tcp4   127.0.0.1:953         *:*

Deixe sua contribuição

Insira seu comentário:
 
bind9.txt · Última modificação: 2023/07/17 14:08 por dhiemeson.nascimento