GNU/Linux >> Tutoriales Linux >  >> Ubuntu

Configurar el solucionador de DNS independiente en el servidor Ubuntu 20.04

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 🙂


Ubuntu
  1. Cómo configurar e instalar Squid Proxy Server en Ubuntu 18.04

  2. Cómo configurar WireGuard en Ubuntu 22.04

  3. Cómo instalar el sistema de resolución de DNS Unbound en Ubuntu 22.04

  4. Cómo configurar un servidor TeamSpeak en Ubuntu 16.04

  5. Cómo configurar el solucionador de DNS no vinculado en Ubuntu 20.04

Cómo configurar fácilmente un DNS sobre TLS Resolver con Nginx en Ubuntu

Cómo configurar Quad 9 DNS en Ubuntu 16.04 y Ubuntu 17.10 Desktop

Configurar un solucionador de DNS local en Ubuntu 18.04, 16.04 con BIND9

Configurar el solucionador de DNS local en Ubuntu 20.04 con BIND9

Cómo instalar el servidor DNS en Ubuntu 20.04 LTS

Configurar Ubuntu Server con EHCP (LÁMPARA, DNS, FTP, Correo)