Una manera muy sencilla de cargar mas rapido las paginas que visitamos en debian es instalar un cache de dns en local. (puedes ver el articulo ¿que es y como funciona las dns?).

Basicamente lo que nos permite es generar una cache para almacenar la resolucion de dominios a su ip equivalente, con lo que las siguientes peticiones no hara falta volver a realizar la peticion dns a nuestro router o al servidor dns de nuestra conexion, ahorrandonos un tiempo en cargar la pagina web, descargar el fichero, etc.

Instalación

Lo primero que debemos hacer es ser usuario root:


  sudo -s
  

A continuacion instalamos el servidor dns pdns:


  apt-get install pdnsd
  

Configuración

Una vez instalado, debemos modificar el fichero de configuracion /etc/pdnsd.conf en caso de ser necesario:

  • cache_dir: directorio donde se almacenara la cache de dns
  • perm_cache: tamaño del cache de dns (en bytes)
  • min_ttl: tiempo minimo que permanecera un registro en cache
  • max_ttl: tiempo maximo que permanecera un registro en cache

Tambien debemos modificar el fichero /etc/pdnsd para poder arrancar el cache dns, modificando:


  START_DAEMON=no
    

por

  START_DAEMON=yes
    

Y en el ultimo paso, debemos modificar el orden de los servidores de nombres, indicando que utilice en primer lugar nuestro servidor local. Editamos el fichero /etc/resolv.conf y añadimos en la primera linea:


  nameserver 127.0.0.1
  

Por ultimo iniciamos el servidor dns cache:


  /etc/init.d/pdnsd start
    

Y con esto ya tendriamos instalado nuestro propio servidor cache dns en local.

Comprobar que esta funcionando correctamente

Podemos realizar una sencilla comprobacion con el commando dig, que nos permite resolver un dominio a su direccion ip.

# dig google.com
; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26847
;; flags: qr rd ra; QUERY: 1, ANSWER: 11, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;google.com.            IN    A
;; ANSWER SECTION:
google.com.        900    IN    A    173.194.34.225
google.com.        900    IN    A    173.194.34.233
google.com.        900    IN    A    173.194.34.226
google.com.        900    IN    A    173.194.34.224
google.com.        900    IN    A    173.194.34.238
google.com.        900    IN    A    173.194.34.229
google.com.        900    IN    A    173.194.34.231
google.com.        900    IN    A    173.194.34.228
google.com.        900    IN    A    173.194.34.232
google.com.        900    IN    A    173.194.34.230
google.com.        900    IN    A    173.194.34.227
;; Query time: 413 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon May 26 19:58:15 2014
;; MSG SIZE  rcvd: 204

Como podemos ver en el resultado que nos devielve, esta peticion ha tardado 413 milisegundos y se ha resuelto desde el servidor local (127.0.0.1), que a su vez ha realizado una peticion a un servidor externo ya que no se tenia cacheado.

La segunda peticion que hacemos para resolver el dominio google.com:

#dig google.com
; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 29161
;; flags: qr rd ra; QUERY: 1, ANSWER: 11, AUTHORITY: 0, ADDITIONAL: 0
;; QUESTION SECTION:
;google.com.            IN    A
;; ANSWER SECTION:
google.com.        865    IN    A    173.194.34.230
google.com.        865    IN    A    173.194.34.227
google.com.        865    IN    A    173.194.34.225
google.com.        865    IN    A    173.194.34.233
google.com.        865    IN    A    173.194.34.226
google.com.        865    IN    A    173.194.34.224
google.com.        865    IN    A    173.194.34.238
google.com.        865    IN    A    173.194.34.229
google.com.        865    IN    A    173.194.34.231
google.com.        865    IN    A    173.194.34.228
google.com.        865    IN    A    173.194.34.232
;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Mon May 26 19:58:50 2014
;; MSG SIZE  rcvd: 204

En esta ocasion al tener la correspondencia dns/ip cacheada, ha sido instantea la resolucion, por lo que no hara falta llamar al servidor dns externo para resolverla, ahorrandonos ese tiempo de la consulta.

Aunque el tiempo de cada consulta no es muy grande (normalmente menos de 1 segundo), hay que tener en cuenta la gran cantidad de peticiones que se pueden realizar al cargar una pagina, con lo que el tiempo que nos podemos ahorrar es considerable. Ademas, el sistema dns no es tulizado solo por las paginas web, sino para actualizaciones del sistema, descarga de ficheros, etc. En resumen, en unos pocos pasos podemos acelerar considerablemente nuestra navegacion por internet.