Acelere sua navegação usando um cache local de DNS: PDNSD
Autor: Tiago de Campos | Publicado: 2012-02-23T15:45:00-02:00

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&nbsp;cache&nbsp;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 {
&nbsp; &nbsp;perm_cache=12048;
&nbsp; &nbsp;cache_dir="/var/cache/pdnsd";
&nbsp; &nbsp;max_ttl=604800;
&nbsp; &nbsp;run_as="pdnsd";
&nbsp; &nbsp;status_ctl=on;
&nbsp; &nbsp;paranoid=on;
&nbsp; &nbsp;server_port=53;
&nbsp; &nbsp;server_ip="127.0.0.1";
}

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

server {
&nbsp; &nbsp;label="resolvconf";
}

source {
&nbsp; &nbsp;ttl=86400;
&nbsp; &nbsp;owner="localhost.";
&nbsp; &nbsp;serve_aliases=on;
&nbsp; &nbsp;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 &nbsp;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 {
&nbsp; &nbsp;ip="192.168.1.1";
&nbsp; &nbsp;ip="8.8.8.8";
&nbsp; &nbsp;ip="208.67.222.222";
&nbsp; &nbsp;timeout=60;
&nbsp; &nbsp;interval=900;
&nbsp; &nbsp;uptest=none;
&nbsp; &nbsp;ping_timeout=500;
&nbsp; &nbsp;purge_cache=off;
&nbsp; &nbsp;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&nbsp;/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&nbsp;/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:


; &lt;&lt;&gt;&gt; DiG 9.7.3 &lt;&lt;&gt;&gt; terra.com.br
;; global options: +cmd
;; Got answer:
;; -&gt;&gt;HEADER&lt;&lt;- 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 &nbsp;rcvd: 46



e pela segunda vez:

$ dig terra.com.br


; &lt;&lt;&gt;&gt; DiG 9.7.3 &lt;&lt;&gt;&gt; terra.com.br
;; global options: +cmd
;; Got answer:
;; -&gt;&gt;HEADER&lt;&lt;- 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 &nbsp;rcvd: 46



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

$ sudo pdnsd-ctl status&nbsp;


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&nbsp;e neste artigo (no final do artigo tem um exemplo de como configurar o PDNSD junto com o BIND9)