Acelear conexiones en Linux (DNS-Cache)
Siempre que entramos en cualquier sitio web utilizando direcciones del estilo www.pagina.com en realidad se le dice al ordenador ordenador que pregunte al servidor DNS cuál es la IP correspondiente al dominio (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



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
De memoria te digo que se ponen varios dns separandolos con coma. Saludos.
Gracias por el comentario, nunca me había parado a pensar en que se podía hacer de esa manera. Ahora actualizaré la entrada.