DNS local · 14 min read · Sep 08, 2025

Cómo instalar un resolvedor DNS local con Dnsmasq en Rocky Linux

Dnsmasq es un servidor DNS pequeño y ligero para tu entorno local. Se puede utilizar para proporcionar un servidor DNS, un servidor DHCP y un servidor TFTP. En cuanto al servidor DNS, Dnsmasq puede ser utilizado como un reenvío, 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, adecuado para dispositivos de bajos recursos como enrutadores y cortafuegos. Dnsmasq tiene bajos requisitos del sistema y consume pocos recursos. Se puede ejecutar en Linux, BSD, Android y macOS.

Este tutorial cubrirá la instalación y configuración de un servidor DNS local con Dnsmasq en un servidor Rocky Linux 9. Instalarás Dnsmasq y configurarás el servidor DNS local con algunas características adicionales, como habilitar nombres de dominio locales, configurar subdominios a través del archivo /etc/hosts y habilitar la caché DNS para un acceso más rápido. Por último, habilitarás el servidor DHCP a través de Dnsmasq.

También aprenderás cómo configurar máquinas cliente para usar el servidor DNS local como el resolvedor DNS principal.

Requisitos previos

Hay varios requisitos previos que debes tener antes de comenzar. A continuación se presentan las listas de requisitos previos:

  • Un servidor Rocky Linux 9 - Este ejemplo utiliza Rocky Linux con el nombre de host ‘ dnsmasq-rocky ‘ y la dirección IP ‘ 192.168.5.50 ‘.
  • Un usuario no root con privilegios de administrador sudo/root.
  • SELinux está en ejecución con el modo ‘ permissivo ‘.

Para las máquinas cliente, puedes usar cualquier distribución de Linux. Puedes usar distribuciones basadas en Debian o basadas en RHEL como máquinas cliente.

Preparar el sistema

En sistemas operativos basados en RHEL, el resolvedor DNS predeterminado ‘/etc/resolv.conf’ es generado por el servicio NetworkManager. Antes de instalar Dnsmasq, configurarás un resolvedor DNS estático a través del archivo /etc/resolv.conf y deshabilitarás el resolvedor DNS del servicio NetworkManager.

Para comenzar, abre el archivo de configuración de NetworkManager /etc/NetworkManager/NetworkManager.conf utilizando el siguiente comando del editor nano.

sudo nano /etc/NetworkManager/NetworkManager.conf

Agrega la línea ‘ dns=none ‘ dentro de la sección ‘ [section] ‘.

[main]  
dns=none

Guarda el archivo y sal del editor cuando hayas terminado.

A continuación, abre el archivo de configuración del resolvedor DNS ‘/etc/resolv.conf’ utilizando el comando del editor nano a continuación.

sudo nano /etc/resolv.conf

Elimina todas las líneas disponibles y reemplázalas con las siguientes líneas. Con esto, estarás utilizando los DNS públicos de Cloudflare y Google como el servidor DNS principal.

nameserver 1.1.1.1  
nameserver 8.8.8.8

Guarda el archivo y sal cuando hayas terminado.

Por último, ejecuta el siguiente comando systemctl para reiniciar el NetworkManager y aplicar los cambios.

sudo systemctl restart NetworkManager

preparar el sistema

Con estos ajustes terminados, tu resolvedor DNS no será cambiado por el servicio NetworkManager y podrás agregar o cambiar el resolvedor DNS en cualquier momento.

En los siguientes pasos, comenzarás la instalación y configuración de Dnsmasq en Rocky Linux.

Instalando Dnsmasq en Rocky Linux

En este paso, instalarás el paquete Dnsmasq en un servidor Rocky Linux. Luego, iniciarás y habilitarás el servicio Dnsmasq para que se ejecute al iniciar el sistema.

Por defecto, el paquete ‘ dnsmasq ‘ está disponible en el repositorio AppStream de Rocky Linux. Ejecuta el siguiente comando dnf para obtener información sobre el paquete ‘ dnsmasq ‘.

sudo dnf info dnsmasq

La Dnsmasq v2.85 está disponible en Rocky Linux 9 en el momento de escribir esto.

info dnsmasq

Ahora ejecuta el siguiente comando para instalar Dnsmasq. Ingresa y cuando se te pida la confirmación, presiona ENTER para continuar.

sudo dnf install dnsmasq dnsmasq-utils

La instalación de Dnsmasq debería comenzar ahora.

Después de instalar Dnsmasq, ejecuta el siguiente comando systemctl para iniciar y habilitar el servicio ‘ dnsmasq ‘. Con el siguiente comando ejecutado, el servicio ‘ dnsmasq ‘ debería estar ahora en ejecución y habilitado, lo que comenzará automáticamente al iniciar.

sudo systemctl start dnsmasq  
sudo systemctl enable dnsmasq

Verifica el servicio ‘ dnsmasq ‘ a través de la utilidad de comando systemctl a continuación.

sudo systemctl status dnsmasq

Recibirás una salida como esta - El servicio ‘ dnsmasq ‘ está actualmente en ejecución, habilitado y se ejecutará automáticamente al iniciar.

verificar dnsmasq

Con Dnsmasq instalado y en ejecución, a continuación comenzarás la configuración de Dnsmasq para que funcione como un servidor DNS local.

Configurando Dnsmasq

En este paso, configurarás Dnsmasq como el servidor DNS local con algunas características habilitadas como caché DNS y servidor DHCP, y configurarás el nombre de dominio y subdominios para aplicaciones locales. Esto permite que tu aplicación sea accesible a través de los nombres de dominio/subdominios locales como ‘ db1.howtoforge.local ‘, ‘ app.howtoforge.local ‘ y muchos más.

Para comenzar, ejecuta el siguiente comando para copiar el archivo de configuración predeterminado de Dnsmasq a ‘/etc/dnsmasq.conf.orig’, luego abre el archivo de configuración original de Dnsmasq ‘/etc/dnsmasq.conf’ utilizando el siguiente comando del editor nano.

sudo cp /etc/dnsmasq.conf{,.orig}  
sudo nano /etc/dnsmasq.conf

Agrega las siguientes líneas al archivo.

# dnsmasq se ejecuta en el puerto UDP 53  
# con la dirección IP localhost y 192.168.5.50  
# y la interfaz de red eth1  
port=53  
listen-address=127.0.0.1,192.168.5.50  
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 a dnsmasq para leer el archivo /etc/resolv.conf  
domain-needed  
bogus-priv  
expand-hosts  
no-resolv  
  
# servidor DNS ascendente para dominios no locales  
# usando Cloudflare y google DNS público  
server=1.1.1.1  
server=8.8.8.8  
  
# definir el dominio para dnsmasq  
domain=howtoforge.local  
address=/howtoforge.local/192.168.5.50  
  
# habilitar caché DNS y ajustar el tamaño de la caché  
cache-size=10000  
  
# 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.100,192.168.5.150,12h  
dhcp-leasefile=/var/lib/dnsmasq/dnsmasq.leases  
dhcp-authoritative

Guarda el archivo y sal del editor cuando hayas terminado.

A continuación se presentan las opciones detalladas que utilizarás para tu instalación de Dnsmasq:

  • port: qué puerto usarás para ejecutar Dnsmasq.
  • listen-address: qué dirección IP usará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 de dominio principal. Puedes acceder como el host ‘mysql1’ a menos que des el completo 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 usará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.50.
  • 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.

configuración dnsmasq

A continuación, abre el archivo ‘ /etc/hosts ‘ utilizando el siguiente comando del editor nano. Ahora definirás algunos subdominios para aplicaciones en tu entorno local.

sudo nano /etc/hosts

Agrega las siguientes líneas al archivo. En este ejemplo, crearás tres subdominios wiki, mysql y files. Cada subdominio seguirá al dominio principal del servidor Dnsmasq ‘howtoforge.local’ y apuntará a una dirección IP específica.

El subdominio wiki.howtoforge.local apuntará a la dirección IP ‘ 192.168.5.10 ‘, el subdominio ‘ mysql.howtoforge.local ‘ apunta a la dirección IP ‘ 192.168.5.25 ‘, y el ‘ files.howtoforge.local ‘ apuntará a la dirección IP ‘ 192.168.5.30 ‘.

192.168.5.10 wiki  
192.168.5.25 mysql  
192.168.5.30 files 

Guarda el archivo y sal del editor cuando hayas terminado.

Ahora abre el archivo de configuración del resolvedor DNS ‘ /etc/resolv.conf ‘ utilizando el siguiente comando del editor nano.

sudo nano /etc/resolv.conf

Agrega las siguientes líneas en la parte superior del archivo. Asegúrate de cambiar la dirección IP por la dirección IP del servidor Dnsmasq.

nameserver 127.0.0.1  
nameserver 192.168.5.50

Guarda el archivo y sal del editor cuando hayas terminado.

Ahora ejecuta el siguiente comando para verificar la configuración de Dnsmasq y asegurarte de que tienes la configuración adecuada. Recibirás una salida como ‘ dnsmasq: syntax check OK ‘.

sudo dnsmasq --test

Por último, ejecuta el siguiente comando systemctl para reiniciar el servicio ‘dnsmasq’ y aplicar los cambios.

sudo systemctl restart dnsmasq

configurar dnsmasq

En este punto, has terminado la configuración de Dnsmasq como el servidor DNS local en el sistema Rocky Linux. También has configurado el nombre de dominio para el servidor Dnsmasq y algunos subdominios a través del archivo ‘/etc/hosts’. Por último, has habilitado la caché DNS y el servidor DHCP a través de Dnsmasq.

En los siguientes pasos, verificarás la instalación y configuración del servidor Dnsmasq.

Verificar la instalación de Dnsmasq

Con la configuración de Dnsmasq terminada, ahora verificarás el servicio Dnsmasq en sí. Verificarás Dnsmasq para asegurarte de que se está ejecutando en el puerto predeterminado 50 y que el servicio está en ejecución. Luego, verificarás el nombre de dominio local y los subdominios que creaste a través del paquete ‘ dns-utils ‘.

Ejecuta el siguiente comando para verificar el puerto abierto en tu sistema. Luego verifica el servicio ‘ dnsmasq ‘ a través de la utilidad de comando systemctl.

ss -tulpn | grep 53  
sudo systemctl status dnsmasq

Recibirás una salida como esta - Dnsmasq se está ejecutando en el puerto predeterminado 53 y el estado del servicio está actualmente en ejecución. Además, está habilitado, lo que comenzará automáticamente al iniciar.

verificar dnsmasq

A continuación, ejecuta el siguiente comando dnf para instalar el paquete ‘bind-utils’ en tu servidor Rocky Linux. Este paquete proporciona múltiples herramientas de línea de comandos para probar y solucionar problemas del servidor DNS.

sudo dnf install bind-utils

Ingresa y cuando se te pida, presiona ENTER para continuar.

instalar bind-utils

Ahora ejecuta el siguiente comando dig para verificar el nombre de dominio del servidor Dnsmasq ‘ howtoforge.local ‘. Deberías ver que el ‘ howtoforge.local ‘ apunta a la dirección IP del servidor ‘ 192.168.5.50 ‘.

dig howtoforge.local

verificar nombre de dominio

Por último, ejecuta el siguiente comando para verificar los subdominios que has definido a través del archivo ‘ /etc/hosts ‘.

dig wiki.howtoforge.local +short  
dig mysql.howtoforge.local +short  
dig files.howtoforge.local +short

Recibirás una salida similar a esta - El subdominio wiki.howtoforge.local apunta a la dirección IP 192.168.5.10, el subdominio mysql.howtoforge.local apunta a la dirección IP 192.168.5.25, y por último el subdominio files.howtoforge.local apunta a la dirección IP del servidor 192.168.5.30.

verificar subdominio

Con estos resultados, has terminado la configuración de Dnsmasq como el servidor DNS local. En los siguientes pasos, asegurarás el puerto DNS a través de Firewalld.

Configurando Firewalld

En este paso, configurarás firewalld para abrir el puerto del servicio DNS y agregar las direcciones IP de las redes internas a firewalld como la fuente principal que se permite acceder al puerto del servicio DNS.

Ejecuta el siguiente comando firewall-cmd para agregar el servicio DNS a firewalld. Luego, agrega las direcciones IP de la red interna como la fuente.

sudo firewall-cmd --add-service=dns  
sudo firewall-cmd --add-source=192.168.5.0/24

A continuación, ejecuta el siguiente comando para guardar las reglas temporales que has creado y recargar firewalld para aplicar los cambios.

sudo firewall-cmd --runtime-to-permanent  
sudo firewall-cmd --reload

configurar firewalld

Verifica firewalld a través del siguiente comando. Deberías ver que el servicio DNS se ha agregado a firewalld y que la dirección IP de la red también se ha agregado a firewalld.

sudo firewall-cmd --list-all

Salida:

verificar firewalld

Configurando el Cliente (basado en Debian o RHEL)

En este paso, aprenderás cómo configurar tanto distribuciones basadas en Debian como en RHEL para usar el servidor DNS local que has creado a través de Dnsmasq.

Para distribuciones basadas en RHEL

Agrega un nuevo archivo de configuración para NetworkManager ‘ /etc/NetworkManager/conf.d/dns-servers.conf ‘ utilizando el siguiente comando del editor nano.

sudo nano /etc/NetworkManager/conf.d/dns-servers.conf

Agrega las siguientes líneas al archivo y asegúrate de cambiar la dirección IP por la dirección IP del servicio Dnsmasq. Con esta configuración, establecerás el resolvedor DNS predeterminado para el cliente utilizando la dirección IP del servidor Dnsmasq. Esto escribirá automáticamente la configuración del resolvedor DNS ‘ /etc/resolv.conf ‘.

[global-dns-domain-*]  
servers=192.168.5.50

Guarda el archivo y sal del editor cuando hayas terminado.

A continuación, ejecuta el siguiente comando systemctl para reiniciar el servicio NetworkManager y aplicar los cambios.

sudo systemctl restart NetworkManager

Puedes mostrar el archivo ‘/etc/resolv.conf’ para verificar la configuración. Deberías ver que el servidor de nombres predeterminado es la dirección IP del servidor Dnsmasq local 192.168.5.50.

cat /etc/resolv.conf

configurar máquina cliente

A continuación, ejecuta el siguiente comando dnf para instalar el paquete ‘bind-utils’ en tu sistema.

sudo dnf install bind-utils

instalar bind utils

Para distribuciones basadas en Debian

Si estás utilizando el sistema operativo basado en Debian, puedes configurar el resolvedor DNS manualmente y deshabilitar el servicio ‘systemd-resolved’ en tu sistema - especialmente para el sistema Ubuntu.

Ejecuta el siguiente comando para detener y deshabilitar el servicio systemd-resolved.

sudo systemctl disable --now systemd-resolved

Ahora ejecuta el siguiente comando para eliminar el archivo de enlace simbólico de la configuración del resolvedor DNS ‘/etc/resolv.conf’. Luego, crea un nuevo archivo de configuración del resolvedor ‘ /etc/resolv.conf ‘ a través del comando del editor nano a continuación.

unlink /etc/resolv.conf  
sudo nano /etc/resolv.conf

Agrega la siguiente línea al archivo y cambia la dirección IP por la dirección IP de tu servidor Dnsmasq.

nameserver 192.168.5.50

Guarda el archivo y sal del editor cuando hayas terminado.

A continuación, ejecuta el siguiente comando apt para instalar el paquete ‘ dnsutils ‘ en tu sistema.

sudo apt install dnsutils

Una vez que ‘bind-utils’ o ‘dns-utils’ esté instalado, puedes verificar la configuración de tu Dnsmasq a través del comando dig.

Verifica el nombre de dominio del servidor Dnsmasq ‘ howtoforge.local ‘ a través del siguiente comando dig. Deberías ver que el dominio ‘ howtoforge.local ‘ apunta a la dirección IP del servidor Dnsmasq 192.168.5.50.

dig howtoforge.local

verificar desde el cliente

A continuación, verifica los subdominios que has configurado a través del archivo ‘/etc/hosts’ utilizando el siguiente comando. Deberías ver que cada subdominio apunta a la dirección IP específica que has configurado en el archivo ‘/etc/hosts’.

dig wiki.howtoforge.local +short  
dig mysql.howtoforge.local +short  
dig files.howtoforge.local +short

Recibirás una salida como esta - El subdominio wiki.howtoforge.local apunta a la dirección IP 192.168.5.10, el subdominio mysql.howtoforge.local apunta a la dirección IP 192.168.5.25, y por último, el subdominio files.howtoforge.local apunta a la dirección IP del servidor 192.168.5.30.

verificar subdominios

Con esto, el nombre de dominio local y los subdominios están configurados con éxito. Ahora, ¿qué hay de los nombres de dominio públicos como Github.com, etc?

Ejecuta el siguiente comando para verificar los nombres de dominio de internet desde tu máquina cliente. Esto asegurará que puedes conectarte a internet, incluso con el DNS local resuelto en el servidor Dnsmasq.

dig github.com

Recibirás una salida similar a esta - La consulta dig a github.com está conectada a través del servidor DNS local que se ejecuta en la dirección IP 192.168.5.50 con el puerto predeterminado 53.

verificar dns internet

Por último, verifica la configuración de la caché DNS a través del siguiente comando dig. Esto te mostrará las estadísticas de las consultas ejecutadas, incluyendo el ‘ Tiempo de consulta ‘ al nombre de dominio objetivo.

dig +noall +stats duckduckgo.com  
dig +noall +stats duckduckgo.com

Recibirás una salida similar a esta - La primera consulta que obtienes es el ‘ Tiempo de consulta ‘ en 63ms. Pero para la segunda y tercera consultas, el Tiempo de Consulta es 2ms, lo que significa que tus consultas al mismo nombre de dominio están en caché a través del servidor DNS local Dnsmasq.

verificar caché dns

Conclusión

En este tutorial, has creado tu propio servidor DNS local con Dnsmasq. Has configurado tu propio servidor DNS para tu entorno local con Dnmasq en un servidor Rocky Linux 9. Además, esto incluyó la configuración de Dnsmasq con nombres de dominio locales y subdominios, habilitó la caché DNS para obtener un acceso más rápido y también habilitó el servidor DHCP a través de Dnsmasq.

Por último, también has agregado y configurado máquinas cliente (distribuciones basadas en Debian y RHEL) para usar 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 resolvedor DNS en un sistema Linux.

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.