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é
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
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:
- 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.
- 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
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
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
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.