Ferramentas de Usuário

Ferramentas de Site


pt:buster:intranet:dns:cache

3.1.2 Cache DNS

Embora os endereços Internet tenham nomes “legíveis” (www.google.com), estes devem ser traduzidos para o endereço IP (213.129.232.18) do respetivo servidor. Essa conversão é efetuada realizando uma pesquisa no Sistema de Nomes de Domínios ou DNS (Domain Name System).

Uma cache DNS guarda localmente os resultados dessa pesquisa para utilização futura, evitando a repetição de pesquisas e aumentando drasticamente a velocidade de resposta.

Instalação

<sxh bash; highlight: [1]> root@server:~# apt install bind9 bind9-doc dnsutils </sxh>

Configuração

A configuração gerada durante a instalação é perfeitamente funcional sem qualquer alteração. No entanto, vamos personalizar a instalação em alguns aspetos.

A configuração é guardada no ficheiro /etc/bind/named.conf.options.

Em primeiro lugar vamos garantir que só serão respondidos os pedidos de resolução que partirem do próprio posto (127.0.0.1 ou ::1) ou de um endereço da rede interna (192.168.1.0/24). Todos os outros serão ignorados, de modo a evitar eventuais utilizações abusivas do nosso servidor DNS por parte de terceiros. Esta lista de controle de acessos ou ACL a que iremos chamar internals é definida no ficheiro /etc/bind/named.conf.options:

<sxh; highlight: [1-5]; title: /etc/bind/named.conf.options> acl internals {

      127.0.0.0/8;
      ::1/128;
      192.168.1.0/24;

}; </sxh>

Em seguida definimos a que servidores é que o nosso vai pedir ajuda na resolução de nomes, caso não o consiga fazer localmente (forwarders).

Como forwarders podemos optar por várias hipóteses: uma é utilizamos os servidores DNS do nosso fornecedor de acesso à Internet.

Outra possibilidade muito interessante é utilizar um dos diversos serviços públicos de DNS atualmente disponíveis, tais como:

Estes serviços alegam fornecer não só resoluções mais rápidas, mas também diversos serviços adicionais de segurança, tais como filtragem de endereços maliciosos, etc.

Neste caso, serão utilizados os servidores públicos da Cloudflare e, por redundância, acrescentaremos também os servidores Gooogle Google Public DNS.

A configuração é guardada no ficheiro /etc/bind/named.conf.options:

<sxh; highlight: [15-29,38]; title: /etc/bind/named.conf.options> […] options { directory “/var/cache/bind”; If there is a firewall between you and nameservers you want

      // to talk to, you may need to fix the firewall to allow multiple
      // ports to talk.  See http://www.kb.cert.org/vuls/id/800113
      // If your ISP provided one or more IP addresses for stable
      // nameservers, you probably want to use them as forwarders.
      // Uncomment the following block, and insert the addresses replacing
      // the all-0's placeholder.
      forwarders {
              // Cloudflare Public DNS (IPv4)
              1.1.1.1;
              1.0.0.1;
              // Cloudflare Public DNS (IPv6)
              2606:4700:4700::1111;
              2606:4700:4700::1001;
              // Google Public DNS (IPv4)
              8.8.8.8;
              8.8.4.4;
              // Google Public DNS (IPv6)
              2001:4860:4860::8888;
              2001:4860:4860::8844;
      };
      //========================================================================
      // If BIND logs error messages about the root key being expired,
      // you will need to update your keys.  See https://www.isc.org/bind-keys
      //========================================================================
      dnssec-validation auto;
      auth-nxdomain no;    # conform to RFC1035
      // listen-on-v6 { any; };

};

</sxh>

Por fim apertamos a segurança de modo a garantir que o servidor só será usado pela nossa rede interna.

<sxh; highlight: [3-20]; title: /etc/bind/named.conf.options> options {

      // [...]
      // Security options
      // Listen on local interfaces only
      listen-on { 127.0.0.1; 192.168.1.100; };
      listen-on-v6 { ::1; };
      // Accept requests for internal network only
      allow-query { internals; };
      // Allow recursive queries to the local hosts
      allow-recursion { internals; };
      // Do not transfer the zone information to the secondary DNS
      allow-transfer { none; };
      // Do not make public version of BIND
      version none;

};

</sxh>

Verificar se o ficheiro de configuração foi corretamente editado:

<sxh bash; highlight: [1]> root@server:~# named-checkconf </sxh>

Atualizar o ficheiro /etc/resolv.conf para que a resolução de nomes passe a ser feita localmente:

<sxh; highlight: [1-2]; title: /etc/resolv.conf> nameserver 127.0.0.1 nameserver ::1 </sxh>

Verificar também no ficheiro /etc/nsswitch.conf que a resolução de nomes passa também pelo serviço DNS:

<sxh; highlight: [2]; title: /etc/nsswitch.conf> # […] hosts: files dns # […] </sxh>

Reiniciar o serviço DNS:

<sxh bash; highlight: [1]> root@server:~# systemctl restart bind9 </sxh>

Verificação

Como verificação, basta procurar o endereço IP de qualquer sítio Internet. O servidor DNS deverá ser o nosso (127.0.0.1) e o ou os endereços IP do sítio deverão ser corretamente mostrados:

<sxh bash; highlight: [1]> root@server:~# nslookup www.debian.org Server: 127.0.0.1 Address: 127.0.0.1#53

Non-authoritative answer: Name: www.debian.org Address: 5.153.231.4 Name: www.debian.org Address: 130.89.148.14 </sxh>

O processo inverso, ou seja, procurar o nome a partir do endereço IP também deverá funcionar:

<sxh bash; highlight: [1]> root@server:~# nslookup 5.153.231.4 Server: 127.0.0.1 Address: 127.0.0.1#53

Non-authoritative answer: 4.231.153.5.in-addr.arpa name = senfter.debian.org.

Authoritative answers can be found from: . nameserver = g.root-servers.net. . nameserver = a.root-servers.net. . nameserver = l.root-servers.net. . nameserver = j.root-servers.net. . nameserver = b.root-servers.net. . nameserver = k.root-servers.net. . nameserver = m.root-servers.net. . nameserver = f.root-servers.net. . nameserver = c.root-servers.net. . nameserver = d.root-servers.net. . nameserver = h.root-servers.net. . nameserver = e.root-servers.net. . nameserver = i.root-servers.net. </sxh>

Configuração dos clientes

Linux

No caso de sistemas Linux, editar o ficheiro /etc/resolv.conf e acrescentar ou substituir o nameserver com o endereço IP do nosso servidor:

<sxh; highlight: [2]; title: /etc/resolv.conf> # […] nameserver 192.168.1.100 # […] </sxh>

Windows

Para sistemas Windows indicar, nas propriedades do protocolo Internet (TCP/IPv4)) da ligação de rede, o endereço do nosso servidor DNS (192.168.1.100) como sendo o servidor DNS preferido.

Configuração do servidor DNS no Microsoft Windows 7

A partir deste momento, a resolução de nomes passará a ser efetuada pelo nosso servidor de cache DNS.

Configuração automática de clientes

O servidor DNS também pode ser atribuído automaticamente aos clientes através do protocolo DHCP. Para tal, basta acrescentar a opção domain-name-servers com o ou os endereços dos servidores DNS ao ficheiro /etc/dhcp/dhcpd.conf do 3.2.2 Servidor DHCP:

<sxh; highlight: [2]; title: /etc/dhcp/dhcpd.conf> # […] option domain-name-servers 192.168.1.100; # […] </sxh>

Referências

pt/buster/intranet/dns/cache.txt · Última modificação em: 2020-08-02 20:10 (edição externa)

Excepto menção em contrário, o conteúdo neste wiki está sob a seguinte licença: CC Attribution-Noncommercial-Share Alike 4.0 International
CC Attribution-Noncommercial-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki