dnsmasq como servidor local de DNS

Ayer hice un pequeño experimento y ha funcionando bastante bien hasta el momento, configuré dnsmasq como un pequeño servidor local de direcciones o DNS.

La mecánica es más o menos la siguiente. Si dnsmasq no sabe la dirección IP de un servidor entonces se la pregunta a uno de los DNS de Google (8.8.8.8 o 8.8.4.4), pero si ya la conoce entonces la sirve directamente sin necesidad de ir a internet con un tiempo de respuesta inmediato y eso ayuda a mejorar el tiempo en el que se resuelven algunas consultas.

Anteriormente había hecho algo similar con pdnsd (véase Cache DNS) pero era cuando usaba Ubuntu o sea que ya tiene rato de eso.

Dnsmasq es un servidor ligero que aparte de proporcionar el servicio de DNS, también sirve como un servidor DHCP y TFTP, pero estos dos últimos no los vamos a tocar en este artículo.

Instalar dnsmasq

Primero lo primero, para instalar dnsmasq en Manjaro recurrimos a nuestro ya archifamoso y conocido manejador de paquetes pacman

sudo pacman -S dnsmasq

Configurar el servicio

Para configurar el servicio se tiene que editar el archivo /etc/dnsmasq.conf. El archivo esta muy comentado así que me voy a centrar en lo más importante.

listen-address=127.0.0.1
resolv-file=/etc/resolv.dnsmasq.conf
cache-size=1000
no-poll
  • listen-address se establece a 127.0.0.1 (o localhost), es para que acepte peticiones de DNS de forma local.
  • resolv-file En este archivo voy a especificar los DNS externos, es decir, si la dirección no esta en el servidor local la buscará en los servidores que indique en este archivo.
  • cache-size Lo establecí en 1000 que es un valor algo conservador, pero si cree que es muy pequeño pueden ser 2000 o 3000 direcciones que almacenará de manera local.

Estos 3 valores son los más importantes. no-poll evita que se este revisando continuamente posibles cambios en el archivo /etc/resolv.conf o en el archivo /etc/resolv.dnsmasq.conf que establecimos con el parámetro resolv-file.

resolv.dnsmasq.conf

El contenido del archivo /etc/resolv.dnsmasq.conf es muy simple:

# Servidores DNS de Google
nameserver 8.8.8.8
nameserver 8.8.4.4

En este caso puse los de Google, pero pueden ser los de OpenDNS, los de su proveedor de internet, los que usten elija.

Para aplicar los cambios que hemos hecho es necesario reiniciar el servicio:

sudo systemctl restart dnsmasq

Configurar el equipo

Ahora le tengo que decir a mi equipo que utilice mi servidor de DNS en lugar de los de mi proveedor de internet.

Uso Cinnamon, muy conocido por los usuarios de Linux Mint, en mi caso reviso las Preferencias de red y abro la pestaña que dice Ajustes de IPv4.

Preferencias de red en Cinnamon

  1. En donde dice Método cambio a Sólo direcciones automáticas.
  2. Cambio la opción que dice Servidores DNS a 127.0.0.1 o sea localhost o sea mi propio equipo.

Editar las preferencias de red

Comprobar si funciona

Para saber si funciona vamos a usar el comando dig y revisamos el tiempo de respuesta:

dig google.com | grep "Query time"
;; Query time: 71 msec

La siguiente vez que lo ejecutemos

dig google.com | grep "Query time"
;; Query time: 0 msec

El tiempo de respuesta es de 0 msec ¡Vientos huracanados!.

Ahora revisen si pueden navegar por internet, lo más notorio, por ejemplo, es que Chrome muestra un circulito cuando carga una página, primero en sentido contrario a las manecillas del reloj (buscando la página) y luego en sentido de las manecillas del reloj (cargando la página), bueno el tiempo de búsqueda se reduce notablemente con este cambio. Tengan en cuenta que una página puede hacer consultas a muchos dominios mientras se carga.

Activar dnsmasq desde el arranque

Si todo esta bien, llegó la hora de aplicar estos cambios desde el arranque del equipo. En Manjaro/Arch es con el siguiente comando:

sudo systemctl enable dnsmasq

Conclusiones

Quizas con estos cambios no gane mucho tiempo, pero las notificaciones de Google Plus aparecen mucho más rápido y ya saben lo que dicen “Ciclo ahorrado ciclo ganado”.

Referencias

Trabajando con ipCop

Platicando con Jorge salio a colación ipCop, en mi mente curiosa estaba investigando Censornet como una mejor alternativa para compartir el Internet (y aumentar la seguridad) en mi red interna. Pues hace 5 días puse manos a la obra e instalé ipCop en una computadora Pentium IV con 256 MB de memoria y un disco duro de 6.4 GB.

La instalación duró escasos 15 minutos y eso porque me detenía para leer con calma las pantallas, no vaya ser que la fuera a regar en algo.

pantalla principal.jpg

Trafico de red.jpg

ipCop tiene muchos addons que aumentan las características del sistema base.

Uno de ellos es CopFilter, y el motivo principal para instalarlo fue buscar una alternativa antispam (ves Levitha, así es como se combate el spam 😉 ). Usa una mezcla de SpamAssasin y ClamAV para filtrar el correo electrónico que llega a mi red y lo mejor es que lo hace de manera transparente, no tengo que cambiar nada en los programas de correo electrónico.

Hoy en la mañana pude ver con gusto como hay un correo en cuarentena porque fue catalogado como phishing.

Correos en cuarentena.jpg

Si estan interesados en ipCop les recomiendo que primero le den una hojeada a estos tutoriales.