DNS local · 13 min read · Sep 08, 2025
Cómo configurar DNS local con Dnsmasq en Debian 12

Dnsmasq es un servicio de red pequeño y ligero para tu entorno local (LAN). Proporciona servicios de red como DNS, DHCP y TFTP. Dnsmasq se puede utilizar como un reenvío DNS, servidor DNS recursivo y sistema de caché DNS. También carga contenidos DNS desde el archivo /etc/hosts, lo que te permite configurar nombres de dominio para nombres de host locales.
Dnsmasq está diseñado para ser ligero con una pequeña huella de memoria, adecuado para dispositivos de bajos recursos como enrutadores y cortafuegos. Dnsmasq se puede ejecutar en Linux, BSD, Android y macOS.
Este tutorial instalará y configurará un servidor DNS local con Dnsmasq en un servidor Debian 12. Configuraremos un servidor DNS local que se puede utilizar para tu red local, añadiendo nombres de dominio locales, habilitando la caché DNS y habilitando el servidor DHCP a través de Dnsmasq. También aprenderás cómo configurar y añadir una máquina cliente para utilizar el servidor DNS local. Una vez que hayas completado este tutorial, podrás acceder a todas tus aplicaciones a través del nombre de dominio local, y tus solicitudes DNS serán más rápidas porque has habilitado la caché DNS.
Requisitos previos
Antes de comenzar, debes tener los siguientes requisitos para completar este tutorial:
- Un servidor Debian 12 - Este ejemplo utiliza un servidor Debian con el nombre de host ‘ dnsmasq-server ‘ y la dirección IP 192.168.5.20.
- Un usuario no root con privilegios de administrador sudo/root.
Para la máquina cliente, puedes usar cualquier distribución de Linux porque la configuración DNS es similar para cada distribución.
Preparando el sistema
En este paso, prepararás tu servidor Debian que se utilizará como el servidor DNS local. Actualizarás el índice de paquetes, detendrás y deshabilitarás el servicio ‘ systemd-resolved ‘, luego crearás y definirás la configuración del resolutor DNS estático a través del archivo ‘ /etc/resolv.conf ‘.
En el sistema Debian, el resolutor DNS es gestionado por el servicio ‘systemd-resolved’, que proporciona resolución de nombres de red a través de la interfaz D-BUS. Para configurar el software del servidor DNS como Dnsmasq, debes deshabilitar el servicio ‘ systemd-resolved ‘.
Antes de comenzar, ejecuta el siguiente comando apt para actualizar y refrescar tu índice de paquetes Debian.
sudo apt updateA continuación, ejecuta el siguiente comando para detener y deshabilitar el servicio ‘ systemd-resolved ‘. En el sistema Debian, la configuración DNS es gestionada por el NetworkManager y el servicio systemd-resolved.
sudo systemctl disable --now systemd-resolved
sudo systemctl stop systemd-resolvedElimina el archivo de enlace de configuración del resolutor DNS ‘/etc/resolv.conf’ a través del siguiente comando.
sudo unlink /etc/resolv.confDespués de eso, crea un nuevo archivo de configuración del resolutor DNS ‘ /etc/resolv.conf ‘ utilizando el siguiente comando del editor nano.
sudo nano /etc/resolv.confAgrega las siguientes líneas al archivo. Esto añadirá los DNS públicos de Cloudflare y Google como el resolutor para tu servidor Debian.
nameserver 1.1.1.1
nameserver 8.8.8.8Guarda el archivo y sal del editor cuando hayas terminado. Ahora pasa a los siguientes pasos para la instalación y configuración de Dnsmasq.

Instalando y configurando Dnsmasq
En este paso, instalarás y configurarás el servidor DNS local utilizando Dnsmasq. Configurarás Dnsmasq para que se ejecute en el puerto DNS predeterminado 53 y la dirección IP interna ‘ 192.168.5.20 ‘. También definirás el nombre de dominio para el servicio Dnsmasq, habilitarás la caché DNS y, por último, habilitarás el servidor DHCP a través de Dnsmasq.
El paquete ‘ dnsmasq ‘ predeterminado está disponible en el repositorio de Debian. Ejecuta el siguiente comando apt para instalar el paquete Dnsmasq.
sudo apt install dnsmasqCuando se te pida, ingresa y para confirmar y presiona ENTER para continuar.

Después de que Dnsmasq esté instalado, ejecuta el siguiente comando systemctl para verificar el servicio ‘dnsmasq’ y asegurarte de que el servicio esté habilitado y en ejecución.
sudo systemctl is-enabled dnsmasq
sudo systemctl status dnsmasqRecibirás una salida similar a esta - El servicio dnsmasq está habilitado y se ejecutará automáticamente al iniciar. Y el estado actual del servicio dnsmasq está en ejecución.

Con Dnsmasq ejecutándose en tu sistema Debian, a continuación comenzarás la configuración de Dnsmasq a través del archivo ‘/etc/dnsmasq.conf ‘.
Para comenzar, ejecuta el siguiente comando para hacer una copia de seguridad del archivo de configuración predeterminado de Dnsmasq.
sudo cp /etc/dnsmasq.conf{,.orig}Ahora abre el archivo de configuración de Dnsmasq ‘ /etc/dnsmasq.conf ‘ utilizando el siguiente comando del editor nano.
sudo nano /etc/dnsmasq.confAgrega las siguientes líneas al archivo.
# dnsmasq ejecutándose en el puerto UDP 53
# con dirección IP localhost y 192.168.5.20
# y la interfaz de red eth1
port=53
listen-address=127.0.0.1,192.168.5.20
interface=eth1
# deshabilitar el reenvío de direcciones no enrutadas
# deshabilitar el reenvío de nombres sin el dominio principal.com
# agregar automáticamente la parte del dominio a nombres simples
# deshabilitar que dnsmasq lea el archivo /etc/resolv.conf
domain-needed
bogus-priv
expand-hosts
no-resolv
# servidor DNS ascendente para nombres de dominio no locales
# utilizando DNS público de Cloudflare y Google
server=1.1.1.1
server=8.8.8.8
# definir el dominio para dnsmasq
domain=howtoforge.local
address=/howtoforge.local/192.168.5.20
# habilitar caché DNS y ajustar tamaño de caché
cache-size=1000
# habilitar DHCP a través de dnsmasq
# definir archivo de base de datos de arrendamiento
# hacer que el servidor DHCP sea autoritativo
dhcp-range=192.168.5.80,192.168.5.150,12h
dhcp-leasefile=/var/lib/misc/dnsmasq.leases
dhcp-authoritativeGuarda el archivo y cierra el editor cuando hayas terminado.
Opciones detalladas que estarás utilizando para Dnsmasq:
- port: qué puerto utilizarás para ejecutar Dnsmasq.
- listen-address: qué dirección IP utilizarás para ejecutar Dnsmasq. Puedes usar múltiples direcciones IP.
- interface: qué interfaz se vinculará y ejecutará Dnsmasq.
- domain-needed: deshabilitar el reenvío de nombres sin la dirección del dominio principal. Puedes acceder como ‘ mysql1 ‘ host a menos que des una dirección completa con el dominio local como ‘ mysql1.howtoforge.local ‘.
- bogus-priv: deshabilitar el reenvío para direcciones no enrutadas.
- expand-hosts: agregar automáticamente la parte del dominio local a nombres simples.
- no-resolv: ignorar el archivo ‘/etc/resolv.conf’ en el servidor.
- server: definir el servidor DNS ascendente que utilizarás para direcciones o dominios no locales. Este ejemplo utiliza el servidor DNS público de Cloudflare y Google.
- domain: definir el nombre de dominio para el servidor Dnsmasq. En este ejemplo, el servidor Dnsmasq obtendrá el dominio local howtoforge.local.
- address: definir qué dirección IP para el nombre de dominio en Dnsmasq. En este ejemplo, el dominio howtoforge.local se resolverá a la dirección IP 192.168.5.20.
- cache-size: habilitar caché DNS en Dnsmasq. Asegúrate de ajustar el tamaño, lo que aumenta el rendimiento y la velocidad.
- dhcp-range: habilitar el servidor DHCP a través de Dnsmasq. Ajusta el rango de direcciones IP para tu red y el tiempo de arrendamiento.
- dhcp-leasefile: definir el archivo que se utilizará para almacenar el arrendamiento DHCP.
- dhcp-authoritative: hacer que el servidor DHCP sea autoritativo.

A continuación, abre el archivo de configuración ‘/etc/hosts’ utilizando el siguiente comando del editor nano. Puedes definir el subdominio para tus aplicaciones internas y se configurará automáticamente con el nombre de dominio Dnsmasq ‘ howtoforge.local ‘.
sudo nano /etc/hostsAgrega las siguientes líneas al archivo. En este ejemplo, definirás los subdominios app1, db1 y files. El dominio raíz para estos subdominios es el propio servidor Dnsmasq ‘ howtoforge.local ‘.
Con las siguientes líneas, ‘ app1.howtoforge.local ‘ se resolverá a la dirección IP ‘ 192.168.5.10 ‘, el subdominio ‘ db1.howtoforge.local ‘ se apuntará a la dirección IP del servidor ‘ 192.168.5.25 ‘, y el subdominio ‘files.howtoforge.local ‘ se apuntará a la dirección IP ‘192.168.5.50 ‘.
192.168.5.10 app1
192.168.5.25 db1
192.168.5.50 files Guarda el archivo y sal del editor cuando hayas terminado.
A continuación, abre el archivo ‘ /etc/resolv.conf ‘ con el siguiente comando del editor nano y agrega la dirección IP del servidor Dnsmasq como ‘ nameserver ‘.
sudo nano /etc/resolv.confAgrega las siguientes líneas en la parte superior del archivo. Asegúrate de cambiar la dirección IP por la dirección IP de tu servidor Dnsmasq.
nameserver 127.0.0.1
nameserver 192.168.5.20Guarda el archivo y sal del editor cuando hayas terminado.
Ahora ejecuta el comando ‘dnsmasq’ a continuación para verificar la configuración de Dnsmasq y asegurarte de que tienes el formato de configuración correcto. Deberías recibir una salida como ‘ dnsmasq - syntax check OK ‘.
sudo dnsmasq --testPor último, ejecuta el siguiente comando systemctl para reiniciar el servicio ‘ dnsmasq’ y aplicar los cambios.
sudo systemctl restart dnsmasq
En este punto, has terminado la configuración del servidor DNS local a través de Dnsmasq en el sistema Debian. También has configurado el nombre de dominio local y los subdominios, habilitado la caché DNS y habilitado el servidor DHCP a través de Dnsmasq.
En los siguientes pasos, verificarás la instalación y configuración de tu servidor Dnsmasq.
Verificando la instalación de Dnsmasq
En este paso, verificarás la instalación de Dnsmasq comprobando el servicio Dnsmasq y el puerto LISTEN en tu sistema. Luego, verificarás el nombre de dominio local y los subdominios que has configurado a través del archivo ‘/etc/hosts’.
Ejecuta el siguiente comando para asegurarte de que el servicio Dnsmasq esté ejecutándose en el puerto 53. Luego, verifica el estado del servicio Dnsmasq a través del comando systemctl.
ss -tulpn | grep 53
sudo systemctl status dnsmasqRecibirás una salida similar a esta - El servicio Dnsmasq se está ejecutando en el puerto predeterminado 53 y está habilitado y se ejecutará automáticamente al iniciar.

A continuación, verificarás el nombre de dominio y los subdominios que has configurado en Dnsmasq a través del archivo ‘ /etc/hosts ‘. Pero antes de eso, ejecuta el siguiente comando apt para instalar el paquete ‘ dnsutils ‘ en tu sistema. El paquete ‘dnsutils’ proporciona herramientas de línea de comandos para probar la configuración del servidor DNS.
sudo apt install dnsutilsIngresa y cuando se te pida y presiona ENTER para proceder con la instalación.
Después de que el ‘ dnsutils ‘ esté instalado, ejecuta el siguiente comando dig para verificar el nombre de dominio y los subdominios que has configurado.
Verifica el dominio principal de Dnsmasq ‘ howtoforge.local ‘, que está apuntado a la dirección IP del servidor Dnsmasq ‘192.168.5.20’.
dig howtoforge.local
Verifica los subdominios que has definido a través del archivo ‘/etc/hosts’ mediante el siguiente comando dig.
dig app1.howtoforge.local +short
dig db1.howtoforge.local +short
dig files.howtoforge.local +shortEl subdominio ‘ app1.howtoforge.local ‘ está apuntado a la dirección IP ‘ 192.168.5.10 ‘, el subdominio ‘ db1.howtoforge.local ‘ está apuntado a la dirección IP ‘ 192.168.5.25 ‘, y por último ‘ files.howtoforge.local ‘ está apuntado a la dirección IP ‘ 192.168.5.50 ‘.
A continuación, recibirás una salida similar.

Ahora, has configurado y probado la instalación de Dnsmasq como el servidor DNS local en un servidor Debian. En los siguientes pasos, configurarás y asegurarás Dnsmasq utilizando el cortafuegos UFW.
Configurando el cortafuegos UFW
Ahora configurarás el cortafuegos en tu servidor DNS local. Asegurarás la instalación de Dnsmasq limitando el acceso al servidor DNS a través del cortafuegos UFW.
Ejecuta el siguiente comando apt para instalar el cortafuegos UFW en tu sistema Debian.
sudo apt install ufw -y
Después de instalar UFW, ejecuta el siguiente comando para agregar el servicio OpenSSH y el puerto DNS 53 al cortafuegos UFW. En este ejemplo, especificarás la fuente de la red que está permitida para acceder al servidor Dnsmasq, que es la red local con direcciones IP 192.168.5.0/24 ‘.
Asegúrate de cambiar las direcciones IP de la red local por tu subred interna.
sudo ufw allow OpenSSH
sudo ufw allow from 192.168.5.0/24 to any port 53 proto udpA continuación, ejecuta el siguiente comando para iniciar y habilitar el cortafuegos UFW.
sudo ufw enableCuando se te pregunte por la configuración, ingresa y para confirmar y presiona ENTER para proceder. Y el cortafuegos UFW ahora debería estar en funcionamiento y habilitado y se iniciará automáticamente al arrancar.

Por último, ejecuta el siguiente comando para verificar el estado del cortafuegos UFW. Deberías ver que el cortafuegos UFW está ‘activo’ y el servicio OpenSSH y el puerto DNS 53 se han añadido al cortafuegos.
sudo ufw status
Con el cortafuegos UFW configurado, ahora puedes añadir clientes para conectarse a tu servidor DNS local.
Configurando el cliente
En este paso, configurarás la máquina cliente con una distribución basada en Debian y el nombre de host ‘ client ‘. Añadirás el servidor DNS local Dnsmasq a la máquina cliente.
Ejecuta el siguiente comando para eliminar el enlace del archivo de configuración del resolutor DNS ‘/etc/resolv.conf’. Luego, crea una nueva configuración de resolutor ‘ /etc/resolv.conf ‘ utilizando el comando del editor nano a continuación.
sudo unlink /etc/resolv.conf
sudo nano /etc/resolv.confIngresa la siguiente línea en el archivo. Asegúrate de cambiar la dirección IP por la dirección IP de tu servidor Dnsmasq.
nameserver 192.168.5.20Guarda el archivo y sal del editor cuando hayas terminado.
A continuación, ejecuta el siguiente comando para instalar el paquete ‘dnsutils’ en la máquina cliente.
sudo apt install dnsutils
Ahora ejecuta el comando dig a continuación para verificar el nombre de dominio ‘ howtoforge.local ‘, que estará apuntado a la dirección IP del servidor Dnsmasq.
dig howtoforge.localA continuación, recibirás la salida.

Para los subdominios, ejecuta el comando dig a continuación. Cada subdominio estará apuntado a la dirección IP definida en el archivo ‘ /etc/hosts ‘ en el servidor Dnsmasq.
dig app1.howtoforge.local +short
dig db1.howtoforge.local +short
dig files.howtoforge.local +shortA continuación, recibirás una salida similar en la máquina cliente.

A continuación, también necesitarás asegurarte de que puedes acceder al nombre de dominio público a través del servidor DNS local Dnsmasq. Puedes verificar esto comprobando el nombre de dominio público como ‘ github.com ‘.
dig github.comRecibirás una salida similar a esta captura de pantalla - En la parte inferior de la salida, deberías ver que tu solicitud es respondida por el servidor DNS local Dnsmasq que se ejecuta en ‘ 192.168.5.20’ con el puerto predeterminado ‘ 53 ‘. Con esto en mente, te has conectado exitosamente al nombre de dominio público a través del servidor DNS local Dnsmasq.

Por último, verificarás la caché DNS a través de los comandos ‘drill’ y ‘dig’. El comando ‘ drill ‘ es parte del paquete ‘ ldnsutils ‘, así que ejecuta el siguiente comando apt para instalarlo.
sudo apt install ldnsutils
Después de instalar ldnsutils, ejecuta el siguiente comando drill para verificar la caché DNS que has configurado en el servidor Dnsmasq.
drill duckduckgo.com | grep "Query time"
drill duckduckgo.com | grep "Query time"Recibirás una salida como la siguiente captura de pantalla - en la primera vez que haces la solicitud, el ‘ Query time ‘ es 60ms. Pero la segunda vez que solicitas el mismo dominio, el tiempo de consulta se reduce a 1 ms, lo que significa que la solicitud DNS está en caché en el servidor DNS local Dnsmasq.

También puedes verificar la caché DNS a través del comando dig con la opción ‘ +stats ‘.
dig +noall +stats duckduckgo.com
dig +noall +stats duckduckgo.comAhora has terminado la configuración de la máquina cliente y has verificado que el servidor DNS local Dnsmasq está completamente operativo, desde el nombre de dominio local y los subdominios que has definido a través del archivo ‘/etc/hosts’, hasta la caché DNS que has habilitado en Dnsmasq.
Conclusión
En este tutorial, has creado tu propio servidor DNS local con Dnsmasq. Has configurado tu propio servidor DNS local para tu entorno local con Dnmasq en un servidor Debian 12. Además, esto incluyó la configuración de Dnsmasq con nombres de dominio locales y subdominios, habilitando la caché DNS para obtener respuestas DNS recurrentes más rápidas, y habilitando el servidor DHCP a través de Dnsmasq.
Por último, también has añadido y configurado la máquina cliente para utilizar el servidor DNS local que has creado. Dentro de esto, también has aprendido cómo solucionar problemas del servidor DNS con el comando dig y cómo configurar un resolutor DNS en un sistema Linux.
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.