DNS Configuración · 5 min read · Oct 01, 2025
Cómo configurar un resolvedor DNS local usando Dnsmasq en Ubuntu 20.04

Dnsmasq significa “abreviatura de DNS masquerade” es un reenvío DNS simple, ligero y fácil de usar utilizado para una pequeña red. Se puede configurar como un caché DNS y servidor DHCP y admite tanto el protocolo IPv4 como IPv6. Cuando recibe consultas DNS, las responderá desde su caché o las reenviará a otro servidor DNS.
Dnsmasq está compuesto por tres subsistemas:
- Subsistema DNS: Se utiliza para almacenar en caché diferentes tipos de registros, incluyendo A, AAAA, CNAME y PTR.
- Subsistema DHCP: Soporta DHCPv4, DHCPv6, BOOTP y PXE.
- Subsistema de Anuncio de Router: Proporciona autoconfiguración básica para hosts IPv6. Se puede usar de forma independiente o en conjunto con DHCPv6.
En este tutorial, te mostraremos cómo configurar un servidor DNS local con Dnsmasq en el servidor Ubuntu 20.04.
Requisitos previos
- Un servidor que ejecute Ubuntu 20.04.
- Una contraseña de root configurada en el servidor.
Comenzando
Primero, se recomienda actualizar los paquetes de tu sistema a la última versión. Puedes actualizar todos los paquetes ejecutando el siguiente comando:
apt-get update -y
Después de actualizar todos los paquetes, necesitarás deshabilitar el servicio Systemd-resolved en tu sistema. El servicio Systemd-resolved se utiliza para la resolución de nombres de red para aplicaciones locales.
Puedes deshabilitarlo ejecutando el siguiente comando:
systemctl disable --now systemd-resolved
Una vez que el servicio esté deshabilitado, necesitarás eliminar el archivo resolv.conf predeterminado y crear uno nuevo con los detalles de tu servidor DNS personalizado.
Puedes eliminar el archivo resolv.conf predeterminado con el siguiente comando:
rm -rf /etc/resolv.conf
A continuación, agrega el servidor DNS de Google al archivo resolv.conf con el siguiente comando:
echo "nameserver 8.8.8.8" > /etc/resolv.conf
Una vez que hayas terminado, puedes proceder al siguiente paso.
Instalar Dnsmasq
Por defecto, Dnsmasq está disponible en el repositorio predeterminado de Ubuntu 20.04. Puedes instalarlo simplemente ejecutando el siguiente comando:
apt-get install dnsmasq dnsutils ldnsutils -y
Una vez que la instalación haya finalizado, los servicios de Dnsmasq se iniciarán automáticamente. Puedes verificar el estado de Dnsmasq con el siguiente comando:
systemctl status dnsmasq
Deberías obtener la siguiente salida:
dnsmasq.service - dnsmasq - Un servidor DHCP ligero y de caché DNS Loaded: loaded (/lib/systemd/system/dnsmasq.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2020-11-02 11:02:01 UTC; 15s ago Main PID: 17726 (dnsmasq) Tasks: 1 (limit: 2282) Memory: 868.0K CGroup: /system.slice/dnsmasq.service ??17726 /usr/sbin/dnsmasq -x /run/dnsmasq/dnsmasq.pid -u dnsmasq -7 /etc/dnsmasq.d,.dpkg-dist,.dpkg-old,.dpkg-new --local-service --trust-anchor=.,20326,8,2,e> Nov 02 11:02:12 ubuntu2004 systemd[1]: Starting dnsmasq - Un servidor DHCP ligero y de caché DNS... Nov 02 11:02:12 ubuntu2004 dnsmasq[17705]: dnsmasq: syntax check OK. Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: started, version 2.80 cachesize 150 Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: Servicio DNS limitado a subredes locales Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: compile time options: IPv6 GNU-getopt DBus i18n IDN DHCP DHCPv6 no-Lua TFTP conntrack ipset auth DNSSEC loop-detect inotify dumpfi> Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: reading /etc/resolv.conf Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: using nameserver 8.8.8.8#53 Nov 02 11:02:12 ubuntu2004 dnsmasq[17726]: read /etc/hosts - 7 addresses Nov 02 11:02:12 ubuntu2004 systemd[1]: Started dnsmasq - Un servidor DHCP ligero y de caché DNS.
Una vez que hayas terminado, puedes proceder al siguiente paso.
Configurar Dnsmasq
A continuación, necesitarás configurar Dnsmasq como un servidor DNS local. Puedes hacerlo editando el archivo de configuración principal de Dnsmasq:
nano /etc/dnsmasq.conf
Cambia las siguientes líneas:
port=53 domain-needed bogus-priv listen-address=127.0.0.1,your-server-ip expand-hosts domain=dns-example.com cache-size=1000
Guarda y cierra el archivo cuando hayas terminado.
A continuación, necesitarás agregar la dirección IP de tu servidor como el servidor de nombres principal en tu archivo resolv.conf. Puedes agregarlo con el siguiente comando:
nano /etc/resolv.conf
Agrega la siguiente línea encima de la línea “nameserver 8.8.8.8”:
nameserver your-server-ip
Guarda y cierra el archivo cuando hayas terminado. A continuación, verifica el servidor en busca de errores de configuración con el siguiente comando:
dnsmasq --test
Si todo está bien, deberías obtener la siguiente salida:
dnsmasq: syntax check OK.
Finalmente, reinicia el servicio Dnsmasq para aplicar los cambios:
systemctl restart dnsmasq
En este punto, Dnsmasq está iniciado y escuchando en el puerto 53. Puedes verificarlo con el siguiente comando:
ss -alnp | grep -i :53
Deberías obtener la siguiente salida:
udp UNCONN 0 0 0.0.0.0:53 0.0.0.0:* users:(("dnsmasq",pid=41051,fd=4)) udp UNCONN 0 0 [::]:53 [::]:* users:(("dnsmasq",pid=41051,fd=6)) tcp LISTEN 0 32 0.0.0.0:53 0.0.0.0:* users:(("dnsmasq",pid=41051,fd=5)) tcp LISTEN 0 32 [::]:53 [::]:* users:(("dnsmasq",pid=41051,fd=7))
Agregar registros DNS al servidor Dnsmasq
A continuación, necesitarás editar tu archivo /etc/hosts y agregar la entrada del servidor DNS local.
nano /etc/hosts
Agrega la siguiente línea:
your-server-ip host1.dns-example.com
Guarda y cierra el archivo cuando hayas terminado.
Verificar la resolución del servidor Dnsmasq
En este punto, Dnsmasq está instalado y configurado. Ahora, es hora de verificar la resolución DNS.
Puedes usar el comando dig para verificar la resolución DNS como se muestra a continuación:
dig host1.dns-example.com +short
Si todo está bien, deberías ver la IP de tu servidor en la siguiente salida:
your-server-ip
También puedes verificar la resolución DNS externa con el siguiente comando:
dig howtoforge.com +short
Deberías obtener la siguiente salida:
172.67.68.93 104.26.3.165 104.26.2.165
Configurar cliente remoto para usar el servidor DNS Dnsmasq
A continuación, necesitarás configurar un cliente remoto para usar tu servidor DNS Dnsmasq como el servidor DNS predeterminado.
Primero, instala las herramientas DNS con el siguiente comando:
apt-get install dnsutils ldnsutils -y
Una vez instalado, necesitarás editar el archivo /etc/resolv.conf y la entrada de tu servidor DNS Dnsmasq.
nano /etc/resolv.conf
Agrega la siguiente línea al principio del archivo:
nameserver your-server-ip
Guarda y cierra el archivo cuando hayas terminado.
A continuación, verifica la resolución DNS local con el siguiente comando:
dig host1.dns-example.com
Deberías ver la siguiente salida:
; DiG 9.9.5-3ubuntu0.4-Ubuntu host1.dns-example.com ;; global options: +cmd ;; Got answer: ;; HEADER opcode: QUERY, status: NOERROR, id: 26401 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;host1.dns-example.com. IN A ;; ANSWER SECTION: host1.dns-example.com. 0 IN A 45.58.32.165 ;; Query time: 301 msec ;; SERVER: 45.58.32.165#53(45.58.32.165) ;; WHEN: Mon Nov 02 16:49:37 IST 2020 ;; MSG SIZE rcvd: 66
A continuación, necesitarás verificar tu servidor DNS para caché. Puedes comprobarlo usando la utilidad drill.
Primero, ejecuta el siguiente comando:
drill google.com | grep "Query time"
Deberías ver la siguiente salida:
;; Query time: 290 msec
A continuación, ejecuta el comando nuevamente para verificar si la caché está funcionando o no:
drill google.com | grep "Query time"
Deberías ver que el tiempo de consulta ahora disminuye a 4 msec:
;; Query time: 4 msec
Conclusión
¡Felicidades! has instalado y configurado con éxito Dnsmasq como un servidor DNS local en Ubuntu 20.04. Espero que ahora puedas implementarlo fácilmente en tu red local para la resolución de nombres.
Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.