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 *:*
bind9.txt · Última modificação: 2023/07/17 14:08 por dhiemeson.nascimento
Deixe sua contribuição