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 (213.129.232.18) 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
root@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 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 actualmente disponíveis, tais como:
- OpenDNS (http://www.opendns.com/)
- Google Public DNS (http://code.google.com/speed/public-dns/).
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 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:
- /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:
root@server:~# named-checkconf
Actualizar o ficheiro /etc/resolv.conf para que a resolução de nomes passe a ser feita localmente:
- /etc/resolv.conf
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:
- /etc/nsswitch.conf
# [...] hosts: files dns # [...]
Reiniciar o serviço DNS:
root@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 (127.0.0.1) e o ou os endereços IP do sítio deverão ser correctamente mostrados:
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: 206.12.19.7 Name: www.debian.org Address: 128.31.0.51
O processo inverso, ou seja, procurar o nome a partir do endereço IP também deverá funcionar:
root@server:~# nslookup 206.12.19.7 Server: 127.0.0.1 Address: 127.0.0.1#53 Non-authoritative answer: 7.19.12.206.in-addr.arpa name = bellini.debian.org. Authoritative answers can be found from: . nameserver = c.root-servers.net. . nameserver = d.root-servers.net. . nameserver = h.root-servers.net. . nameserver = a.root-servers.net. . nameserver = m.root-servers.net. . nameserver = g.root-servers.net. . nameserver = f.root-servers.net. . nameserver = k.root-servers.net. . nameserver = i.root-servers.net. . nameserver = b.root-servers.net. . nameserver = l.root-servers.net. . nameserver = e.root-servers.net. . nameserver = j.root-servers.net. a.root-servers.net internet address = 198.41.0.4 b.root-servers.net internet address = 192.228.79.201 c.root-servers.net internet address = 192.33.4.12 d.root-servers.net internet address = 128.8.10.90 e.root-servers.net internet address = 192.203.230.10 f.root-servers.net internet address = 192.5.5.241 g.root-servers.net internet address = 192.112.36.4 h.root-servers.net internet address = 128.63.2.53 i.root-servers.net internet address = 192.36.148.17 j.root-servers.net internet address = 192.58.128.30 k.root-servers.net internet address = 193.0.14.129 l.root-servers.net internet address = 199.7.83.42 m.root-servers.net internet address = 202.12.27.33
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:
- /etc/resolv.conf
# [...] nameserver 192.168.1.100 # [...]
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.
A partir deste momento, a resolução de nomes passará a ser efectuada 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 servidor DHCP]:
- /etc/dhcp/dhcpd.conf
# [...] option domain-name-servers 192.168.1.100; # [...]
Referências
- ISC Bind (http://www.isc.org/sw/bind/)
- Wikipedia: Domain Name System (http://pt.wikipedia.org/wiki/Domain_Name_System )
- Linux Home Networking: Quick HOWTO: Ch18 Configuring DNS (http://www.linuxhomenetworking.com/wiki/index.php/Quick_HOWTO_:_Ch18_:_Configuring_DNS)
- DNS Howto, 3. A resolving, caching name server (http://langfeldt.net/DNS-HOWTO/BIND-9/DNS-HOWTO-3.html)
- Securing Debian Manual (http://www.debian.org/doc/manuals/securing-debian-howto/ch-sec-services.en.html#s-sec-bind)
- OpenDNS (http://www.opendns.com/)
- Google Public DNS (http://code.google.com/speed/public-dns/)