Dnsmasq: Configuración de DNS y DHCP en Linux

En esta entrada vamos a hablar sobre dnsmasq, un servicio ligero que actúa como servidor de DNS, DHCP y TFTP,  ideal para redes pequeñas o medianas. Veremos cómo instalarlo en Ubuntu 24.04, configurarlo para que funcione como servidor DNS y DHCP, y un ejemplo práctico para que puedas ponerlo en marcha en tu entorno.

Si te interesan los servidores DNS más avanzados, en la web ya hemos hablado de BIND, el clásico de los servidores DNS, en un artículo donde explicamos cómo configurarlo en CentOS 7:
Crear un servidor DNS con CentOS 7. Sin embargo, si buscas algo más ligero y fácil de implementar, dnsmasq es la alternativa perfecta.

Como nota anecdótica os explico que conocí este servicio a raíz del montaje que hice en mi laboratorio ultrasecreto :-), de un entorno con OKD, la versión comunitaria de OpenShift. Tema del que quizás hable más adelante. Ya dicen eso de que la necesidad aviva el ingenio.

Bueno, como me habéis caído bien os voy a contar mi secreto, desde hace tiempo utilizo los servicios de Clouding.io, una empresa que ofrece VPS, es decir, servidores privados virtuales, a un precio muy competitivo. Así que ya sabéis.

Logo de dnsmasq

¿Qué es dnsmasq?

Dnsmasq es una herramienta sencilla pero poderosa, diseñada para proporcionar servicios de red esenciales.
Entre sus características más destacadas encontramos:

  • Resolución de nombres DNS rápida y eficiente.
  • Configuración de un servidor DHCP básico para asignar direcciones IP automáticamente.
  • Compatibilidad con redes locales y NAT.

Su configuración es simple y su consumo de recursos es bajo, lo que lo hace perfecto para routers domésticos, laboratorios de prueba, e incluso redes pequeñas en producción.

Instalación de dnsmasq en Ubuntu 22.04

El primer paso será instalar dnsmasq. Para ello, sigue estos pasos:

sudo apt update
sudo apt install dnsmasq -y

Una vez instalado, dnsmasq estará habilitado y en ejecución. Podemos verificarlo con:

sudo systemctl status dnsmasq

Configuración de dnsmasq

La configuración de dnsmasq se encuentra en el archivo /etc/dnsmasq.conf. Este archivo contiene una gran cantidad de opciones comentadas, lo que facilita su personalización. Vamos a configurar dnsmasq para que funcione como servidor DHCP y DNS en una red local.

1. Habilitar el servidor DHCP:

Edita el archivo /etc/dnsmasq.conf y añade las siguientes líneas al final, si nuestra red es 192.168.1.0/24, si no debemos adaptar la configuración a nuestras necesidades.

# Configuración del servidor DHCP
dhcp-range=192.168.1.100,192.168.1.200,12h

2. Configurar el servidor DNS:

Dnsmasq actúa como un servidor DNS local. Si queremos resolver nombres para equipos en la red, podemos añadirlos
en el archivo /etc/hosts. Por ejemplo:

192.168.1.10    servidor.local
192.168.1.11    impresora.local

3. Reiniciar el servicio:

Después de hacer cambios, reinicia el servicio para aplicar la configuración:

sudo systemctl restart dnsmasq

Ejemplo práctico: Servidor DHCP y DNS local

Imaginemos que queremos crear una red local para un laboratorio con las siguientes características:

  • Rango DHCP: 192.168.1.50 – 192.168.1.100.
  • IP del servidor dnsmasq: 192.168.1.1.
  • Nombres personalizados para los equipos.

Configura el archivo /etc/dnsmasq.conf de esta manera:

# Dirección del servidor DNS (puede ser tu router u otro servicio DNS)
server=8.8.8.8
 
# Configuración del DHCP
dhcp-range=192.168.1.50,192.168.1.100,24h
dhcp-option=3,192.168.1.1  # Puerta de enlace predeterminada
dhcp-option=6,192.168.1.1  # Servidor DNS local
 
# Resolución de nombres personalizados
address=/laboratorio.local/192.168.1.1

Reinicia dnsmasq para aplicar los cambios:

sudo systemctl restart dnsmasq

Verificación

Para comprobar que todo funciona correctamente:

  • Conéctate a la red desde un cliente y verifica la IP asignada con ip addr.
  • Prueba la resolución de nombres:
ping laboratorio.local

Conclusión

Dnsmasq es una solución eficiente y fácil de configurar para gestionar el DNS y DHCP de tu red local. Con este tutorial, hemos visto cómo instalarlo en Ubuntu 22.04 y cómo configurarlo para que sirva como un servidor básico de red. Si buscas una solución más avanzada, no olvides revisar la entrada sobre BIND en CentOS 7.

¿Utilizas dnsmasq en tus proyectos? ¡Cuéntame tu experiencia en los comentarios!

Para saber más: Documentación oficial de Dnsmasq