Páginas

quinta-feira, 23 de fevereiro de 2012

Acelere sua navegação usando um cache local de DNS: PDNSD

Neste post vou ensinar como configurar um cache local de DNS. Ao contrário do Bind (neste post ensino como configura-lo), o PDNSD armazena o seu cache no HD quando o computador é desligado e lê esse conteúdo quando o computador é ligado.

Para instalar basta:
$ sudo apt-fast install pdnsd
(não entendeu o porque do apt-fast? visite este link)

No processo de instalação você poderá escolher entre três opções de configuração, escolha MANUAL! Além disso o apt instalará o pacote resolvconf junto, isso não será um problema, mais abaixo eu mostrarei como fazer para o seu computador sempre manter as configurações certar para o uso do PDNSD

Uma vez instalado vamos configurá-lo. Edite o arquivo /etc/pdnsd.conf
$ sudo vim /etc/pdnsd.conf
E deixe ele igual a este:


global {
   perm_cache=12048;
   cache_dir="/var/cache/pdnsd";
   max_ttl=604800;
   run_as="pdnsd";
   status_ctl=on;
   paranoid=on;
   server_port=53;
   server_ip="127.0.0.1";
}

server {
   ip="127.0.0.2";
   timeout=60;
   interval=900;
   uptest=none;
   ping_timeout=500;
   purge_cache=off;
   caching=on;
}

server {
   label="resolvconf";
}

source {
   ttl=86400;
   owner="localhost.";
   serve_aliases=on;
   file="/etc/hosts";
}

Este arquivo está configurado para ser usado junto com o resolvconf!

Na seção 'global' temos os parâmetros globais de configuração: tamanho do cache, tempo de  vida da entrada, IP que será usado, porta e etc.

Já a(s) seção(ões) 'server' tem os parâmetros dos servidores DNS que serão usados para resolver os nomes requisitados. Repare que neste arquivo eu usei o IP 127.0.0.2 como o servidor de DNS, isto porque no meu post anterior (este aqui) eu ensinei como encriptar o tráfego DNS e por isso estou usando este serviço. Se você quiser pode mudar o IP para qualquer outro servidor DNS de sua escolha e também pode adicionar mais entradas como esta. Um exemplo:


server {
   ip="192.168.1.1";
   ip="8.8.8.8";
   ip="208.67.222.222";
   timeout=60;
   interval=900;
   uptest=none;
   ping_timeout=500;
   purge_cache=off;
   caching=on;
}

Assim a primeira entrada seria o seu roteador (se houver algum) a segundo o DNS público do Google e a terceira o endereço do OpenDNS.

Devemos editar o arquivo /etc/default/pdnsd
$ sudo vim /etc/default/pdnsd
e deixá-lo da seguinte forma,


# do we start pdnsd ?
START_DAEMON=yes
# auto-mode, overrides /etc/pdsnd.conf if set [see /usr/share/pdnsd/]
#AUTO_MODE=
# optional CLI options to pass to pdnsd(8)
START_OPTIONS=


Temos, também, que editar o arquivo /etc/dhcp/dhclient.conf
$ sudo vim /etc/dhcp/dhclient.conf
e descomentar a linha que contém: prepend domain-name-servers 127.0.0.1;

Agora reinicie o serviço:
$ sudo service pdnsd restart
e teste se teve efeito com o comando dig:
$ dig terra.com.br
Deverá obter uma saída parecida com:


; <<>> DiG 9.7.3 <<>> terra.com.br
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 21041
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;terra.com.br. IN A

;; ANSWER SECTION:
terra.com.br. 595 IN A 200.154.56.80

;; Query time: 161 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Feb 23 15:04:27 2012
;; MSG SIZE  rcvd: 46

e pela segunda vez:
$ dig terra.com.br


; <<>> DiG 9.7.3 <<>> terra.com.br
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27407
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;terra.com.br. IN A

;; ANSWER SECTION:
terra.com.br. 594 IN A 200.154.56.80

;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Thu Feb 23 15:04:28 2012
;; MSG SIZE  rcvd: 46

Para obter informações sobre quanto de cache você já usou ou se os servidores estão funcionando:
$ sudo pdnsd-ctl status 


Um problema que eu tive foi que na primeira vez eu coloquei 2Mb de cache e foi muito pouco, então aumentei para cerca de 10Mb e deu tudo certo!

Bom, é isso!


Este post foi inspirado nesta thread do UbuntuForums e neste post do go2linux e neste artigo (no final do artigo tem um exemplo de como configurar o PDNSD junto com o BIND9)

Nenhum comentário:

Postar um comentário