16 de jan de 2009

Pdnsd - dns proxy daemon

Proxy DNS Server

Algum tempo atrás postei a respeito de conexão internet usando celular Nokia N73. Então em virtude da baixa velocidade da conexão, busquei uma forma de melhorar a resolução e cache do dns e para isso encontrei o pdnsd e em menos de 5 minutos estava tudo resolvido. Vamos ver como foi a instalação agora em um servidor de rede:

Esta instalação foi feita em um servidor proxy de rede com ip 192.168.1.2 tendo como firewall o servidor 192.168.1.254.
sudo aptitude install pdnsd

O arquivo de configuração fica em /etc/pdnsd.conf . Naturalmente, faça um backup e altere de acordo com sua rede. Veja o arquivo de exemplo que estou usando:

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

global {
perm_cache=1024;
cache_dir="/var/cache/pdnsd";
max_ttl=1w; # one week
min_ttl=15m; # Retain cached entries at least 15 minutes.
run_as="pdnsd";
paranoid=on;
# next setting allows ppp/ip-up update the name servers -- ABa / 20040213
status_ctl=on;
server_port=53;
server_ip="192.168.1.2";
timeout=10; #global timeout option (10 seconds).
}
// As linhas abaixo, diz respeito ao gateway.IP diz respeito ao
// proximo dns a ser consultado, no caso coloquei ip do proprio
// gateway e os ips do Opendns. Perceba que em interface, coloquei
// eth0, assim o servidor permite que maquinas da rede façam
// requisição direta a ele
server {
label="firewall";
ip=192.168.1.254
, 208.67.222.222
, 208.67.220.220;
proxy_only=on;
timeout=4;
uptest=if;
interface=eth0;
interval=10m; # Check every 10 minutes.
purge_cache=off; # Keep stale cache entries in case the ISP's DNS servers go offline.
}

É preciso também alterar o /etc/resolv.conf para que aponte diretamente ao servidor, ficando assim:

nameserver 192.168.1.2

Reinicie o serviço /etc/init.d/pdnsd start e faça um teste qualquer de acesso internet ou ping. Opcionalmente, pode se alterar o squid para que aponte a requisição de dns ao servidor pdnsd alterando no /etc/squid/squid.conf a linha dns_nameservers 192.168.1.2 . Reinicie o serviço do squid squid -k reconfigure .
Caso tenha o bind rodando na máquina, não há problema. Agora observe o cache sendo atualizado em /var/cache/pdnsd . O pdnsd é útil também em casos de conexão discadas. Neste caso, observe a configuração de exemplo em /usr/share/doc/pdnsd/examples . Também permite a consulta direta a root-servers e está pronto para o ipv6.

Referências:
man pdnsd
/usr/share/doc/pdnsd/examples