Tabela de Conteúdos

Página desactualizada Esta página contém uma versão anterior deste guia que pode estar desatualizada. Para a consultar a versão mais recente clique aqui.

3.1.2 Cache DNS

Objectivo

Embora os endereços Internet tenham nomes “legíveis” (www.google.com), estes devem ser traduzidos para o endereço IP (216.239.59.147) do respectivo servidor. Essa conversão é efectuada 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

server:~# aptitude install bind9 bind9-doc dnsutils

Configuração

A configuração gerada durante a instalação é perfeitamente funcional sem qualquer alteração. No entanto, vamos personalizar a instalação em 2 aspectos principais: a que servidores é que o nosso vai pedir ajuda na resolução de nomes, caso não o consiga fazer localmente (forwarders) e alguns aspectos de segurança.

Como forwarders utilizamos os servidores DNS do fornecedor de acesso à Internet (Neste caso, serão utilizados os servidores OpenDNS (*http://www.opendns.com/). Por redundância, acrescentar também o do router ADSL.

Por segurança só serão aceites ligações recebidas pela interface local ou pela destinada à rede interna (listen-on { 127.0.0.1; 192.168.1.100; };). Também só serão respondidos os pedidos de resolução que partirem do próprio posto ou da rede interna (allow-query { 127.0.0.1; 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.

A configuração é guardada no ficheiro /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 {
             // OpenDNS servers
             208.67.222.222;
             208.67.220.220;
             // ADSL router
             192.168.1.1;
        };

        // Security options
        listen-on port 53 { 127.0.0.1; 192.168.1.100; };
        allow-query { 127.0.0.1; 192.168.1.0/24; };
        allow-recursion { 127.0.0.1; 192.168.1.0/24; };
        allow-transfer { none; };

        auth-nxdomain no;    # conform to RFC1035
        // listen-on-v6 { any; };
};

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

server:~# named-checkconf

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

nameserver 127.0.0.1

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

# [...]
hosts:	files dns
# [...]

Reiniciar o serviço DNS:

server:~#  /etc/init.d/bind9 restart

Verificação

Como verificação, basta procurar o endereço IP de qualquer sítio Internet. O servidor DNS deverá ser o nosso e o endereço IP do sítio deverá ser correctamente mostrado:

server:~# nslookup www.fccn.pt
Server:         127.0.0.1
Address:        127.0.0.1#53

Non-authoritative answer:
www.fccn.pt     canonical name = m01.bc01.mm.fccn.pt.
Name:   m01.bc01.mm.fccn.pt
Address: 193.137.196.101

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

server:~# nslookup 193.137.196.101
Server:         127.0.0.1
Address:        127.0.0.1#53

Non-authoritative answer:
101.196.137.193.in-addr.arpa    name = m01.bc01.mm.fccn.pt.

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

Configuração dos clientes

Windows

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

Linux

No caso de sistemas Linux, editar o ficheiro /etc/resolv.conf e acrescentar ou substituir o nameserver:

# [...]
nameserver 192.168.1.100
# [...]

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

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/dhcp3/dhcpd.conf do 3.2.2 Servidor DHCP:

# [...]
option domain-name-servers 192.168.1.100;
# [...]

Referências