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
- ISC Bind (*http://www.isc.org/sw/bind/)
- Wikipedia: DNS (*http://pt.wikipedia.org/wiki/Dns)
- 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/)