"La Gaceta de Linux...haciendo Linux justo un poco más divertido!"


Acelerando su Velocidad de Navegación en Red mediante el Cacheo de Nombre de Dominio PDNSD

Por Sunil Thomas Thonikuzhiyil

Traducción al español por José Gregorio Del Sol Cobos
el día 19 de Noviembre 2003, para La Gaceta de Linux


1. Dónde encontrar este documento.
2. Sobre PDNSD.
3. Instalación.
4. Archivo de configuración de muestra.
5. Retocando los archivos de configuración.
6. Preguntas frecuentes.
7. Créditos.

1. Dónde encontrar este documento


http://geocities.com/sunil_tt/pdnsd.txt

2. Sobre PDNSD.

El DNS es el Domain Name Server, Servidor de Nombres de Dominio. El DNS convierte los nombres en las direcciones IP que tienen todas las máquinas en la red. El servicio de nombres sobre Unix es realizado habitualmente por un programa llamado named. Éste es parte del paquete ''BIND'', coordinado por Paul Vixie para el Consorcio de Software de Internet (The Internet Software Consortium).

PDNSD es un servidor proxy de cacheo de DNS. Al contrario que BIND, guarda la caché RAM en un archivo que es leído por PDNSD en siguiente encendido de sesión. Cuando BIND actúa como un servidor de nombre de caché en su sistema local almacena/cachea el nombre en datos de traducción de números en su RAM. Esto no se vuelve a escribir en el disco duro al desconectarse, pues no está destinado a un usuario/sitio permanentemente conectado a la Red.

PDNSD se puede configurar para acelerar la navegación por la red con una conexión por módem. Dado que la resolución del DNS está referenciada desde el archivo caché, no se gasta tiempo en la supervisión de nombre a número. A cambio esto acelera la traducción de nombre a número, que efectivamente acelera su navegación.

PDNSD se distribuye bajo GNU/GPL y está disponible para su descarga en at: http://home.t-online.de/home/Moestl/

Los RPMs para Red Hat están en:

http://home.t-online.de/home/Moestl/

Los Debs para Debian están en:

ftp://ftp.debian.org/debian/pool/main/p/pdnsd/pdnsd_1.1.2.a-2_i386.deb

3. Instalación.

Descargue pdnsd-<version>.tar.gz de la fuente de arriba.

Descomprima y ejecute untar usando

tar zxvf pdnsd-<version>.tar.gz
Cambie de directorio a pdnsd-<version> y escriba
$ ./configure
El guión de configuración acepta una serie de parámetros, vea el fichero manual.txt proporcionado con la fuente de PDNSD. Los parámetros de la línea de comandos --prefix y --with-distribution son interesantes.
$ ./configure --help
listará todas las opciones.

Estoy asumiendo que no ha especificado ninguna opción de línea de comandos. El Makefile generado por configure tendrá lo siguiente por defecto: (es conveniente echar un vistazo al Makefile generado).

El directorio de instalación por defecto para PDNSD es /usr/local (se puede cambiar con la opción --prefix para configure). El lugar por defecto de la caché del PDNSD es /var/cache/pdnsd. El archivo de configuración del PDNSD pdnsd.conf se encontrará en /etc.

Ahora escriba:

$ make
Esto compilará pdnsd. No me encontré ningún problema al compilarlo ni en Debian 2.2 ni en Redhat 6.1. Seguido haga su a root, ya que la instalación requiere privilegios de root. Entonces escriba:
# make install
Este paso hará lo siguiente (citado del manual.txt de pdnsd):
  1. Copia pdsnsd a $(prefix)/sbin/
  2. Copia pdnsd-ctl a $(prefix)/sbin/
  3. Copia docs/pdnsd.conf (una configuración de muestra) a /etc/ (y hace una copia de seguridad de /etc/pdnsd.conf a /etc/pdnsd.conf.old). Si usted tiene un /etc/pdnsd.conf.old que no quiere que sea sobrescrito, sálvelo en otro lugar o con otro nombre antes de hacer 'make install'
  4. Crea su directorio caché si no hay. Después de la instalación, debería comprobar los permisos del fichero y editar /etc/pdnsd.conf para ajustarlo a sus necesidades. Si emplea la opción run_as, ¡por favor asegúrese de que su directorio de caché es realmente del usuario que especificó con esta opción! Observe por favor que el asunto de los permisos ha sido fijado como el de las entregas anteriores. Ahora /usr/local/sbin contendrá dos binarios pdnsd y pdnsd.ctl. 'pdnsd' es el demonio del proxy DNS y 'pdnsd.ctl' es un programa para controlar la caché.

La caché se localiza en /var/cache/pdnsd/pdnsd.cache. El tamaño del archivo de la caché será 4 inicialmente y crecerá a medida que usted navegue. Este aspecto de /etc/pdnsd.conf se fija con 'perm_cache=<value>;'. Por defecto se pone a 512(KB). Increméntelo de acuerdo a su opinión y un valor seguro sería 2048(KB) para una máquina con 64 MB de RAM. El tamaño del fichero de la caché será de 4 bytes inicialmente y crecerá a medida que usted navegue. El crecimiento de la caché se observará sólo después de reiniciar o después de volver a lanzar el demonio PDNSD. Esto se debe al hecho de que PDNSD salva la caché RAM al salir sólo.

PDNSD se debe lanzar cada vez que se lanza el sistema. Para ello, usted debe instalar los guiones de comienzo. La carpeta rc de la distribución de la fuente contiene esos guiones para Redhat, SuSE y Debian. No he probado los guiones SuSE.

Haga lo siguiente, dependiendo de su distribución.

3. a) Debian GNU/Linux.

Copie pdnsd-{versión}/src/rc/Debian/pdnsd a /etc/init.d y escriba update-rc.d. Pare bind si usted lo tiene instalado en su sistema. Edite /etc/resolv.conf y añada lo siguiente.
      nameserver 127.0.0.1
 

Descomente las entradas de los demás nombres de servidores. Lance pdnsd escribiendo /etc/init.d/pdnsd start. Pruebe pdnsd escribiendo nslookup. En mi sistema muestra lo siguiente:

     Default Server: debian
     Address: 127.0.0.1
     >

Pare pdnsd escribiendo /etc/init.d/pdnsd stop.

Anime su editor y añada una línea como ésta al final de su archivo /etc/hosts:

     127.0.0.2    testhost

Salve el fichero y lance pdnsd una vez más. Escriba nslookup. Dentro escriba 'testhost'.

    > testhost
      Server: debian
      Address: 127.0.0.1
      Non-authoritative answer:
      Name: testhost
      Address: 127.0.0.2
Si obtiene esta respuesta muestra que su pdnsd está funcionando (recuerde quitar la última línea de /etc/hosts).

3. b) Redhat Linux

Copie pdnsd-{versión}/src/rc/Redhat/pdnsd a /etc/rc.d/init.d. Pare bind si usted lo tiene instalado en su sistema. Edite /etc/resolv.conf y añada lo siguiente.
      nameserver 127.0.0.1
 

Descomente las entradas de los demás nombres de servidores. Lance pdnsd escribiendo /etc/init.d/pdnsd start. Pruebe pdnsd escribiendo nslookup. En mi sistema muestra lo siguiente:

     Default Server: Redhat
     Address: 127.0.0.1
     >

Pare pdnsd escribiendo /etc/rc.d/init.d/pdnsd stop.

Anime su editor y añada una línea como ésta al final de su archivo /etc/hosts:

     127.0.0.2    testhost

Salve el fichero y lance pdnsd una vez más. Escriba nslookup. Dentro escriba 'testhost'.

    > testhost
      Server: Redhat
      Address: 127.0.0.1
      Non-authoritative answer:
      Name: testhost
      Address: 127.0.0.2
Si obtiene esta respuesta muestra que su pdnsd está funcionando (recuerde quitar la última línea de /etc/hosts).

4. Fichero de la configuración de muestra.

Mi archivo pdnsd.conf aparece como lo siguiente:
global {
 perm_cache=2048;
 cache_dir="/var/cache/pdnsd";
 max_ttl=204800;
 run_as="nobody";
 paranoid=on;
 server_port=53;
 server_ip="127.0.0.1";
}
server {
 ip="202.54.6.5";
 timeout=260;
 interval=900;
 uptest=none;
 ping_timeout=500;
 purge_cache=off;
 caching=on;
}
server {
 ip="202.54.1.30";
 timeout=260;
 interval=900;
 uptest=none;
 ping_timeout=500;
 purge_cache=off;
 caching=on;
}
server {
 ip="202.9.128.6";
 timeout=260;
 interval=900;
 uptest=none;
 ping_timeout=500;
 purge_cache=off;
 caching=on;
}
source {
 ttl=86400;
 owner="localhost.";
 serve_aliases=on;
 file="/etc/hosts";
}
/*
rr {
 ttl=86400;
 owner="localhost.";
 name="localhost.";
 a="127.0.0.1";
 soa="localhost.","root.localhost.",42,86400,900,86400,86400;
}
rr {
 ttl=86400;
 owner="localhost.";
 name="1.0.0.127.in-addr.arpa.";
 ptr="localhost.";
 soa="localhost.","root.localhost.",42,86400,900,86400,86400;
} */

Ésta es una configuración de muestra que funciona (los servidores de DNS son de VSNL, un ISP indio). Usted debe editar la sección de servidores de pdnsd.conf para que siga sus necesidades. (Rellene servidores de DNS de su ISP contra la entrada por IP). Lance PDNSD una vez más y conéctese a Internet. Escriba nslookup y haga una llamada a, por ejemplo, yahoo.com. El servidor responderá algo como:

> yahoo.com
Server: debian
Address: 127.0.0.1
Non-authoritative answer:
Name: yahoo.com
Addresses: 204.71.200.245
Pare PDNSD y desconéctese de Internet. Lance PDNSD de nuevo y llame a yahoo.com a través de neslookup. Si obtiene la misma respuesta que arriba, bien, tómese un café y relájese. Si no, hay algo mal y ...??

5. Afinando los archivos de configuración

Si está usando BIND como su servidor de nombres primario, puede muy bien hacer de PDNSD el secundario. Pero aquí usted tiene una situación dudosa: ¿a qué puerto e IP local hará escuchar a PDNSD? Mire en el pdnsd.conf de ragOO y en el archivo named.conf:

[pdnsd.conf]

global {
perm_cache=2048;
cache_dir="/var/cache/pdnsd";
max_ttl=604800;
run_as="nobody";
paranoid=off;
server_port=53
server_ip="127.0.0.2";
}
[named.conf--relevant section only]
options {
directory "/var/cache/bind";
forward first;
forwarders {127.0.0.2;202.54.6.1;202.54.1.30};
};
La máquina GNU/Linux de ragOO tiene direcciones IP locales de la 127.0.0.1 á 8. Esto es lo mismo en todos los sistemas GNU/Linux y uno tiene la opción de especificar 127.0.0.2 como el servidor local alternativo. PDNSD escucha en el puerto 53 y observe que 127.0.0.2 es la más delantera en named.conf. Esto significa que su máquina/BIND mira los registros cacheados por PDNSD para un número que case con la dirección que usted/el programa cliente ha requerido, si no entonces llama a los solucionadores de DNS de su ISP, va en orden.



6. Preguntas frecuentes

La siguiente pregunta y respuesta es de la correspondencia que tuve con Thomas Meostl, autor de pdnsd.

P. Tuve algún problema con su instalación por defecto. La caché no estaba creciendo. Me quedé pegado en los 4 bytes. Cambié los permisos a 'nadie' y empezó a crecer. probablemente un problema con mi configuración. ¿Podría usted por favor decirme los permisos de archivo correctos para var/cache/pdnsd y /var/cache/pdnsd/pdnsd.cache ?

R. Lo mejor es dar al usuario que ejecute pdnsd permisos de escritura en el directorio caché (y por supuesto en el archivo caché): chown <user> /var/cache/pdnsd chmod 0700 /var/cache/pdnsd chown <user> /var/cache/pdnsd.cache chmod 0600 /var/cache/pdnsd/pdnsd.cache

Donde los permisos pueden por supuesto ser más liberales, si usted quiere. Los dados son los permisos requeridos mínimos. Los permisos que "make install" pone por defecto también están bien. La única cosa importante es hacerle chown al fichero. Normalmente, "make install" debería hacer también chown al archivo de la caché (¿puede ser un error? Si no le funcionó, por favor mándeme un correo).

7. Créditos

Gracias al autor de esta ingeniosa utilidad, Thomas Moestl por clarificar ciertos puntos y dudas. ¡Hizo de mí un mejor usuario de PDNSD :-)!

Gracias a Manoj Victor Mathew y Raghavendra Bhat (ragOO) por mencionar 'pdnsd' durante uno de los encuentros ILUG-Cochin. ragOO editó y modificó el borrador fuertemente y me animó a seguir modificando el borrador.

Finalmente, pero no menos, a todos los usuarios de este elegante programa que pueden haber encontrado esto útil. Que se diviertan...;


Copyright © 2001, Sunil Thomas Thonikuzhiyil.
Licencia de copia http://www.linuxgazette.com/copying.html
Publicado en el Número 65 de Linux Gazette, Abril de 2001