bolt Valebyte VPS desde $4/mes — NVMe, despliegue en 60s.

Obtener VPS arrow_forward
eco Principiante Tutorial/Cómo hacer

Despliegue de Unbound

calendar_month Jul 01, 2026 schedule 26 min de lectura visibility 26 vistas
Развёртывание Unbound DNS на VPS для приватного и быстрого интернета
info

¿Necesitas un servidor para esta guía? Ofrecemos servidores dedicados y VPS en más de 50 países con configuración instantánea.

¿Necesitas un VPS para esta guía?

Explore otras opciones de servidores dedicados en

Despliegue de Unbound DNS en un VPS para una internet privada y rápida

TL;DR

En esta guía, configuraremos paso a paso su propio servidor DNS recursivo Unbound en su VPS. Esto le permitirá aumentar significativamente la privacidad de sus solicitudes de internet, evitando proveedores de DNS públicos como Google DNS o Cloudflare, e interactuando directamente con los servidores raíz de DNS. Como resultado, obtendrá un acceso a internet más rápido, seguro y privado, controlando completamente sus solicitudes de DNS.

  • Instalación y configuración básica de Unbound en el sistema operativo Ubuntu 24.04 LTS.
  • Configuración de Unbound para realizar consultas recursivas y validación DNSSEC.
  • Mejora de la seguridad del VPS con UFW, claves SSH y Fail2ban.
  • Optimización del rendimiento de Unbound para una resolución rápida de nombres de dominio.
  • Recomendaciones para la copia de seguridad y el mantenimiento de su servidor DNS.
  • Respuestas a preguntas frecuentes y solución de problemas comunes.

Qué configuramos y por qué

Diagrama: Qué configuramos y por qué
Diagrama: Qué configuramos y por qué

Desplegaremos Unbound – un servidor DNS de alto rendimiento, validador, recursivo y con caché – en su propio VPS. La tarea principal de Unbound es resolver nombres de dominio (por ejemplo, example.com a la dirección IP 93.184.216.34) sin recurrir a proveedores de DNS de terceros. En su lugar, Unbound consulta directamente los servidores raíz de DNS, y luego los servidores autoritativos para cada dominio, construyendo una cadena de confianza y realizando la validación DNSSEC.

Qué obtendrá el lector al final:

  • Mayor privacidad: Sus solicitudes de DNS no pasarán por los servidores de Google, Cloudflare, su proveedor de internet u otras empresas que puedan recopilar datos sobre su actividad. Unbound se comunica directamente con los servidores raíz, eliminando intermediarios.
  • Seguridad mejorada: Unbound es compatible con DNSSEC (Domain Name System Security Extensions), lo que permite verificar criptográficamente la autenticidad de las respuestas DNS. Esto protege contra la suplantación de DNS (DNS spoofing) y otros ataques, asegurando que siempre se conecte al servidor correcto.
  • Mayor velocidad: Después de la consulta inicial, Unbound almacena en caché las respuestas. Esto significa que las consultas repetidas a los mismos dominios se resolverán mucho más rápido, ya que la información ya está almacenada en su VPS. Además, la comunicación directa con los servidores raíz puede ser más rápida que a través de servidores DNS públicos sobrecargados.
  • Control total: Usted controla completamente el proceso de resolución de nombres, puede configurar listas negras (ad-blocking), listas blancas y otras reglas, adaptando el servidor DNS a sus necesidades.

Qué alternativas existen (cloud-managed vs self-hosted):

Existen varios enfoques para DNS. Puede utilizar:

  • Servidores DNS públicos: Por ejemplo, Google DNS (8.8.8.8), Cloudflare DNS (1.1.1.1), OpenDNS. Son fáciles de usar, pero confía sus consultas a un tercero que puede registrarlas o utilizarlas para el análisis de tráfico. Esta es la opción más sencilla, pero la menos privada.
  • Servidores DNS de su proveedor de internet: Esta es la opción estándar por defecto. A menudo son lentos, no son compatibles con DNSSEC y, por supuesto, su proveedor tiene acceso completo a sus consultas DNS.
  • Servicios DNS gestionados en la nube (para alojamiento de dominios): Tales como AWS Route 53, Cloudflare DNS (para alojamiento de dominio), DigitalOcean DNS. Estos son servicios para gestionar los registros DNS de sus propios dominios, no para resolver consultas salientes desde su dispositivo.
  • Servidores DNS autoalojados (por ejemplo, Unbound en un VPS): Este es el enfoque que utilizaremos. Requiere una configuración inicial, pero ofrece el máximo control, privacidad y seguridad. Usted mismo es su proveedor de DNS.

Por qué autoalojado en un VPS:

La elección de Unbound autoalojado en un VPS se debe al deseo de máxima privacidad y seguridad. Un VPS le proporciona un entorno dedicado donde puede configurar Unbound exactamente como lo necesita, sin restricciones ni compromisos por parte de proveedores externos. Es la solución ideal para quienes valoran la independencia y desean construir su infraestructura con altos estándares de seguridad y confidencialidad. El VPS garantiza fiabilidad, estabilidad y recursos suficientes para que Unbound funcione 24/7.

Qué configuración de VPS se necesita para esta tarea

Diagrama: Qué configuración de VPS se necesita para esta tarea
Diagrama: Qué configuración de VPS se necesita para esta tarea

Unbound es un software bastante ligero, por lo que no requiere recursos potentes para funcionar. Sin embargo, para garantizar un funcionamiento estable y rápido, especialmente si planea usarlo para varios dispositivos o con una alta carga, debe considerar algunos puntos.

Requisitos mínimos:

  • CPU: 1 núcleo. Unbound no es una aplicación intensiva en CPU.
  • RAM: 512 MB. Esto es suficiente para el funcionamiento básico y el almacenamiento en caché. Si planea almacenar en caché una gran cantidad de registros o usarlo para una red grande, puede considerar 1 GB.
  • Disco: 10-20 GB NVMe/SSD. Unbound apenas utiliza espacio en disco, pero para el sistema operativo, los registros y otros archivos del sistema, este volumen será óptimo. NVMe o SSD garantizarán una carga rápida del sistema y operaciones con archivos.
  • Red: 100 Mbps o 1 Gbps. Las consultas DNS son muy ligeras, por lo que incluso 100 Mbps serán más que suficientes. Más importante es la estabilidad del canal y un ping bajo a los servidores raíz de DNS.

Plan de VPS específico para la tarea:

Para la mayoría de los usuarios que despliegan Unbound para uso personal o para un equipo pequeño, un VPS con la siguiente configuración será ideal:

  • 1 vCPU
  • 1 GB de RAM
  • 20-40 GB de disco NVMe/SSD
  • Puerto de red de 1 Gbps

Esta configuración será suficiente para procesar miles de consultas DNS por segundo, proporcionar una gran caché y un funcionamiento estable. Puede considerar un VPS con las características indicadas para obtener una plataforma fiable para su servidor Unbound.

Cuándo se necesita un dedicado y no un VPS:

Un servidor dedicado para Unbound no suele ser necesario, a menos que planee:

  • Servir a decenas de miles de usuarios con una carga muy alta.
  • Utilizar este mismo servidor para otras tareas muy intensivas en recursos que requieran un rendimiento garantizado (por ejemplo, grandes servidores de juegos, bases de datos de alta carga).
  • Requisitos de aislamiento físico y máxima seguridad que la virtualización no puede proporcionar.

En la mayoría de los casos, incluso para uso corporativo, un VPS potente será más que suficiente.

Ubicación: qué influencia tiene

La elección de la ubicación del VPS para Unbound influye en dos aspectos clave:

  1. Ping a usted: Cuanto más cerca esté el VPS de su ubicación física, menor será la latencia al acceder a su servidor Unbound. Esto influye directamente en la velocidad de resolución de las consultas DNS.
  2. Ping a los servidores raíz de DNS: Unbound consultará a los servidores raíz de DNS en todo el mundo. Si su VPS se encuentra en una región con buena conectividad a la infraestructura global de internet, esto garantizará respuestas más rápidas de los servidores raíz y, en consecuencia, una resolución inicial de nombres más veloz.

Se recomienda elegir una ubicación que esté geográficamente cerca de los principales consumidores de su servidor DNS (por ejemplo, usted o su equipo) y que tenga buena conectividad con los principales nodos de internet.

Preparación del servidor

Esquema: Preparación del servidor
Esquema: Preparación del servidor

Antes de instalar Unbound, es necesario realizar una configuración básica de su VPS para garantizar la seguridad y estabilidad de su funcionamiento. Utilizaremos el sistema operativo Ubuntu 24.04 LTS, al ser uno de los más populares y compatibles.

1. Conexión por SSH

Primero, conéctese a su nuevo VPS a través de SSH. Utilice los datos proporcionados por su proveedor (dirección IP, nombre de usuario root y contraseña).


ssh root@ВАШ_IP_АДРЕС

Después de la primera conexión, probablemente necesitará cambiar la contraseña de root.

2. Actualización del sistema

Siempre comience actualizando la lista de paquetes y el sistema mismo para asegurarse de que tiene las versiones de software y los parches de seguridad más recientes instalados.


sudo apt update # Actualización de la lista de paquetes
sudo apt upgrade -y # Actualización de todos los paquetes instalados a las últimas versiones
sudo apt autoremove -y # Eliminación de paquetes innecesarios que se instalaron como dependencias y ya no se requieren

3. Creación de un nuevo usuario y configuración de sudo

Trabajar como usuario root no es seguro. Crearemos un nuevo usuario con privilegios limitados y lo añadiremos al grupo sudo.


adduser ВАШЕ_ИМЯ_ПОЛЬЗОВАТЕЛЯ # Creación de un nuevo usuario. Siga las instrucciones para establecer la contraseña e información.
usermod -aG sudo ВАШЕ_ИМЯ_ПОЛЬЗОВАТЕЛЯ # Adición del usuario al grupo sudo para que pueda ejecutar comandos con privilegios de root.

Ahora salga de la sesión de root e inicie sesión con el nuevo usuario:


exit
ssh ВАШЕ_ИМЯ_ПОЛЬЗОВАТЕЛЯ@ВАШ_IP_ADRES

Para verificar que sudo funciona, intente ejecutar el comando:


sudo apt update

Si le pide su contraseña, significa que todo está configurado correctamente.

4. Configuración de claves SSH (recomendado)

Para aumentar la seguridad, desactive el inicio de sesión con contraseña y utilice solo claves SSH. Primero, genere una clave en su máquina local, si aún no tiene una:


ssh-keygen -t rsa -b 4096 # En su máquina local

Luego, copie la clave pública a su VPS:


ssh-copy-id ВАШЕ_ИМЯ_ПОЛЬЗОВАТЕЛЯ@ВАШ_IP_ADRES # En su máquina local

Después de una copia exitosa, edite la configuración de SSH en el VPS para deshabilitar la autenticación por contraseña.


sudo nano /etc/ssh/sshd_config

Encuentre y cambie las siguientes líneas (o agréguelas si no existen):


# Prohibir el inicio de sesión como root
PermitRootLogin no

# Permitir solo la autenticación por clave
PasswordAuthentication no
ChallengeResponseAuthentication no
UsePAM no

Guarde los cambios (Ctrl+O, Enter) y salga (Ctrl+X). Reinicie el servicio SSH:


sudo systemctl restart sshd

Ahora podrá iniciar sesión solo con su clave SSH.

5. Instalación y configuración del firewall (UFW)

UFW (Uncomplicated Firewall) es una interfaz fácil de usar para iptables. Le permitirá restringir el acceso a su servidor solo a los puertos necesarios.


sudo apt install ufw -y # Instalación de UFW
sudo ufw allow ssh # Permitir SSH (puerto 22 por defecto)
sudo ufw allow 53/udp # Permitir tráfico DNS (puerto 53 UDP)
sudo ufw allow 53/tcp # Permitir tráfico DNS (puerto 53 TCP, para respuestas grandes y transferencias de zona)
sudo ufw enable # Habilitar el firewall. Confirme con 'y'.
sudo ufw status # Comprobación del estado del firewall

Asegúrese de que SSH esté permitido antes de habilitar UFW, de lo contrario, podría perder el acceso al servidor.

6. Instalación de Fail2ban

Fail2ban protege el servidor de ataques de fuerza bruta bloqueando las direcciones IP desde las cuales se producen demasiados intentos de inicio de sesión fallidos.


sudo apt install fail2ban -y # Instalación de Fail2ban
sudo systemctl enable fail2ban # Habilitar el inicio automático al arrancar el sistema
sudo systemctl start fail2ban # Iniciar el servicio
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local # Creación de un archivo de configuración local
sudo nano /etc/fail2ban/jail.local # Edición del archivo

En el archivo jail.local, asegúrese de que la sección [sshd] esté activa (enabled = true) y, si lo desea, configure bantime (tiempo de bloqueo) y findtime (período para detectar intentos fallidos) a su discreción. Para Unbound, se puede configurar una "cárcel" propia, pero esta es una configuración más avanzada y no es crítica para un despliegue básico.


# Ejemplo de configuración en jail.local
[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5

[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s

Guarde los cambios y reinicie Fail2ban:


sudo systemctl restart fail2ban

Ahora su servidor está listo para la instalación de Unbound.

Instalación del software — paso a paso

Esquema: Instalación del software — paso a paso
Esquema: Instalación del software — paso a paso

En este paso, instalaremos el servidor DNS Unbound. Utilizaremos los repositorios oficiales de Ubuntu, ya que proporcionan versiones estables y probadas.

Se supone que para el año 2026, la versión Unbound 1.19.x o posterior estará disponible en los repositorios de Ubuntu 24.04 LTS (Noble Numbat). Nos centramos en Unbound 1.19.0 como la versión estable actual.

1. Instalación de Unbound

Unbound está disponible en los repositorios estándar de Ubuntu. Lo instalaremos usando apt.


sudo apt update # Nos aseguramos de que la lista de paquetes esté actualizada
sudo apt install unbound -y # Instalación del paquete Unbound

Después de la instalación, Unbound se inicia automáticamente como un servicio y está configurado para escuchar en la interfaz local (127.0.0.1).

2. Verificación del estado del servicio Unbound

Nos aseguraremos de que Unbound esté instalado y funcionando correctamente.


sudo systemctl status unbound # Verificación del estado del servicio Unbound

La salida debería mostrar active (running). Si no es así, revise los registros con el comando sudo journalctl -u unbound.

3. Descarga de las sugerencias raíz (root hints) actualizadas

Unbound necesita una lista actualizada de los servidores DNS raíz para realizar consultas recursivas. Este archivo se llama root.hints o named.cache. Normalmente se instala con el paquete, pero es importante actualizarlo regularmente.


sudo unbound-anchor -a /var/lib/unbound/root.key # Inicialización y descarga de la clave DNSSEC para los servidores raíz

Este comando descarga y verifica la clave DNSSEC raíz (DNSSEC Trust Anchor) y actualiza el archivo root.hints si es necesario. Esto es críticamente importante para la validación DNSSEC.

4. Configuración de Unbound para operar como un resolvedor recursivo

Por defecto, Unbound está configurado para escuchar solo en la interfaz local. Para que pueda responder a las consultas de otros dispositivos en su red o desde Internet (si decide usarlo de esa manera), es necesario modificar la configuración.

Abra el archivo de configuración principal de Unbound:


sudo nano /etc/unbound/unbound.conf

En este archivo, normalmente hay una sección server:. Agregaremos o modificaremos parámetros dentro de esta sección. Busque o agregue las siguientes líneas:


# Las configuraciones adicionales se añadirán en /etc/unbound/unbound.conf.d/
# Crearemos un nuevo archivo para nuestras configuraciones para no modificar el principal

La mejor práctica es crear un archivo de configuración separado en el directorio /etc/unbound/unbound.conf.d/, que se incluirá automáticamente en el archivo de configuración principal unbound.conf. Esto simplifica la gestión y las actualizaciones.


sudo nano /etc/unbound/unbound.conf.d/custom-settings.conf # Creación de un nuevo archivo de configuración

Agregue el siguiente contenido a /etc/unbound/unbound.conf.d/custom-settings.conf:


server:
    # Especificamos la dirección IP que Unbound escuchará.
    # 0.0.0.0 significa todas las interfaces de red disponibles.
    # Si tiene varias IPs, puede especificar una concreta: interface: SU_DIRECCIÓN_IP
    interface: 0.0.0.0@53

    # Permitimos consultas solo desde redes específicas.
    # Reemplace con su red local o las direcciones IP en las que confía.
    # Por ejemplo, para toda la red local 192.168.1.0/24: access-control: 192.168.1.0/24 allow
    # Si desea que Unbound esté disponible desde Internet (NO RECOMENDADO SIN PROTECCIÓN ADICIONAL):
    # access-control: 0.0.0.0/0 allow
    access-control: 127.0.0.1/32 allow # Permitimos localhost
    access-control: ::1/128 allow # Permitimos localhost IPv6

    # Establecemos el tamaño de la caché de registros DNS. 128MB es un buen equilibrio para un VPS.
    # Puede aumentarse a 256MB o 512MB si hay suficiente RAM.
    rrset-cache-size: 128m
    msg-cache-size: 64m

    # Habilitación de la validación DNSSEC. Muy recomendable por seguridad.
    # Unbound verificará la autenticidad de las respuestas DNS.
    auto-trust-anchor-file: "/var/lib/unbound/root.key"

    # Habilitación del registro (logging). Útil para la depuración.
    # log-queries: yes # Registrar todas las consultas (puede ser mucho)
    # log-replies: yes # Registrar todas las respuestas (puede ser mucho)

    # Establecimiento del TTL mínimo para las respuestas.
    # Permite evitar TTLs demasiado cortos que podrían ser establecidos por atacantes.
    cache-min-ttl: 3600 # 1 hora

    # Establecimiento del TTL máximo para las respuestas.
    # Evita el almacenamiento en caché demasiado prolongado de registros obsoletos.
    cache-max-ttl: 86400 # 24 horas

    # Uso forzado de TCP para consultas a servidores raíz si UDP falla.
    # Esto puede ser útil para sortear algunas restricciones o problemas con UDP.
    harden-glue: yes
    harden-dnssec-stripped: yes
    harden-below-nxdomain: yes
    harden-referral-path: yes

    # Desactivación de IPv6, si no se usa, para ahorrar recursos y simplificar.
    # do-ip6: no

    # Habilitación de la respuesta con información DNSSEC para los clientes.
    do-daemonize: yes
    do-not-query-address: 127.0.0.1/8
    do-not-query-address: ::1/128
    hide-version: yes # Ocultar la versión de Unbound
    # use-syslog: yes # Enviar registros a syslog
    # verbosity: 1 # Nivel de detalle de los registros (0-5, 1 - por defecto)

Guarde los cambios (Ctrl+O, Enter) y salga (Ctrl+X).

5. Verificación de la configuración y reinicio de Unbound

Antes de reiniciar el servicio, siempre verifique la sintaxis del archivo de configuración para evitar errores.


sudo unbound-checkconf # Verificación de la sintaxis de los archivos de configuración de Unbound

Si el comando no produce errores, la configuración es correcta. Ahora reinicie el servicio Unbound para aplicar los cambios.


sudo systemctl restart unbound # Reinicio del servicio Unbound

Asegúrese de que Unbound esté nuevamente iniciado y funcionando:


sudo systemctl status unbound

6. Prueba de Unbound

Ahora que Unbound está configurado, probaremos su funcionamiento. Para ello, puede utilizar las utilidades dig o drill. Primero, instale dnsutils si aún no están instaladas.


sudo apt install dnsutils -y # Instalación de la utilidad dig

Realice una consulta a su servidor Unbound (que ahora escucha en 0.0.0.0 o su IP pública):


dig @127.0.0.1 example.com # Consulta al Unbound local
dig @ВАШ_IP_АДРЕС example.com # Consulta a Unbound a través de la IP externa (si ha permitido el acceso)

En la respuesta, debería ver la dirección IP de example.com. Es importante que en la sección ANSWER SECTION haya registros, y en la sección FLAGS esté la bandera ad (authentic data), lo que indica una validación DNSSEC exitosa.

Si desea verificar que Unbound realmente realiza una consulta recursiva, borre su caché y consulte un dominio que no haya consultado previamente:


sudo unbound-control reload # Limpieza de la caché de Unbound
dig @127.0.0.1 newdomain.com # Reemplace con cualquier dominio que no haya consultado

Si todo funciona, ¡Unbound está listo para usar!

Configuración

Esquema: Configuración
Esquema: Configuración

Después de la instalación básica de Unbound, podemos profundizar en su configuración para obtener la máxima privacidad, seguridad y rendimiento. Continuaremos utilizando el archivo /etc/unbound/unbound.conf.d/custom-settings.conf para nuestros ajustes.

1. Ampliación de la configuración de privacidad y seguridad

Agregue los siguientes parámetros a la sección server: de su custom-settings.conf.


sudo nano /etc/unbound/unbound.conf.d/custom-settings.conf

Ejemplos de parámetros adicionales:


server:
    # ... (configuraciones anteriores) ...

    # Refuerzo de la privacidad
    # Ocultar información de la versión de Unbound (ya añadido anteriormente)
    hide-version: yes

    # Ocultar ID del servidor en las respuestas CH TXT ID.SERVER
    hide-identity: yes

    # Ocultar versión del servidor en las respuestas CH TXT VERSION.SERVER
    hide-trustanchor: yes

    # Deshabilitar respuestas a las consultas CH TXT hostname.bind, version.bind, etc.
    # Esto evita la divulgación de información sobre su servidor.
    # private-address: 192.168.0.0/16 # Ejemplo: todas las direcciones en esta red se consideran privadas
    # private-address: 10.0.0.0/8
    # private-address: 172.16.0.0/12
    # private-address: fd00::/8 # IPv6 direcciones privadas

    # Rechazar solicitudes a direcciones IP privadas si no están permitidas explícitamente
    # Esto previene ataques donde un atacante intenta usar su DNS para redes internas.
    do-not-query-address: 10.0.0.0/8
    do-not-query-address: 172.16.0.0/12
    do-not-query-address: 192.168.0.0/16
    do-not-query-address: 169.254.0.0/16
    do-not-query-address: ::1/128
    do-not-query-address: fc00::/7
    do-not-query-address: fe80::/10

    # Rechazar solicitudes a hosts locales (si no desea que Unbound los resuelva)
    # local-zone: "localhost." refuse
    # local-zone: "127.in-addr.arpa." refuse

    # Configuraciones de seguridad adicionales para DNSSEC
    # Rechazar respuestas que no cumplan con DNSSEC si el dominio debe tener una firma.
    harden-dnssec-stripped: yes

    # Rechazar respuestas que contengan registros glue para dominios por debajo de la zona.
    harden-glue: yes

    # Rechazar respuestas que apunten a dominios inexistentes (NXDOMAIN) por debajo de la zona.
    harden-below-nxdomain: yes

    # Rechazar respuestas que apunten a un servidor raíz como referente.
    harden-referral-path: yes

    # Establecer el número de hilos para procesar solicitudes.
    # Generalmente igual al número de núcleos de CPU de su VPS.
    num-threads: 1 # Para VPS con 1 vCPU

    # Aumento del número de descriptores de archivo.
    # Importante para servidores con alta carga.
    outgoing-range: 8192 # Número máximo de solicitudes salientes
    num-queries-per-thread: 4096 # Número máximo de solicitudes por hilo

    # Habilitar el almacenamiento en caché NSEC agresivo.
    # Permite a Unbound almacenar en caché información sobre la ausencia de dominios, lo que acelera las respuestas para dominios inexistentes.
    aggressive-nsec: yes

    # Precarga (prefetching) de registros DNS.
    # Unbound actualizará los registros en la caché antes de que expire su TTL, lo que mejora el rendimiento.
    prefetch: yes
    prefetch-key: yes

    # Aumento del búfer para respuestas UDP.
    # Útil para DNSSEC, donde las respuestas pueden ser grandes.
    edns-buffer-size: 1232 # Valor recomendado para evitar la fragmentación

Guarde los cambios y verifique la configuración:


sudo unbound-checkconf
sudo systemctl restart unbound

2. Configuración del bloqueo de anuncios y dominios maliciosos (Ad-blocking)

Puede usar Unbound para bloquear anuncios y dominios maliciosos utilizando listas de bloqueo. Esto se hace agregando local-zone con el tipo refuse o redirect.

Crearemos un nuevo archivo para las listas de bloqueo:


sudo nano /etc/unbound/unbound.conf.d/adblock.conf

Agregue el siguiente contenido. Este es un ejemplo; deberá actualizar esta lista regularmente o usar un script para su actualización automática.


server:
    # Bloquear un dominio publicitario conocido
    local-zone: "doubleclick.net" refuse
    local-zone: "adservice.google.com" refuse
    local-zone: "tracking.example.com" refuse

    # Redirigir a una IP local (por ejemplo, 0.0.0.0 o 127.0.0.1)
    local-zone: "ads.example.com" redirect
    local-data: "ads.example.com A 0.0.0.0"

    # Se pueden usar listas más extensas.
    # Ejemplo:
    # include: "/etc/unbound/unbound.conf.d/blocklists/ads.conf"
    # include: "/etc/unbound/unbound.conf.d/blocklists/malware.conf"

Para automatizar, puede crear un script que descargue listas de fuentes públicas (por ejemplo, AdGuard DNS filter, OISD) y las formatee para Unbound. Ejemplo de script (colóquelo en /usr/local/bin/update-unbound-blocklist.sh):


#!/bin/bash

# Ruta al archivo de bloqueo de Unbound
BLOCKLIST_FILE="/etc/unbound/unbound.conf.d/adblock_generated.conf"
# URL de la fuente de la lista de bloqueo (por ejemplo, OISD Basic)
# Para 2026, esta URL puede cambiar, verifique su validez
BLOCKLIST_URL="https://raw.githubusercontent.com/oisddev/oisd/main/abp/basic.txt"

echo "server:" > "$BLOCKLIST_FILE"
echo "    # Generated by update-unbound-blocklist.sh on $(date)" >> "$BLOCKLIST_FILE"
echo "    # Source: $BLOCKLIST_URL" >> "$BLOCKLIST_FILE"

# Descarga de la lista y conversión al formato Unbound
# Omitimos comentarios y líneas vacías, agregamos "refuse"
curl -s "$BLOCKLIST_URL" | grep -v '^!' | grep -v '^$' | while read -r domain; do
    # Eliminamos el prefijo '||' y el sufijo '^' u otros símbolos específicos de ABP
    domain=$(echo "$domain" | sed -e 's/^||//' -e 's/\^$//' -e 's/\$//')
    # Filtramos líneas vacías después del procesamiento
    if [[ -n "$domain" ]]; then
        echo "    local-zone: \"$domain\" refuse" >> "$BLOCKLIST_FILE"
    fi
done

echo "Lista de bloqueo de Unbound generada: $BLOCKLIST_FILE"

# Verificación de la configuración de Unbound
sudo unbound-checkconf

# Reinicio de Unbound para aplicar los cambios, si la verificación es exitosa
if [ $? -eq 0 ]; then
    sudo systemctl restart unbound
    echo "Unbound reiniciado con éxito."
else
    echo "La verificación de la configuración de Unbound falló. No se reinicia."
fi

Haga el script ejecutable:


sudo chmod +x /usr/local/bin/update-unbound-blocklist.sh

Y ejecútelo:


sudo /usr/local/bin/update-unbound-blocklist.sh

Luego, incluya este archivo generado en su custom-settings.conf:


server:
    # ...
    include: "/etc/unbound/unbound.conf.d/adblock_generated.conf"

Guarde y reinicie Unbound.

3. Verificación de la operatividad

Para verificar la operatividad y eficacia de Unbound, usaremos dig.

Verificación de DNSSEC:


dig @ВАШ_IP_АДРЕС dnssec-failed.org # Dominio que debería causar un error de DNSSEC

En la respuesta, debería ver SERVFAIL, lo que significa que Unbound detectó con éxito un problema con DNSSEC y se negó a resolver el dominio.

Verificación del bloqueo de anuncios:


dig @ВАШ_IP_АДРЕС doubleclick.net # Consulta a un dominio bloqueado

Debería recibir una respuesta NXDOMAIN (dominio inexistente) o, si usó redirect, entonces 0.0.0.0 o 127.0.0.1.

Verificación de la velocidad de caché:


dig @ВАШ_IP_АДРЕС example.com # Primera consulta
dig @ВАШ_IP_АДРЕС example.com # Segunda consulta

Preste atención al tiempo de consulta (Query time) en la salida. La segunda consulta debería ser significativamente más rápida que la primera, ya que la respuesta se tomará de la caché.

Healthcheck:

Se puede usar un comando simple ping o curl si su Unbound escucha una IP externa, pero para verificar un servidor DNS, dig o nslookup son los más adecuados.

Para un monitoreo más detallado, se puede configurar la exportación de métricas de Unbound a Prometheus u otro sistema de monitoreo, pero esto está fuera del alcance de esta guía.

4. Configuración del sistema para usar Unbound

Para que sus dispositivos utilicen Unbound, puede cambiar la configuración de DNS en su sistema operativo o en su enrutador. Se recomienda configurar el enrutador para que todos los dispositivos de su red utilicen Unbound automáticamente.

Configuración en Linux (ejemplo):


sudo nano /etc/resolv.conf # Edición del archivo resolv.conf (a menudo sobrescrito)

Agregue o cambie la línea nameserver a la IP de su VPS:


nameserver ВАШ_IP_АДРЕС
nameserver 127.0.0.1 # Si está probando Unbound en el mismo VPS

Para una configuración más permanente, use netplan (Ubuntu Server) o systemd-resolved:


# Ejemplo para Netplan (Ubuntu Server 24.04)
sudo nano /etc/netplan/00-installer-config.yaml

Cambie la sección nameservers:


network:
  ethernets:
    enp0s3: # Nombre de su interfaz de red
      dhcp4: no
      addresses:
        - 192.168.1.10/24 # Su IP estática
      routes:
        - to: default
          via: 192.168.1.1 # IP de su puerta de enlace
      nameservers:
        addresses: [ВАШ_IP_АДРЕС, 8.8.4.4] # Agregue su Unbound y un DNS de respaldo
  version: 2

sudo netplan try
sudo netplan apply

Configuración en Windows/macOS:

En la configuración del adaptador de red, cambie el servidor DNS preferido a la dirección IP de su VPS. Agregue un servidor DNS secundario (por ejemplo, 8.8.4.4) para tener una opción de respaldo si su VPS no está disponible.

Configuración en el enrutador:

Acceda al panel de control de su enrutador y, en la sección de configuración de WAN/LAN o del servidor DHCP, especifique la dirección IP de su VPS de Unbound como el servidor DNS principal. Esta es la forma más conveniente de aplicar Unbound a todos los dispositivos de su red doméstica.

Copias de seguridad y mantenimiento

Diagrama: Copias de seguridad y mantenimiento
Diagrama: Copias de seguridad y mantenimiento

El funcionamiento fiable de cualquier servidor es imposible sin copias de seguridad regulares y mantenimiento planificado. Unbound, aunque no almacena datos críticos, requiere una copia de seguridad de sus archivos de configuración y de las sugerencias raíz.

1. Qué respaldar

  • Archivos de configuración de Unbound: /etc/unbound/unbound.conf y todos los archivos en /etc/unbound/unbound.conf.d/. Esto incluye su configuración personalizada, listas de bloqueo, etc.
  • Sugerencias raíz y claves DNSSEC: /var/lib/unbound/root.key y /var/lib/unbound/root.hints. Aunque se pueden restaurar usando unbound-anchor, tenerlos en una copia de seguridad no está de más.

2. Script simple de copia de seguridad automática

Crearemos un script simple que archivará los archivos necesarios y los enviará a un lugar seguro. Como ejemplo, usaremos tar para archivar y rsync para copiar a otro servidor o a un almacenamiento en la nube (por ejemplo, compatible con S3).

Cree el directorio para las copias de seguridad y el script en sí:


sudo mkdir -p /var/backups/unbound
sudo nano /usr/local/bin/backup-unbound.sh

Contenido de /usr/local/bin/backup-unbound.sh:


#!/bin/bash

# Directorio para copias de seguridad temporales
BACKUP_DIR="/var/backups/unbound"
# Nombre del archivo de copia de seguridad
TIMESTAMP=$(date +%Y%m%d-%H%M%S)
BACKUP_FILE="$BACKUP_DIR/unbound_config_$TIMESTAMP.tar.gz"
# Directorios y archivos para la copia de seguridad
CONFIG_FILES="/etc/unbound /var/lib/unbound/root.key"

# Eliminar copias de seguridad antiguas (por ejemplo, más de 7 días)
find "$BACKUP_DIR" -type f -name "unbound_config_*.tar.gz" -mtime +7 -delete

# Crear archivo
sudo tar -czvf "$BACKUP_FILE" $CONFIG_FILES

# Verificar que el archivo ha sido creado
if [ $? -eq 0 ]; then
    echo "Unbound backup created: $BACKUP_FILE"

    # Dónde almacenar (S3 externo / VPS separado)
    # Ejemplo para rsync a otro servidor (se necesita clave SSH sin contraseña)
    # Reemplace USER, REMOTE_HOST, REMOTE_PATH con sus datos
    # rsync -avz "$BACKUP_FILE" USER@REMOTE_HOST:REMOTE_PATH/
    # Ejemplo para AWS S3 CLI (requiere AWS CLI instalado y configurado)
    # aws s3 cp "$BACKUP_FILE" s3://YOUR_S3_BUCKET_NAME/unbound-backups/

    # Para demostración, simplemente lo dejamos localmente
    echo "Backup stored locally at $BACKUP_FILE"
else
    echo "Fallo al crear la copia de seguridad de Unbound."
fi

Haga el script ejecutable:


sudo chmod +x /usr/local/bin/backup-unbound.sh

Verifique su funcionamiento:


sudo /usr/local/bin/backup-unbound.sh
ls -l /var/backups/unbound/

3. Configuración de Cron para el inicio automático

Agregaremos el script a la programación de cron para que se ejecute diariamente, por ejemplo, a las 3:00 de la mañana.


sudo crontab -e

Agregue la siguiente línea al final del archivo:


0 3 * * * /usr/local/bin/backup-unbound.sh > /dev/null 2>&1

Esta línea significa: a las 3 horas y 0 minutos de cada día de la semana y del mes, ejecutar el script, redirigiendo toda la salida a /dev/null (para no recibir correos electrónicos en la cuenta de root).

4. Dónde almacenar (S3 externo / VPS separado)

Almacenamiento de objetos compatible con S3 externo: Esta es la opción más fiable y escalable. Use aws cli o rclone para subir las copias de seguridad. Necesitará configurar las credenciales y los permisos de acceso.


# Ejemplo para rclone (requiere configuración previa de rclone config)
# rclone copy "$BACKUP_FILE" remote_s3_alias:your-bucket/unbound-backups/

VPS separado: Puede usar rsync o scp para copiar las copias de seguridad a otro de sus VPS. Asegúrese de que el VPS de destino tenga suficiente espacio y que el acceso SSH sin contraseña esté configurado para el usuario bajo el cual se ejecuta el script de copia de seguridad.

Importante: Nunca almacene las copias de seguridad en el mismo VPS del que está haciendo la copia de seguridad. En caso de fallo del disco o compromiso del servidor, perderá tanto los datos como las copias de seguridad.

5. Actualizaciones: rolling vs ventana de mantenimiento

Mantener Unbound y el sistema operativo actualizados es fundamental para la seguridad. Sin embargo, el proceso de actualización puede interrumpir temporalmente el funcionamiento del servidor DNS.

  • Actualizaciones continuas (rolling updates): Para Unbound, esto significa la actualización automática de los paquetes del sistema sin una ventana de mantenimiento dedicada. Esto es conveniente, pero existe el riesgo de que una actualización pueda causar una interrupción temporal o requerir intervención manual. Para sistemas críticos, es mejor evitar las actualizaciones completamente automáticas.
  • Ventana de mantenimiento: Enfoque recomendado. Programe un tiempo regular (por ejemplo, una vez al mes) para actualizar el sistema. Durante este tiempo, puede iniciar manualmente la actualización, verificar los registros y asegurarse de que Unbound se haya reiniciado correctamente.

Procedimiento de actualización:


sudo apt update # Actualizar lista de paquetes
sudo apt upgrade -y # Instalar actualizaciones. Unbound se reiniciará automáticamente si su paquete se actualiza.
sudo apt autoremove -y # Eliminar paquetes innecesarios
sudo unbound-anchor -a /var/lib/unbound/root.key # Actualizar sugerencias raíz y claves DNSSEC
sudo systemctl status unbound # Verificar el estado de Unbound después de la actualización

También se recomienda verificar periódicamente el sitio web oficial de Unbound o el repositorio del proyecto en GitHub para nuevas versiones y cambios importantes en la configuración.

Recomendación: Si su Unbound es el único servidor DNS para sus dispositivos, considere usar un segundo servidor DNS de respaldo (por ejemplo, 8.8.4.4 o 1.1.1.1) en la configuración de su sistema/router. Esto asegurará un acceso ininterrumpido a Internet durante el mantenimiento de su VPS.

Solución de problemas + Preguntas frecuentes

En esta sección, abordaremos problemas comunes que pueden surgir al implementar Unbound y proporcionaremos respuestas a preguntas frecuentes.

1. Unbound no se inicia o arroja un error

Causa: Con mayor frecuencia, esto se debe a errores en el archivo de configuración o a un conflicto de puertos.

Qué verificar:

  • Configuración: Ejecute sudo unbound-checkconf. Este comando verificará la sintaxis de sus archivos de configuración. Si hay errores, indicará la línea y el archivo.
  • Registros: Verifique los registros del sistema de Unbound: sudo journalctl -u unbound -f. Esto mostrará las últimas entradas de registro relacionadas con Unbound, que pueden indicar la causa del fallo (por ejemplo, "address already in use").
  • Conflicto de puertos: Asegúrese de que el puerto 53 (UDP/TCP) no esté ocupado por otro proceso. Use sudo lsof -i :53 o sudo netstat -tulnp | grep 53.

Cómo solucionarlo: Corrija los errores en la configuración según la salida de unbound-checkconf. Si el puerto está ocupado, cambie el puerto para Unbound (menos deseable) o detenga el otro servicio que lo está usando.

2. Las consultas DNS no se resuelven o son muy lentas

Causa: Problemas de conectividad de red, configuración incorrecta del firewall o problemas con DNSSEC.

Qué verificar:

  • Firewall: Asegúrese de que UFW (u otro firewall) permita las conexiones entrantes en el puerto 53 (UDP y TCP) desde las direcciones IP de sus clientes. sudo ufw status verbose.
  • Conectividad de red: Asegúrese de que su VPS tenga acceso a Internet y pueda alcanzar los servidores DNS raíz. Pruebe ping 1.1.1.1 o ping google.com desde su VPS.
  • Configuración del cliente: Asegúrese de que la dirección IP de su VPS esté configurada como servidor DNS en su dispositivo o router.
  • DNSSEC: Si Unbound está configurado para DNSSEC, pero hay problemas con los anclajes de confianza o las firmas, esto puede causar SERVFAIL. Verifique sudo unbound-anchor -a /var/lib/unbound/root.key.

Cómo solucionarlo: Abra los puertos necesarios en el firewall. Verifique la configuración de red del VPS. Asegúrese de que los clientes estén configurados correctamente. Actualice las claves raíz de DNSSEC.

3. El bloqueo de anuncios no funciona

Causa: Listas de bloqueo incorrectas o Unbound no las cargó.

Qué verificar:

  • Archivo de bloqueo: Asegúrese de que el archivo adblock_generated.conf (o su archivo personalizado) exista y contenga las entradas correctas.
  • Inclusión del archivo: Verifique que en /etc/unbound/unbound.conf.d/custom-settings.conf haya una línea include: "/etc/unbound/unbound.conf.d/adblock_generated.conf".
  • Reinicio de Unbound: Asegúrese de que Unbound se haya reiniciado después de cambiar los archivos de bloqueo.
  • TTL de la caché: Es posible que los dominios que intenta bloquear ya estén en caché. Intente limpiar la caché: sudo unbound-control reload.

Cómo solucionarlo: Corrija las rutas de los archivos, reinicie Unbound. Actualice las listas de bloqueo y asegúrese de que estén en el formato correcto.

4. ¿Qué configuración mínima de VPS es adecuada?

Para Unbound, que es una aplicación bastante ligera, un VPS con 1 vCPU, 512 MB de RAM y 10-20 GB de disco SSD/NVMe será suficiente. Esta configuración bastará para uso personal o para dar servicio a una pequeña red doméstica. La estabilidad de la conexión de red y un ping bajo a los servidores DNS raíz son más importantes que los recursos computacionales excesivos.

5. ¿Qué elegir: VPS o dedicado para esta tarea?

Para la implementación de Unbound DNS, en la gran mayoría de los casos, un VPS es la elección óptima. Unbound no requiere recursos significativos de CPU o RAM, y un VPS puede manejar fácilmente la carga incluso de varios cientos de usuarios. Los servidores dedicados suelen ser excesivos para esta tarea y solo se justifican en caso de una carga extremadamente alta (decenas de miles de consultas por segundo), la necesidad de aislamiento físico para cumplir con requisitos normativos estrictos o si este servidor se utilizará para otras tareas significativamente más intensivas en recursos.

6. ¿Se puede usar Unbound para DNS-over-TLS (DoT) o DNS-over-HTTPS (DoH) para clientes?

Unbound, en la configuración básica descrita en esta guía, funciona como un servidor DNS recursivo tradicional a través de UDP/TCP en el puerto 53. Para proporcionar DNS-over-TLS o DNS-over-HTTPS a los clientes, se requiere una configuración adicional. Unbound admite consultas salientes a través de DoT a servidores upstream, pero para servir a clientes DoT/DoH, generalmente se requiere un servidor proxy (por ejemplo, Nginx, Caddy) o software especializado (por ejemplo, Stubby para DoT, o servidores DoH especializados) que escuchará las solicitudes a través de HTTPS/TLS y las reenviará al Unbound local. Esta es una configuración más compleja y va más allá del alcance de esta guía básica.

7. ¿Cómo monitorear el funcionamiento de Unbound?

Para un monitoreo básico, use sudo systemctl status unbound para verificar el estado del servicio y sudo journalctl -u unbound -f para ver los registros. Para un monitoreo más avanzado, puede usar unbound-control status para obtener el estado actual y las estadísticas de la caché. Para la recopilación de métricas y la visualización, puede configurar la exportación de métricas de Unbound a Prometheus usando unbound_exporter y mostrarlas en Grafana. Esto permitirá monitorear la carga, el número de consultas, los aciertos de caché y otros indicadores importantes de rendimiento.

8. ¿Cómo asegurar la alta disponibilidad de Unbound?

Para asegurar la alta disponibilidad, un solo servidor Unbound no es suficiente. Necesitará implementar al menos dos servidores Unbound en diferentes VPS en distintos centros de datos. Luego, puede configurarlos en modo Active-Passive o Active-Active, utilizando Anycast DNS, o simplemente proporcionar a los clientes las direcciones IP de ambos servidores como DNS principal y de respaldo. Esto garantiza que, incluso si un servidor falla, el segundo continuará procesando las consultas DNS.

Conclusiones y próximos pasos

Conclusiones y próximos pasos

Diagrama: Conclusiones y próximos pasos
Diagrama: Conclusiones y próximos pasos

Hemos desplegado y configurado con éxito un servidor DNS Unbound en su VPS, convirtiéndolo en una potente herramienta para proporcionar acceso a internet privado, seguro y rápido. Ahora usted controla sus consultas DNS, evitando intermediarios de terceros y protegiéndose contra la suplantación de DNS con DNSSEC. Este es un paso importante hacia la creación de su propia infraestructura de internet independiente y segura.

Próximos pasos para una mayor optimización y escalabilidad:

  • Integración con la red local: Configure su router doméstico o servidor DHCP para que asigne automáticamente la dirección IP de su VPS Unbound como servidor DNS principal para todos los dispositivos de su red. Esto garantizará el uso centralizado de su DNS privado.
  • Bloqueo avanzado: Automatice la actualización de las listas de bloqueo de anuncios y dominios maliciosos utilizando scripts y cron, como se describió anteriormente. Investigue diferentes listas de bloqueo (por ejemplo, OISD, AdGuard Home lists) y elija las que mejor se adapten a sus necesidades.
  • Monitorización y registro: Configure una monitorización más detallada de Unbound utilizando unbound-control para obtener estadísticas y considere la integración con Prometheus/Grafana para visualizar el rendimiento y el estado del servidor. Esto le ayudará a reaccionar rápidamente ante cualquier problema y a optimizar el funcionamiento.

¿Te fue útil esta guía?

Despliegue de DNS Unbound en VPS para internet privado y rápido
support_agent
Valebyte Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.