# pkg update # portsnap fetch extract
# 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
# pkg install -y bind918-9.18.12
# /usr/local/etc/rc.d/named enable named enabled in /etc/rc.conf
– 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
– 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 };
– 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
# named-checkconf named.conf
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
– 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"; };
# chown -R bind:bind /usr/local/etc/namedb/ # /usr/local/etc/rc.d/named start
# 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 *:*