Acelear conexiones en Linux (DNS-Cache)

Siempre que entramos en cualquier sitio web utilizando direcciones del estilo http://www.pagina.com en realidad se le dice al ordenador ordenador que pregunte al servidor DNS cuál es la IP correspondiente al dominio (http://www.pagina.com), luego con este dato se realiza la conexión.

Normalmente las IP’s no cambian cada día, y si entramos muchas veces en un sitio ¿de qué nos sirve preguntarle al servidor cada vez por la IP?, eso es lo que vamos a evitar. Para ello crearemos un listado de las peticiones para no tener que estar preguntando cada vez. De esta manera la latencia causada al preguntar al DNS por cada sitio desaparece una vez ya tenemos el dato en local. Otra ventaja es que si nuestro servidor DNS cae podemos seguir entrando en los sitios que anteriormente ya habíamos visitado.

En primer lugar instalaremos el paquete dnsmasq con:

$ sudo apt-get install dnsmasq

Después copiaremos el archivo /etc/resolv.conf por si acaso.

$ sudo cp /etc/resolv.conf /etc/resolv.conf.dnsmasq

Ahora lo editamos para añadir el DNS local:

$ sudo gedit /etc/resolv.conf

Añadimos la siguiente linea al principio del archivo:

nameserver 127.0.0.1

Podemos añadir más DNS al archivo añadiendo nameserver IP, de esta manera si cae uno preguntaremos al siguiente.

Si queremos comprobar su funcionamiento solo tenemos que hacer:

$ dig sekueladigital.wordpress.com | grep Query

;; Query time: 149 msec

La siguiente vez nos devolverá:

$ dig sekueladigital.wordpress.com | grep Query

;; Query time: 0 msec

NOTA: (actualizado más abajo) Si utilizamos NetworkManager, tendremos el problema de que este se cargará el archivo cada vez que renovemos la dirección IP por DHCP. Para evitarlo podemos substituir el archivo creado automáticamente por el nuestro cada cierto tiempo. Para ello creamos /etc/resolv.conf.local con la configuración que queremos. Después ejecutamos la siguiente instrucción para editar el cron del sistema:

$ sudo crontab -e

y añadimos la siguiente linea al final del archivo:

*/5 * * * * cp /etc/resolv.conf.local /etc/resolv.conf

ACTUALIZACIÓN: Tal y como comenta Ignorante en los comentarios se pueden configurar varios servidores de DNS con NetworkManager. Esta opción es más recomendada ya que en la descrita más arriba (modificando /etc/resolv.conf) podemos llegar a pasar unos minutos sin servidor DNS.
Para configurarlo hacemos clic derecho sobre el icono de NertworkManager (System Tray) y escogemos editar las conexiones. Para cada una de las interfaces de red, tanto cableadas como inalámbricas, las editamos y  en la pestaña de Ajustes IPv4 seleccionamos como método Sólo direcciones automáticas (DHCP), después en el apartado de servidores DNS introducimos las IP’s que vamos a utilizar separadas por comas. Ej: 127.0.0.1, 208.67.222.222, 208.67.220.220

Anuncios
  1. La asignación del dns se puede hacer desde networkmanager sin tocar el archivo resolv.conf. Es más, es la mejor forma.

    • Tienes razón Ignorante (sin animo de ofender XD), pero para ser sincero este “truquito” tenia intención de ir dirigido a todo tipo de GNU/Linux, sin tener en cuenta si se usa NetworkManager o no. También hay que decir que NetworkManager sólo te deja definir un DNS (por lo menos hasta donde yo se, perdona si me equivoco) y lo más apropiado sería tener un resolf.conf similar a esto:
      nameserver 127.0.0.1
      nameserver 208.67.222.222
      nameserver 208.67.220.220

  2. De memoria te digo que se ponen varios dns separandolos con coma. Saludos.

      • Sekuela Digital
      • 28/01/10

      Gracias por el comentario, nunca me había parado a pensar en que se podía hacer de esa manera. Ahora actualizaré la entrada.

  3. It’s appropriate time to make a few plans for the longer term and it is time to be happy. I have read this post and if I may just I desire to counsel you some interesting things or tips. Perhaps you could write next articles regarding this article. I desire to learn even more issues about it!

  1. 21/05/14
  2. 4/06/16

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: