BIND-9.20.0

Introdução ao BIND

O pacote BIND fornece um servidor DNS e utilitários clientes. Se você estiver interessado(a) somente nos utilitários, [então] consulte Utilitários BIND-9.20.0.

Esse pacote é conhecido por construir e funcionar corretamente usando uma plataforma LFS 12.2.

Informação do Pacote

  • Transferência (HTTP): https://ftp.isc.org/isc/bind9/9.20.0/bind-9.20.0.tar.xz

  • Transferência (FTP):

  • Soma de verificação MD5 da transferência: 2c8d94d1524cbbae4d76cd74955bb6d9

  • Tamanho da transferência: 5,5 MB

  • Espaço em disco estimado exigido: 138 MB (22 MB instalado)

  • Tempo de construção estimado: 0,5 UPC (com paralelismo=4; cerca de 40 minutos, um tanto independente do processador, para executar a suíte completa de teste)

Dependências do "BIND"

Exigidas

liburcu-0.14.0 e libuv-1.48.0

Recomendadas

Opcionais

cURL-8.9.1, libidn2-2.3.7, libxml2-2.13.3, lmdb-0.9.31, MIT Kerberos V5-1.21.3, pytest-8.3.2, sphinx-8.0.2 (exigido para construir documentação), cmocka, geoip, jemalloc, w3m

Opcional (para executar a suíte de teste)

Net-DNS-1.46

Observações de Editor(a): https://wiki.linuxfromscratch.org/blfs/wiki/bind

Instalação do BIND

[Nota]

Nota

Começando com bind-9.18.20, os endereços de IP para B.ROOT-SERVERS.NET mudaram.

Instale o "BIND" executando os seguintes comandos:

./configure --prefix=/usr          \
            --sysconfdir=/etc       \
            --localstatedir=/var    \
            --mandir=/usr/share/man \
            --disable-static        &&
make

Emita os seguintes comandos para executar a suíte completa de teste. Primeiro, como o(a) usuário(a) "root", configure algumas interfaces de teste:

[Nota]

Nota

Se o "IPv6" não estiver habilitado no núcleo, [então] existirão diversas mensagens de erro: "RTNETLINK answers: Operation not permitted". Essas mensagens não afetam os testes.

bin/tests/system/ifconfig.sh up

A suíte de teste pode indicar alguns testes ignorados, dependendo de quais opções de configuração forem usadas. Alguns testes são marcados com UNTESTED ou até mesmo falham se Net-DNS-1.46 não estiver instalado. Um teste, dnssec, é conhecido por falhar. Os testes exigem o módulo Python hypothesis, que não está no BLFS. Para contornar isso, as instruções abaixo criam um ambiente virtual Python e, em seguida, instalam o módulo nele antes de executar os testes. Para executar os testes, como um(a) usuário(a) sem privilégios, execute:

python3 -m venv --system-site-packages testenv &&
source testenv/bin/activate                    &&
pip3 install hypothesis                        &&
make -k check                                  &&
deactivate

Novamente como "root", limpe as interfaces de teste:

bin/tests/system/ifconfig.sh down

Finalmente, instale o pacote como o(a) usuário(a) "root":

make install

Explicações do Comando

--sysconfdir=/etc: Esse parâmetro força o "BIND" a procurar arquivos de configuração em "/etc" em vez de "/usr/etc".

--with-libidn2: Esse parâmetro habilita o suporte a "Internationalized Domain Names in Applications" ("IDNA2008").

--enable-fetchlimit: Use essa opção se você quiser estar apto(a) a limitar a taxa de consultas recursivas do cliente. Isso possivelmente seja útil em servidores que recebem um grande número de consultas.

--disable-doh: Use essa opção se você não tiver nghttp2-1.62.1 instalado e não precisar de suporte para DNS sobre HTTPS.

--disable-static: Essa chave impede a instalação das versões estáticas das bibliotecas.

Configurando o BIND

Arquivos de Configuração

named.conf, root.hints, 127.0.0, rndc.conf e resolv.conf

Informação de Configuração

O BIND será configurado para executar em uma jaula chroot como um(a) usuário(a) sem privilégios (named). Essa configuração é mais segura naquilo que um comprometimento do DNS consegue afetar somente uns poucos arquivos no diretório HOME do(a) usuário(a) named.

Crie o(a) usuário(a) sem privilégios e grupo "named":

groupadd -g 20 named &&
useradd -c "Proprietário(a) do BIND" -g named -s /bin/false -u 20 named &&
install -d -m770 -o named -g named /srv/named

Configure alguns arquivos, diretórios e dispositivos necessários ao "BIND":

mkdir -p /srv/named &&
cd      /srv/named &&
mkdir -p dev etc/named/{slave,pz} usr/lib/engines var/run/named &&
mknod /srv/named/dev/null c 1 3 &&
mknod /srv/named/dev/urandom c 1 9 &&
chmod 666 /srv/named/dev/{null,urandom} &&
cp /etc/localtime etc

O arquivo "rndc.conf" contém informações para controlar as operações do "named" com o utilitário "rndc". Gere uma chave para uso no "named.conf" e "rndc.conf" com o comando "rndc-confgen":

rndc-confgen -a -b 512 -t /srv/named

Crie o arquivo named.conf a partir do qual o named lerá o local dos arquivos de zona, servidores raiz de nomes e chaves seguras DNS:

cat >> /srv/named/etc/named.conf << "EOF"
options {
    directory "/etc/named";
    pid-file "/var/run/named.pid";
    statistics-file "/var/run/named.stats";

};
zone "." {
    type hint;
    file "root.hints";
};
zone "0.0.127.in-addr.arpa" {
    type master;
    file "pz/127.0.0";
};

// O "Bind" 9 agora registra por padrão por intermédio do "syslog" (exceto depuração).
// Estas são as regras padrão de registro.

logging {
    category default { default_syslog; default_debug; };
    category unmatched { null; };

  channel default_syslog {
      syslog daemon;                      // Envia para o recurso de processo de segundo plano
                                          // do "syslog"
      severity info;                      // Envia somente informações prioritárias
                                          // e superiores
  };

  channel default_debug {
      file "named.run";                   // Escreve para "named.run" no 
                                          // diretório de trabalho. 
                                          // Observação: "stderr" é 
                                          // usado em vez de "named.run" 
                                          // se o servidor for iniciado 
                                          // com a opção "-f".
      severity dynamic;                   // Registra no nível de 
                                          // depuração atual do servidor.
  };

  channel default_stderr {
      stderr;                             // Escreve para "stderr"
      severity info;                      // Envia somente informações prioritárias
                                          // e superiores
  };

  channel null {
      null;                               // Descarta tudo enviado para
                                          // esse canal
  };
};
EOF

Crie um arquivo de zona com o seguinte conteúdo:

cat > /srv/named/etc/named/pz/127.0.0 << "EOF"
$TTL 3D
@     IN      SOA     ns.local.domain. hostmaster.local.domain. (
                        1       ; Serial
                        8H      ; Refresh
                        2H      ; Retry
                        4W      ; Expire
                        1D)     ; Minimum TTL
                NS      ns.local.domain.
1               PTR     localhost.
EOF

Crie o arquivo "root.hints" com os seguintes comandos:

[Nota]

Nota

Deve-se ter cuidado para garantir que não existam espaços iniciais neste arquivo.

cat > /srv/named/etc/named/root.hints << "EOF"
.                       6D  IN      NS      A.ROOT-SERVERS.NET.
.                       6D  IN      NS      B.ROOT-SERVERS.NET.
.                       6D  IN      NS      C.ROOT-SERVERS.NET.
.                       6D  IN      NS      D.ROOT-SERVERS.NET.
.                       6D  IN      NS      E.ROOT-SERVERS.NET.
.                       6D  IN      NS      F.ROOT-SERVERS.NET.
.                       6D  IN      NS      G.ROOT-SERVERS.NET.
.                       6D  IN      NS      H.ROOT-SERVERS.NET.
.                       6D  IN      NS      I.ROOT-SERVERS.NET.
.                       6D  IN      NS      J.ROOT-SERVERS.NET.
.                       6D  IN      NS      K.ROOT-SERVERS.NET.
.                       6D  IN      NS      L.ROOT-SERVERS.NET.
.                       6D  IN      NS      M.ROOT-SERVERS.NET.
A.ROOT-SERVERS.NET.     6D  IN      A       198.41.0.4
A.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:503:ba3e::2:30
B.ROOT-SERVERS.NET.     6D  IN      A       170.247.170.2
B.ROOT-SERVERS.NET.     6D  IN      AAAA    2801:1b8:10::b
C.ROOT-SERVERS.NET.     6D  IN      A       192.33.4.12
C.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:500:2::c
D.ROOT-SERVERS.NET.     6D  IN      A       199.7.91.13
D.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:500:2d::d
E.ROOT-SERVERS.NET.     6D  IN      A       192.203.230.10
E.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:500:a8::e
F.ROOT-SERVERS.NET.     6D  IN      A       192.5.5.241
F.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:500:2f::f
G.ROOT-SERVERS.NET.     6D  IN      A       192.112.36.4
G.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:500:12::d0d
H.ROOT-SERVERS.NET.     6D  IN      A       198.97.190.53
H.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:500:1::53
I.ROOT-SERVERS.NET.     6D  IN      A       192.36.148.17
I.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:7fe::53
J.ROOT-SERVERS.NET.     6D  IN      A       192.58.128.30
J.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:503:c27::2:30
K.ROOT-SERVERS.NET.     6D  IN      A       193.0.14.129
K.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:7fd::1
L.ROOT-SERVERS.NET.     6D  IN      A       199.7.83.42
L.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:500:9f::42
M.ROOT-SERVERS.NET.     6D  IN      A       202.12.27.33
M.ROOT-SERVERS.NET.     6D  IN      AAAA    2001:dc3::35
EOF

O arquivo "root.hints" é uma lista de servidores raiz de nomes. Esse arquivo precisa ser atualizado periodicamente com o utilitário "dig". Uma cópia atual do "root.hints" pode ser obtida a partir de https://www.internic.net/domain/named.root. Para detalhes, consulte-se o "Manual de Referência do(a) Administrador(a) do BIND 9".

Crie ou modifique o "resolv.conf" para usar o novo servidor de nomes com os seguintes comandos:

[Nota]

Nota

Substitua <teudomínio.com> pelo teu próprio nome de domínio válido.

cp /etc/resolv.conf /etc/resolv.conf.bak &&
cat > /etc/resolv.conf << "EOF"
search <teudomínio.com>
nameserver 127.0.0.1
EOF

Configure as permissões relativas à jaula "chroot" com o seguinte comando:

chown -R named:named /srv/named

Unidade do systemd

Para iniciar o servidor "DNS" na inicialização, instale a unidade "named.service" inclusa no pacote "" "blfs-systemd-units-20240801":

make install-named

Agora inicie o "BIND" com o seguinte comando:

systemctl start named

Testando o BIND

Teste a nova instalação do "BIND" 9. Primeiro consulte o endereço local do dispositivo com o "dig":

dig -x 127.0.0.1

Agora tente uma pesquisa externa de nome, observando a diferença de velocidade em pesquisas repetidas devido ao cache. Execute o comando "dig" duas vezes relativo ao mesmo endereço:

dig www.linuxfromscratch.org &&
dig www.linuxfromscratch.org

Você pode ver resultados quase instantâneos com as pesquisas de cache do "named". Consulte-se o Manual de Referência do(a) Administrador(a) do "BIND" (veja-se abaixo) para mais opções de configuração.

Manual de Referência do(a) Administrador(a) (MRA)

A documentação ARM (não confunda com a arquitetura do processador) está incluída no pacote do fonte. A documentação está no formato .rst, o que significa que ela pode ser convertida em formatos legíveis por humanos se o sphinx-8.0.2 estiver instalado.

Quando o BIND estiver configurado, especialmente se ele for operar em um cenário da vida real, é altamente recomendado consultar a documentação ARM. O ISC fornece um conjunto atualizado de excelente documentação junto com cada lançamento, de forma que possa ser facilmente visualizada e (ou) baixada – então, não existe desculpa para não ler os documentos. Os formatos que o ISC fornece são PDF, epub e HTML em https://downloads.isc.org/isc/bind9/9.20.0/doc/arm/.

Conteúdo

Aplicativos Instalados: arpaname, ddns-confgen, delv, dig, dnssec-cds, dnssec-dsfromkey, dnssec-importkey, dnssec-keyfromlabel, dnssec-keygen, dnssec-ksr, dnssec-revoke, dnssec-settime, dnssec-signzone, dnssec-verify, host, mdig, named, named-checkconf, named-checkzone, named-compilezone, named-journalprint, named-nzd2nzf, named-rrchecker, nsec3hash, nslookup, nsupdate, rndc, rndc-confgen e tsig-keygen (link simbólico)
Bibliotecas Instaladas: libdns.so, libisc.so, libisccc.so, libisccfg.so e libns.so
Diretórios Instalados: /usr/include/{dns,dst,irs,isc,isccc,isccfg,ns}, /usr/lib/bind e /srv/named

Descrições Curtas

arpaname

traduz endereços "IP" para os nomes "ARPA" correspondentes

ddns-confgen

gera uma chave para uso pelo "nsupdate" e pelo "named"

delv

é uma nova ferramenta de depuração que é uma sucessora do "dig"

dig

interroga servidores "DNS"

dnssec-cds

muda os registros "DS" para uma zona filha baseado em "CDS"/"CDNSKEY"

dnssec-dsfromkey

gera o Registro de Recurso ("RR") do "Delegation Signer" ("DS")

dnssec-importkey

lê um registro público "DNSKEY" e gera um par de arquivos ".key"/".private"

dnssec-keyfromlabel

obtém chaves com o rótulo dado a partir de um dispositivo de "hardware" de criptografia e constrói arquivos de chave para "DNSSEC"

dnssec-keymgr

garante a cobertura correta "DNSKEY" baseada em uma política definida

dnssec-ksr

cria arquivos de resposta de chave assinada (SKR) para configurações KSK offline

dnssec-revoke

configura o bit "REVOKED" em uma chave "DNSSEC"

dnssec-settime

configura os metadados de hora da chave para uma chave "DNSSEC"

dnssec-signzone

gera versões assinadas de arquivos de zona

dnssec-verify

verifica se uma zona está totalmente assinada para cada algoritmo encontrado no conjunto "RR" do "DNSKEY" para a zona e se as cadeias "NSEC"/"NSEC3" estão completas

host

é um utilitário para pesquisas de "DNS"

mdig

é uma versão do "dig" que permite múltiplas consultas ao mesmo tempo

named

é o processo de segundo plano do servidor de nomes

named-checkconf

verifica a sintaxe dos arquivos "named.conf"

named-checkzone

verifica a validade do arquivo de zona

named-compilezone

é semelhante ao "named-checkzone", mas sempre despeja o conteúdo da zona em um arquivo especificado em um formato especificado

named-journalprint

imprime o diário da zona em formato legível por humanos(as)

named-rrchecker

lê um registro individual de recurso "DNS" a partir da entrada padrão e verifica se ele está sintaticamente correto

named-nzd2nzf

converte uma base de dados "NZD" para o formato de texto "NZF"

nsec3hash

gera um resumo "NSEC3" baseado em um conjunto de parâmetros "NSEC3"

nslookup

é um aplicativo usado para consultar servidores de nomes de domínio da Internet

nsupdate

é usado para submeter solicitações de atualização de "DNS"

rndc

controla a operação do "BIND"

rndc-confgen

gera arquivos "rndc.conf"

tsig-keygen

é um link simbólico para o "ddns-confgen"