# 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 *:*