Este tutorial le mostrará cómo configurar una resolución de DNS local en Ubuntu 20.04 con Unbound . Un solucionador de DNS es conocido por muchos nombres, algunos de los cuales se enumeran a continuación. Todos se refieren a lo mismo.
- resolución completa (en contraste con la resolución de stub)
- servidor DNS recursivo
- servidor de nombres recursivo
- resolver recursivo
- Recurso de DNS
Ejemplos de resolución de DNS son 8.8.8.8
(servidor DNS público de Google) y 1.1.1.1
(Servidor DNS público de Cloudflare). El sistema operativo de su computadora también tiene un resolutor, aunque se llama stub resolutor debido a su capacidad limitada. Un resolver de código auxiliar es un pequeño cliente de DNS en la computadora del usuario final que recibe solicitudes de DNS de aplicaciones como Firefox y las reenvía a un resolver recursivo . Casi todos los resolutores pueden almacenar en caché la respuesta DNS para mejorar el rendimiento, por lo que también se denominan servidor DNS en caché. .
¿Por qué ejecutar su propio solucionador de DNS?
Por lo general, su computadora, enrutador o servidor usa la resolución de DNS de su ISP para consultar los nombres de DNS, entonces, ¿por qué ejecutar una resolución de DNS local?
- Puede acelerar las búsquedas de DNS, porque la resolución de DNS local solo escucha sus solicitudes de DNS y no responde las solicitudes de DNS de otras personas, por lo que tiene muchas más posibilidades de obtener respuestas de DNS directamente desde la memoria caché en la resolución. La latencia de la red entre su computadora y la resolución de DNS se elimina (casi cero), por lo que las consultas de DNS se pueden enviar a los servidores DNS raíz más rápidamente.
- Si ejecuta un servidor de correo y utiliza listas negras de DNS (DNSBL) para bloquear el spam, debe ejecutar su propio sistema de resolución de DNS, ya que algunas listas negras de DNS, como URIBL, rechazan las solicitudes de los dispositivos de resolución de DNS públicos.
- Si ejecuta su propio servidor VPN en un VPS (servidor privado virtual), también es una buena práctica instalar un sistema de resolución de DNS en el mismo VPS.
- También puede ejecutar su propia resolución de DNS si no desea que su historial de navegación de Internet se almacene en un servidor de terceros.
Sugerencia :Local
no significa la computadora de su casa. Más bien, significa que la resolución de DNS se ejecuta en la misma caja o en la misma red que el cliente de DNS. Puede instalar el sistema de resolución de DNS Unbound en la computadora de su hogar. Es local para la computadora de su hogar. También puede instalar la resolución de DNS sin límites en un servidor en la nube, y es local para el servidor en la nube.
Resolución de DNS independiente
Unbound es un solucionador de validación de DNS de código abierto, lo que significa que puede realizar la validación de DNSSEC para garantizar que la respuesta de DNS sea auténtica. Funciones independientes:
- Ligero y extremadamente rápido, ya que no proporciona una funcionalidad completa de servidor DNS autorizado. En uno de mis servidores, Unbound usa una cuarta parte de la memoria requerida por BIND9.
- caché de respuesta DNS
- Recuperación previa:recupere los datos que están a punto de caducar para que el cliente no experimente un aumento en la latencia cuando la búsqueda deba rehacerse cuando el TTL caduque en los datos.
- DNS sobre TLS
- DNS sobre HTTPS
- Minimización del nombre de la consulta:envíe una cantidad mínima de información a los servidores ascendentes para mejorar la privacidad.
- Uso agresivo de caché validada por DNSSEC
- Zonas de autoridad, para una copia local de la zona raíz
- DNS64
- DNSCrypt
- Validación de DNSSEC:está habilitada de forma predeterminada en Ubuntu 🙂
- Subred de cliente EDNS
- Puede ejecutarse como un reenviador de DNS.
- Admite datos locales y zona de política de respuesta para dar una respuesta personalizada para ciertos nombres de dominio.
Paso 1:Instale el solucionador de DNS independiente en Ubuntu 20.04
Ejecute el siguiente comando para instalar Unbound en Ubuntu 20.04 desde el repositorio predeterminado.
sudo apt update sudo apt install unbound
Comprobar versión.
unbound -V
Salida de muestra:
De forma predeterminada, Unbound se inicia automáticamente después de la instalación. Compruebas su estado con:
systemctl status unbound
Si no se está ejecutando, inícielo con:
sudo systemctl start unbound
Y habilite el inicio automático en el momento del arranque:
sudo systemctl enable unbound
Nota :si hay otro servicio escuchando en el puerto UDP 53, es posible que no pueda iniciarse. Debe detener ese servicio antes de comenzar sin vincular. Para averiguar qué servicio ya está usando el puerto UDP 53, ejecute el siguiente comando.
sudo ss -lnptu | grep 53
Si instaló el solucionador BIND9 anteriormente, debe ejecutar el siguiente comando para detenerlo y deshabilitarlo, de modo que Unbound pueda escuchar el puerto UDP 53. De manera predeterminada, Unbound escucha en 127.0.0.1:53
y [::1]:53
sudo systemctl disable named --now
Paso 2:Configurar Sin vincular
El archivo de configuración principal para Unbound es /etc/unbound/unbound.conf
. Fuera de la caja, el servidor Unbound en Ubuntu proporciona un servicio recursivo solo para localhost. Las consultas externas serán denegadas.
Edite el archivo de configuración.
sudo nano /etc/unbound/unbound.conf
De forma predeterminada, solo hay una línea de configuración en este archivo.
include: "/etc/unbound/unbound.conf.d/*.conf"
Esto es para incluir los archivos de configuración en /etc/unbound/unbound.conf.d/
directorio, que contiene dos archivos de configuración.
qname-minimisation.conf
:habilita la minimización de QNAME.root-auto-trust-anchor-file.conf
:Habilita la validación de DNSSEC.
No tienes que tocar estos dos archivos. Solo sepa que le harán bien a su resolución de DNS. Ahora necesitamos agregar nuestras configuraciones personalizadas. Puede echar un vistazo al archivo de configuración de ejemplo /usr/share/doc/unbound/examples/unbound.conf
para aprender a configurar Unbound. Para su comodidad, compilé una configuración mínima para usted. Agregue las siguientes líneas en /etc/unbound/unbound.conf
archivo.
server: # the working directory. directory: "/etc/unbound" # run as the unbound user username: unbound verbosity: 2 # uncomment and increase to get more logging. # listen on all interfaces, answer queries from the local subnet. interface: 0.0.0.0 # comment out the following line if your system doesn't have IPv6. interface: ::0 # perform prefetching of almost expired DNS cache entries. prefetch: yes access-control: 10.0.0.0/8 allow access-control: 127.0.0.1/24 allow access-control: 2001:DB8::/64 allow # hide server info from clients hide-identity: yes hide-version: yes remote-control: # Enable remote control with unbound-control(8) here. control-enable: no # what interfaces are listened to for remote control. # give 0.0.0.0 and ::0 to listen to all interfaces. # set to an absolute path to use a unix local name pipe, certificates # are not used for that, so key and cert files need not be present. control-interface: 127.0.0.1 # control-interface: ::1 # port number for remote control operations. control-port: 8953
Las configuraciones anteriores se explican por sí mismas. Hay dos cosas que podría necesitar considerar.
(1) De forma predeterminada, Ubuntu ejecuta el sistema de resolución de stubs resuelto por systemd que escucha en 127.0.0.53:53
. Tienes que detenerlo, para que Unbound pueda vincularse a 0.0.0.0:53
.
sudo systemctl disable systemd-resolved --now
(2) Si el rango de su red local no es 10.0.0.0/8
, necesita cambiar eso, por ejemplo,
access-control: 192.168.0.0/24 allow
por lo que Unbound aceptará consultas de DNS de la red 192.168.0.0/24.
Guarde y cierre el archivo. Luego reinicie Unbound.
sudo systemctl restart unbound
Compruebe el estado. Asegúrate de que se esté ejecutando.
systemctl status unbound
Si tiene un firewall UFW ejecutándose en el servidor Unbound, debe abrir el puerto 53 para permitir que los clientes LAN envíen consultas DNS.
sudo ufw allow in from 10.0.0.0/8 to any port 53
Esto abrirá el puerto TCP y UDP 53 a la red privada 10.0.0.0/8.
Paso 3:Configuración de la resolución de DNS predeterminada en el servidor Ubuntu 20.04
Necesitamos hacer que el servidor Ubuntu 20.04 use 127.0.0.1 como resolución de DNS, por lo que Unbound responderá las consultas de DNS. El paquete sin vincular en Ubuntu se envía con un servicio systemd unbound-resolvconf.service
que se supone que nos ayudará a lograr esto. Sin embargo, descubrí que no funcionará.
En su lugar, puede crear un unbound-resolvconf.service
personalizado archivo.
sudo nano /etc/systemd/system/unbound-resolvconf.service
Agregue las siguientes líneas en este archivo.
[Unit] Description=local unbound via resolvconf After=unbound.service ConditionFileIsExecutable=/sbin/resolvconf [Service] Type=oneshot RemainAfterExit=yes ExecStart=/bin/sh -c 'echo nameserver 127.0.0.1 | /sbin/resolvconf -a lo.unbound' ExecStop=/sbin/resolvconf -d lo.unbound [Install] WantedBy=unbound.service
Guarde y cierre este archivo. Luego recarga systemd.
sudo systemctl daemon-reload
Asegúrese de que su sistema tenga el resolvconf
binario.
sudo apt install openresolv
A continuación, reinicie este servicio.
sudo systemctl restart unbound-resolvconf.service
Ahora revisa el contenido de /etc/resolv.conf
.
cat /etc/resolv.conf
Como puede ver, 127.0.0.1 (sin vincular) es la resolución de DNS predeterminada.
Resolución de problemas
Si ve un valor diferente en /etc/resolv.conf
archivo, eso significa que Unbound todavía no es su resolución de DNS predeterminada. Tenga en cuenta que algunos proveedores de alojamiento como Linode pueden usar un asistente de red para generar automáticamente el /etc/resolv.conf
expediente. Para cambiar la resolución de DNS predeterminada, debe deshabilitar ese asistente de red en el panel de control de alojamiento.
Si este método sigue sin funcionar, quizás se deba a que /etc/resolv.conf
archivo en su servidor Ubuntu no es un enlace simbólico a /run/resolvconf/resolv.conf
. Debe eliminar el /etc/resolv.conf
archivo y cree un enlace simbólico.
sudo rm /etc/resolv.conf sudo ln -s /run/resolvconf/resolv.conf /etc/resolv.conf
Si tiene un cliente VPN de WireGuard ejecutándose en el servidor Ubuntu, debe usar la siguiente configuración de DNS en el archivo de configuración del cliente de WireGuard.
DNS = 127.0.0.1
Luego reinicie el cliente VPN de WireGuard.
Paso 4:Configuración del solucionador de DNS predeterminado en los equipos cliente
En el escritorio de Ubuntu, puede seguir las instrucciones anteriores para configurar el solucionador de DNS predeterminado, pero recuerde reemplazar 127.0.0.1 con la dirección IP del servidor Unbound. Los pasos para configurar el sistema de resolución de DNS predeterminado en MacOS y Windows se pueden encontrar en Internet.
Cómo deshabilitar IPv6 en Unbound
Si su servidor no tiene conectividad IPv6, es una buena idea desactivar IPv6 en Unbound para reducir las búsquedas de DNS innecesarias sobre IPv6. Para deshabilitar IPv6 en Unbound en Ubuntu, simplemente agregue la siguiente línea en el server:
cláusula en /etc/unbound/unbound.conf
archivo.
do-ip6: no
Guarde y cierre el archivo. Luego reinicie Unbound.
sudo systemctl restart unbound
DNSSEC sin vincular
DNSSEC es una forma de validar que la respuesta de DNS no se altere. Está habilitado de forma predeterminada si instala Unbound desde el repositorio predeterminado de Ubuntu. Hagamos una consulta DNS rápida en el servidor Ubuntu 20.04.
dig A linuxbabe.com
Puedes ver el ad
bandera en la respuesta DNS. AD significa datos auténticos.
Tenga en cuenta que el nombre de dominio debe habilitar DNSSEC para que funcione la validación. Si no ve la marca de anuncio, podría significar que el nombre de dominio no ha habilitado DNSSEC.
Datos locales
Puede usar la función de datos locales en Unbound para servir nombres de host internos locales o anular registros de DNS públicos.
Por ejemplo, si instalo Unbound en el servidor web de mi blog, puedo agregar las siguientes cuatro líneas en el server:
cláusula en los archivos de configuración Unbound, para que el dominio siempre se resuelva en localhost.
local-data: "linuxbabe.com A 127.0.0.1" local-data: "www.linuxbabe.com A 127.0.0.1" local-data: "linuxbabe.com AAAA ::1" local-data: "www.linuxbabe.com AAAA ::1"
No se pudo acceder a ningún servidor
Si ve el siguiente error al usar dig
comando en equipos cliente
;; connection timed out; no servers could be reached
Puede ser que la regla de su cortafuegos sea incorrecta o que la resolución Unbound no se esté ejecutando.
Conclusión
Espero que este tutorial le haya ayudado a configurar un solucionador de DNS local en Ubuntu 20.04 con Unbound. Debido a que se usará en una red local/host local, no se necesita encriptación (DNS sobre TLS o DNS sobre HTTPS). Para configurar un solucionador DoT o DoH, lea los siguientes tutoriales.
- Cómo configurar fácilmente un DNS sobre TLS Resolver con Nginx en Ubuntu
- Configurar DNS sobre HTTPS (DoH) Resolver en Ubuntu con DNSdist
Como siempre, si encuentra útil esta publicación, suscríbase a nuestro boletín gratuito para obtener más consejos y trucos. Cuídate 🙂