Busindre » Blog Archive » Acelerar la velocidad de Internet bajo GNU/Linux / BSD con DNSmasq (Dns Cache)

Acelerar la velocidad de Internet bajo GNU/Linux / BSD con DNSmasq (Dns Cache)

July 4th, 2008 by Busindre

El programa Dnsmasq es un servidor minimalista de bajo consumo que funciona como "DNS Cache" y "DHCP" (Todo en uno). Se encargará entre otras cosas de memorizar las resoluciones de nombres de los sitios que visitamos, de esta forma las próximas solicitudes a esos DNS no es necesario que salgan a la Internet publica, re resolverán en local. Al ahorrarnos esas conexiones para preguntar por la ip del dominio a visitar, notaremos una navegación más fluida, podemos comprobarlo con la herramienta "dig" que muestra entre otras cosas, los tiempos de respuesta de los DNS, que usando DNSmasq debería ser "0" ya que la resolución en local es inmediata.

Otra funcionalidad de esta aplicación es usarlo como servidor DNS para la totalidad de nuestras redes, tanto caseras como de medianas oficina. Dnsmasq se apoya en el fichero /etc/resolv.conf para preguntar por las IP de los dominios que se le solicitan, una vez obtenida la respuesta de alguno de esos servidores listados en resolv.conf, la cachea, ya sea una solicitud realizada desde el propio equipo (Servidor) o de los clientes de la red que le usen como DNS. De ahí la importancia de tener buen listado de servidores DNS en el fichero resolv.conf.

Web del proyecto: http://www.thekelleys.org.uk/dnsmasq/doc.html

Descargar: http://www.thekelleys.org.uk/dnsmasq/

Compilar / Instalar

$ tar -zxvf dnsmasq-2.42.tar.gz
$ cd dnsmasq-2.42/
$ make
# make install ó checkinstall

Configuración / Opciones: Debemos editar el fichero /etc/dnsmasq.conf

listen-address=192.168.2.33 -> Interfaz donde escuchara las peticiones.

addn-hosts=/etc/banner_add_hosts -> Si queremos que el contenido de /etc/hosts pertenezca a su base de datos y así repartirlos a quien se lo colicite mediante peticiones DNS.

resolv-file=/etc/resolv.conf_2 -> Si tenemos el fichero /etc/resol.conf en otro path debemos indicarlo.

no-dhcp-interface=192.168.2.33 -> Si solo queremos usar su funcionalidad de DNS cache y NO la de servidor de DHCP.

cache-size=250 -> Tamaño de la cache usada por DNSmasq.

alias=91.200.143.20,192.168.2.33 -> Si se pregunta por un dominio que tiene esa primera dirección IP dada (91.200.143.20), su respuesta a ese dominio sera la segunda dirección (192.168.2.33).

NOTA: En el fichero de configuración encontraremos otras muchas opciones interesantes, también pueden ser "machacadas o completadas mediante la linea de comando, el cual ofrece las mismas opciones que el fichero de configuración dnsmasq.conf.

Para hacer uso de DNSmasq vamos a tener que poner la dirección ip de la opción "listen-address" en nuestro fichero /etc/resolv.conf si queremos disfrutar de el de forma local, pero podemos añadirlo como es lógico a cualquier otro ordenador de la red al que permitamos realice peticiones de DNS a DNSmasq.

Veamos una prueba de concepto, ejecutemos el comando dig sobre un dominio cualquiera para ver si DNSmasq está cacheando las resoluciones de nombres. Si ejecutamos el comando con un dominio no visitado anteriormente, fijémonos en que salida obtenemos:

$ dig www.fsf.org

; <<>> DiG 9.4.1 <<>> www.fsf.org
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61684
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.fsf.org.                   IN      A

;; ANSWER SECTION:
www.fsf.org.            266     IN      CNAME   fsf.org.
fsf.org.                266     IN      A       199.232.41.5

;; Query time: 48 msec <----------------------------------------------------
;; SERVER: 192.168.2.33#53(192.168.2.33)
;; WHEN: Thu Jul  3 03:55:33 2008
;; MSG SIZE  rcvd: 59

Ahora, de funcionar correctamente debería de haber cacheado el dominio fsf.org con la ip 99.232.41.5, volvemos a ejecutar el comando "dig" sobre el mismo dominio y veremos que la resolución tardo 0 segundos.

$ dig www.fsf.org                                               

; <<>> DiG 9.4.1 <<>> www.fsf.org
;; global options:  printcmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 62415
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;www.fsf.org.                   IN      A

;; ANSWER SECTION:
www.fsf.org.            265     IN      CNAME   fsf.org.
fsf.org.                265     IN      A       199.232.41.5

;; Query time: 0 msec  <----------------------------------------------------
;; SERVER: 192.168.2.33#53(192.168.2.33)
;; WHEN: Thu Jul  3 03:55:34 2008
;; MSG SIZE  rcvd: 66

Listado de DNS (/etc/resolv.conf)

nameserver 192.168.2.33 <--- dnsmasq
nameserver 80.58.61.254
nameserver 80.58.67.250
nameserver 80.58.0.33
nameserver 80.58.32.97
nameserver 208.67.222.222
nameserver 208.67.220.220
nameserver 86.109.99.129
nameserver 86.109.98.129
nameserver 62.151.2.8
nameserver 62.151.4.21
nameserver 195.130.224.18
nameserver 195.130.225.129
nameserver 194.179.1.100
nameserver 194.179.1.101
nameserver 192.168.1.1

Posted in Linux |

9 Responses

  1. Busindre » Blog Archive » Posibles causas de la lentitud de Internet con GNU/Linux Says:

    [...] o bien, debemos buscar en otro lado. Una aplicación que ayuda a tener una Internet más rápida es DNSmasq, encargada de cachear las respuestas de los DNS ahorrándonos consultarlas a posteriori. Es [...]

  2. sebas Says:

    Muy bueno tu artículo!
    Espero algún día tener los conocimientos que tu tienes, igualmente sigo estudiando :)
    Abrazo!
    Sebas

  3. Busindre Says:

    Gracias por el comentario, así da gusto escribir jejeje, se agradece. Estamos para lo que necesites, sigue estudiando,.. sabes que no hay otro camino ;D

    Saludos

  4. sebas Says:

    Estoy co la idea de dar el lpi, tienes algún consejo para darme capo? :D
    Abrazo!
    Sebas

  5. Busindre Says:

    Consejo: No seas seas vago y aplícate estudiando :D

    Saludos

  6. sebas Says:

    jeje, okis entendido totalmente :D
    sirve el concejo!
    Abrazo!
    sebas

  7. sebas Says:

    perdón *consejo quise decir :D
    Saludos!

  8. proxy_lainux Says:

    hola

    intente lo de dnsmasq pero tengo unas dudas...

    primero, la ip que colocaste (198.168.2.33) es la ip de tu maquina? o es una ip ke tu invevtaste?, porke no se si tambien tengo ke colocar mi ip o la ke esta aqui o no se si tambien funcione si coloco 127.0.0.1... espero me puedas decir porfavor

    tambien en la parte de alias=91.200.143.20,192.168.2.33, tengo ke colocar mi ip? o cualquiera o esta?, tambien me aparece diferente alias... 1.2.3.4.5.0.1.2.3.4.5.0.127.0.0.1, bueno algo asi es ke lo tuve ke kitar porke ya no podia entrar a la red, como ke desconfiguraba mi internet...

    espero me puedas ayudar, y felicidades por este blog esta muy completo y tiene muchas cosas interesantes... :)

    salu2

  9. Busindre Says:

    Puedes poner 127.0.0.1 para usarlo solo en tu ordenador.Sí.

    Antes de poner un alias debes entender para que sirve,..:

    alias=91.200.143.20,192.168.2.33

    Si se pregunta por un dominio (www.XXX.com) que tiene esa primera dirección IP como resultado (91.200.143.20), su respuesta a la ip de ese dominio (www.XXX.com) sera la segunda dirección, su alias, en el caso del ejemplo (192.168.2.33) y NO 91.200.143.20.

    Esto sirve para modificar un poco el servicio y ajustar ciertas resoluciones a determinadas IP como nosotros queramos, por ejemplo para engañar algunos usuarios y realizar phising de webs de bancos si ofrecemos el ordenador como servidor DNS. No es obligatorio que las uses si no lo necesitas, pero debes entender su funcionamiento.

    Saludos

Leave a Comment

Please note: Comment moderation is enabled and may delay your comment. There is no need to resubmit your comment.