Gravatar de Armonth

Cómo montarse un servidor DNS-Cache con dnsmasq

A raíz de Local DNS Cache for Faster Browsing he descubierto una pequeña joya llamada dnsmasq. No es la primera que monto un servidor DNS únicamente para realizar tareas de cache pero tener un BIND solamente para esto me parecía excesivo, veamos unos cuantos puntos para el profano:

Resumen cortito

  • ¿Qué es un servidor DNS?: Cuando entras en sigt.net o a cualquier sitio sin utilizar una dirección IP en realidad le estás diciendo al ordenador “Oye, pregunta al servidor DNS cual es la IP que corresponde a sigt.net“. Luego con ese dato se realiza la conexión.
  • ¿Y un cache DNS?: Normalmente la IP no cambia cada día, si entras 100 veces en un sitio ¿para qué preguntarle al servidor cada vez por la IP?, un cache evita eso: guarda un listado de las peticiones para no tener que estar preguntando cada vez.
  • ¿Mejora en algo la velocidad?: La latencia causada por preguntar al servidor DNS por cada sitio desaparece si ya se tiene el dato en local.
  • ¿Alguna otra ventaja?: Sí, si tu servidor DNS se cae puedes seguir entrando en los sitios que anteriormente ya habías entrado.

Cómo hacerlo

El manual del enlace es muy claro, te especifica cada opción para que sirve, etc., pero realmente la mayoría no tiene porque tocar esas opciones, con hacer estas tres acciones sobra (tanto en Ubuntu, Debian o cualquier distribución si cambiamos el apt-get por el método de instalación respectivo):

  1. Instalar dnsmasq (apt-get install dnsmasq).
  2. Copiar /etc/resolv.conf como /etc/resolv.dnsmasq.conf.
  3. Editar /etc/resolv.conf añadiendo como primera línea:
 nameserver 127.0.0.1

Y con esto ya debería funcionar, utilizaremos dig para comprobarlo… er… esto… ¿no aparece el programa dig? pues instala el programa dnsutils.

 armonth@soul:~ dig sigt.net | grep Query
   ;; Query time: 89 msec

 armonth@soul:~ dig sigt.net | grep Query
   ;; Query time: 0 msec

Dig hace una consulta DNS y entre otros parámetros ofrece el de “Query time” que informa de cuanto tiempo ha tardado en saber la IP, la primera vez al no tenerla guardada pueden pasar 50ms, 100ms, 200ms, dependiendo de la latencia de tu conexión, la segunda vez ya tiene el dato y baja a entre 0 y 2ms +/-.

Esto en principio es recomendado para todo el mundo pero en la práctica es casi obligatorio para usuarios de 56k para mejorar un poco la ya de por si pésima calidad de la línea.

21 Comentarios (feed)

  1. Gravatar de Benet J. Benet J. nos comenta:

    Buenas!!
    Buen apunte, pero hay un typo, en el ejemplo de como funciona el comando dig lo escribes digg.
    nada solo eso. Ya tengo trabajo que hacer.
    Ales, buenos dias!!

    Lunes, 7 de Agosto/2006 @ 8:57

  2. Gravatar de Armonth Armonth nos comenta:

    Sí gracias, me pasa a menudo, y no sé por qué ya que con dos g (la famosa web) no la visito nunca…

    Lunes, 7 de Agosto/2006 @ 15:49

  3. Gravatar de Selu Selu nos comenta:

    No hace falta BIND, si tienes un servidor DNS para un dominio con maradns haces las dos cosas en un santiamén.

    Jueves, 31 de Agosto/2006 @ 13:08

  4. Gravatar de Jose Jose nos comenta:

    Muy interesante, lo probare. Solo me queda dos dudas, ¿donde se almacena esta informacion? y ¿como se limpia este cache?
    Agradeceria una respuesta.

    Jueves, 31 de Agosto/2006 @ 18:22

  5. Gravatar de K4RL05 K4RL05 nos comenta:

    no seria mejor poner en /etc/resolv.conf

    nameserver 127.0.0.1
    #y poner tb el dns actual:
    nameserver 192.168.0.1

    Por si acaso te falla el local?

    Jueves, 31 de Agosto/2006 @ 19:10

  6. Gravatar de Armonth Armonth nos comenta:

    K4RL05:

    añadiendo “como primera línea”

    Es decir, se debe mantener las DNS de tu ISP debajo de la de 127.0.0.1

    Jueves, 31 de Agosto/2006 @ 19:58

  7. Gravatar de K4RL05 K4RL05 nos comenta:

    Cierto cierto, fallo mio :)

    Miércoles, 6 de Septiembre/2006 @ 2:15

  8. Gravatar de y en windos? y en windos? nos comenta:

    para winbugs he visto que hay un servicio llamado cliente DNS que viene inactivo por default, realmente funciona?.
    Tambien está el TreeWalk que solo se instala en una pc y puede dar servicio a una LAN, alguien lo ha probado?

    Jueves, 9 de Noviembre/2006 @ 22:09

  9. Gravatar de Armonth Armonth nos comenta:

    No sé mucho pero en Windows XP hacen un cache de DNS automáticamente (vamos, viene de serie)…

    Jueves, 9 de Noviembre/2006 @ 23:43

  10. Gravatar de damian:) damian:) nos comenta:

    gracias por la data. muy util en mi caso pero tengo una pregunta muy importante.
    tengo instalado bind9 puedo correr e instalar simultáneamente dnsmasq
    sin que me genere conflictos y bind siga resolviendo sus dominios internos de manera independiente. ?

    mas cortito: me interesa el tema “cache” de dns y acelerar las resoluciones. gracias :)

    Lunes, 12 de Febrero/2007 @ 9:03

  11. Gravatar de Armonth Armonth nos comenta:

    Supongo que poderse se puede pero no es buena idea por los conflictos que pueden surgir y que tú dices…

    Ahora bien, bind9 puede funcionar perfectamente como DNS-cache y si no recuerdo mal lo explica en su documentación oficial, te recomiendo utilizar dnsmasq si lo que quieres es un dns-cache y bind9 si necesitas “algo más”…

    Lunes, 12 de Febrero/2007 @ 11:38

  12. Gravatar de Carlos Chavarriga Carlos Chavarriga nos comenta:

    Hola, quisiera hacerles una consulta, este servidor dns me permitiría encontrar mi maquina desde cualquier parte del mundo al asignarle un nombre como por ejemplo www.mimaquina.cl. Tengo ip dinamica a traves de una conexión PPPoA de telefonica Chile. Si no, alguien me puede ayudar con información sobre como podría hacer que vean mi pagina web almacenada en mi maquina desde cualquier parte del mundo.
    Por sus respuestas gracias.

    Domingo, 8 de Abril/2007 @ 8:16

  13. Gravatar de Armonth Armonth nos comenta:

    Tendrás que usar un servicio rollo dyndns, es un software que le dice en todo momento a dyndns tu IP y con ello actualiza un subdominio… rediriges el dominio a tu subdominio y listo.

    Aunque lo veo un poco chapuzas… es mejor pillar un hosting con ip fija y punto…

    Domingo, 8 de Abril/2007 @ 18:42

  14. Gravatar de Pablo J. Pablo J. nos comenta:

    Hola tengo una compu con Ubuntu que hace de proxy (Squid) y firewall. Nunca habia instalado un servidor dns cache porque me parecia muy dificil configurar Bind.

    Pero… despues de leer tu entrada, en 10 min. tengo funcionando dnsmasq a la perfeccion!!!

    Gracias y exitos.

    Desde argentina,

    pablo

    Jueves, 26 de Abril/2007 @ 20:30

  15. Gravatar de Marc Marc nos comenta:

    Hola muy buenas!
    He instalado dnsmasq en ubuntu 7.01 y despues de instalarlo lo estube probando y funcionaba perfectamente.

    Tengo un ordenador con windows XP en la misma red y configuré las DNS con la ip del servidor DNS (192.168.1.129) y borre las DNS de de la compañia de ADSL.

    Lo estube probando y funcionaba perfectamente.

    Apagué los ordenadores y al dia siguiente cuando lo volví a probar ya no funcionaba. He hecho las pruebas con dig en el server y funciona, aunque parece que el caché se ha borrado porque tenia que volver a buscar al principio (Latencia de 51 ms con google.com), pero a la segunda ya daba la respuesta bien (0 ms).
    Pero desde el ordenador con WinXP no puedo acceder a internet, el server no funciona.

    Alguien sabe que puede pasar y como puede solucionarse?

    Si alguien puede le agradeceria que me conteste en mi dirección de correo:
    kometealosrikos@gmail.com

    Muchas gracias!!

    Lunes, 7 de Mayo/2007 @ 16:07

  16. Gravatar de Armonth Armonth nos comenta:

    Marc mirate el fichero de configuración que tiene para ver durante cuánto dura el cache, por defecto (yo lo tengo así para evitarme problemas) se borra en cada reinicio…

    Lunes, 7 de Mayo/2007 @ 20:01

  17. Gravatar de Mark Mark nos comenta:

    Hola Armonth.

    Antes que nada darte las gracias por responder.
    He estado mirandome más el archivo de configuración y si, tengo configurado para que se borre el caché al reinicio.
    Aunque de todas formas aún así el server tendria que funcionar, sin embargo no consigo acceder internet desde este ordenador en el que estoy escribiendo ahora solo con la DNS del servidor. Para poder conectar tengo que poner la DNS de jazztel como he hecho ahora.
    Y lo estraño es eso, que al principio si que funcionaba, pero ahora no hay manera. Firefox se queda enganchado buscando la pagina de inicio y da error.

    Puede tener algo que ver que trabeje en red de windows con grupo de trabajo y no con dominio?

    Esque me interesa configurar el server y que funcione ya que lo necesito para uno de los apartados del proyecto final de los estudios que estoy cursando y que tengo que entregr en 15 dias

    Gracias, hasta pronto!!

    Martes, 8 de Mayo/2007 @ 16:12

  18. Gravatar de Armonth Armonth nos comenta:

    Mark, el servidor DNS-cache es eso… un cache. Uses dnsmasq o bind (o cualquier otro) no puede “inventarse” los datos, necesita otro servidor DNS.

    Si antes te funcionaba es porque debe haber quedado en memoria la DNS (raro, firefox que yo sepa no hace cache de dns pero podría ser).

    Para ello lo que se suele hacer es poner en el /etc/resolv.conf primero el servidor DNS y luego el DNS del ISP o un DNS-root. Si tu servidor DNS tiene los datos los usa, si no los pilla de un DNS “normal” (con su latencia incluida)…

    Un saludo

    Martes, 8 de Mayo/2007 @ 16:55

  19. Gravatar de Mark Mark nos comenta:

    sisi, eso ya lo se. En el resolv.conf están también las antiguas DNS, haciendo dig resuelve cualquier dirección de internet.

    Igual es que no me he hecho entender bien. jejeje

    el ordenador con ubuntu y dnsmasq funciona bien, se conecta a internet y con el puedo navegar perfectamente.
    Pero por lo que yo tengo entendido un servidor de DNS lo puedes configurar como servidor de DNS de todos los ordenadores de la red. Pues ahí viene el problema.

    El primer dia fui a otro ordenador de la red con windows XP en el cual elimine las DNS de Jazztel y añadi la IP del servidor de DNS, de forma que en ese ordenador la unica direccin DNS es la IP del ordenador servidor (el servidor sigue teniendo las DNS antiguas de jazztel más la linea añadida al principio nameserver 127.0.0.1)
    Ese dia navegué desde el ordenador con windows i el servidor actualizaba el caché con las pàginas que visitaba con el cliente.

    Pero ahora desdel cliente no puedo navegar ni nada,, es como si el servidor no diera respuesta.

    no se que puede ser. Las pruebas que he realizado en el servidor en principio indican que funciona todo bien.

    Perdona por la insistencia, jejeje pero esque cuando me pasan estas cosas no paro hasta que lo consigo.

    Gracias

    Martes, 8 de Mayo/2007 @ 17:46

  20. Gravatar de Armonth Armonth nos comenta:

    Pues realmente no lo sé, pero presupongo que el dnsmasq esta hecho para hacer de cache del ordenador y lo que pasa es que el primer día abriste las webs desde Ubuntu, se quedaron en cache y luego desde Windows lo usaste desde el cache…

    Quizá al acceder al cache desde Windows al no encontrar el “record” de una página el dnsmasq simplemente se limita a contestar “nones” y a pasar de buscar en un dns-root…

    O quizá el primer día al hacer el cambio en Windows no se propagó (ergo, seguía usando las DNS de Jazztel) y cuando reiniciaste ya empezó a fallar… Vamos, sinceramente no lo sé.

    PD: Aunque dudo que sea solamente por asegurarme: supongo que la IP para el DNS en el Windows NO es 127.0.0.1 si no la IP en LAn respectiva a la máquina con Ubuntu ¿no?.

    Martes, 8 de Mayo/2007 @ 18:56

  21. Gravatar de Marc Marc nos comenta:

    si, tengo la IP respectiva a la máquina de ubuntu (192.168.1.129)

    No se seguro que sera alguna tonteria del windows de los cojones.

    Bueno muchas gracias de todos modos!! seguire con mi busqueda.

    Salud!!

    Martes, 8 de Mayo/2007 @ 19:23

Comentarios cerrados