quinta-feira, 22 de novembro de 2007

Usando o pdnsd para fazer cache local de DNS

O pdns é uma ferramenta desenvolvida para fazer cache local de DNS em seu desktop/servidor.

Mas por que motivo cachear o DNS ?
O cache local de DNS permite uma maior velocidade de navegação (principalmente em conexões lentas) pois evita que sempre que seja preciso resolver um nome seja necessário consultar um servidor DNS externo.
Além disso também garante uma maior disponibilidade de resolução de nomes no caso do servidor DNS externo apresentar problemas, o que evita que você, por exemplo, não possa navegar (obviamente o pdnsd só resolverá os endereços já cacheados, mas isso com certeza já ajuda muito).

Configurando
O pdns usa o arquivo de configuração /etc/pdnsd.conf.
Nesse arquivo é preciso informar os servidores DNS externos (podem ser um ou mais) onde o pdnsd irá conectar para resolver o nome que não está ainda cacheado e também como o pdnsd irá trabalhar (TTLs, diretórios de armazenamento, entre outras coisas).

Segue como exemplo uma configuração básica do pdnsd usando o DNS do Terra como exemplo (200.176.2.10):

// $Id: pdnsd.conf.in,v 1.4 2000/11/11 20:32:58 thomas Exp $

global {
perm_cache=512; # Tamanho maximo do cache em disco (em Kb)
cache_dir="/var/cache/pdnsd"; # Local do armazenamento do cache
max_ttl=604800; # TTL (Time to Live) em segundos. 1 semana
run_as="pdnsd";
paranoid=off; # Se for on, consulta sempre o DNS externo
# caso contrario usa o cache
status_ctl=on;
}


server {
ip="200.176.2.10"; # IP do Server DNS externo
timeout=30;
interval=30;
uptest=ping;
ping_timeout=50;
purge_cache=off;
}


source {
ttl=86400; # TTL do /etc/hosts (padrão 1 dia)
owner="localhost.";
file="/etc/hosts";
}
É preciso também alterar o /etc/resolv.conf de forma que o nameserver seja o localhost, deixando nele somente a seguinte linha:

nameserver 127.0.0.1

Atenção: Se você usa DHCP é normal que o resolv.conf seja reescrito sempre que o IP for "adquirido". Nesse caso, será sempre necessário alterar o arquivo após o computador "pegar" o IP.

E como funciona exatamente ?
Ao consultar o endereço, o pdnsd primeiro tenta localizar o endereço no cache. Se o endereço existir, ele vai verificar o TTL do mesmo. Caso o TTL não tenha ainda expirado, o IP cacheado será usado.
Caso o TTL tenha expirado ou o endereço não exista em cache, o pdnsd então irá procurar o endereço solicitado nos servidores DNS externos configurados.


Para quem quer uma navegação mais dinâmica, seja por pouca banda ou mesmo só para otimizar um pouco a velocidade, o pdnsd é uma opção interessante e de simples instalação, tanto para servidores quanto para desktops.

7 comentários:

  1. Opa Marcelo,

    > Atenção: Se você usa DHCP é normal que o
    > resolv.conf seja reescrito sempre que o
    > IP for "adquirido". Nesse caso, será
    > sempre necessário alterar o arquivo após
    > o computador "pegar" o IP.

    hum... na verdade você não precisa editar sempre o resolv.conf... ;-)

    Basta editar o /etc/dhcp3/dhclient.conf e descomentar a linha:

    prepend domain-name-servers 127.0.0.1;

    Depois disso, sempre que o dhclient entrar em ação, o servidor local de DNS será usado como a primeira opção.

    Abraço! :-)

    ResponderExcluir
  2. Hmmm, valeu a dica.

    Falta de conhecimento de minha parte. :-)

    ResponderExcluir
  3. o arquivo pdnsd.cache não esta crescendo fica sempres nos 8 bytes
    www.brseek.com

    ResponderExcluir
  4. E quando tu coloca ele no modo debug, tu já verificou se ele sempre efetua a consulta ?

    []s

    ResponderExcluir
  5. E se eu quiser montar um servidor para a minha rede local somente para caching dns, onde configuro para o servidor fazer cache para a rede?

    ResponderExcluir
  6. Deixa eu ver se entendi.

    Tu quer fazer cache só da tua zona local ?

    []s

    ResponderExcluir