GNU/Linux >> Tutoriales Linux >  >> Debian

Configure su propia resolución de DNS en Debian 10 Buster con BIND9

Este tutorial le mostrará cómo configurar un solucionador de DNS local en Debian 10 Buster, con el software BIND9 DNS ampliamente utilizado. Hay muchos sinónimos para la resolución de DNS, 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)
  • Recurso de DNS
  • servidor DNS recursivo
  • resolver recursivo

También tenga en cuenta que un servidor DNS también puede llamarse servidor de nombres. 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 PC también tiene un resolutor, aunque se llama stub resolutor debido a su capacidad limitada. Un resolutor de código auxiliar es un pequeño cliente DNS en la computadora del usuario final que recibe solicitudes de DNS de aplicaciones como Firefox y las reenvía a un resolutor recursivo. Casi todos los resolutores pueden almacenar en caché la respuesta DNS para mejorar el rendimiento, por lo que también se denominan servidores DNS de almacenamiento en caché.

¿Por qué ejecutar su propio solucionador de DNS?

Normalmente, su computadora o enrutador usa la resolución de DNS de su ISP para consultar los nombres de dominio para obtener una dirección IP. Ejecutar su propio solucionador de DNS local puede acelerar las búsquedas de DNS, porque

  1. El sistema de 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 una respuesta de DNS directamente desde la memoria caché en el sistema de resolución.
  2. Se elimina la latencia de la red entre su computadora y la resolución de DNS (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 correo no deseado, se recomienda que ejecute una resolución de DNS local para acelerar las búsquedas de DNS. 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 es posible que desee ejecutar su propio sistema de resolución de DNS si no desea que su historial de navegación de Internet se almacene en un servidor de terceros.

Si posee un sitio web y desea que su propio servidor DNS maneje la resolución de nombres para su nombre de dominio en lugar de usar el servidor DNS de su registrador de dominios, entonces deberá configurar un servidor DNS autorizado, que es diferente a un solucionador de DNS. BIND puede actuar como un servidor DNS autorizado y un solucionador de DNS al mismo tiempo, pero es una buena práctica separar los dos roles en diferentes casillas . Este tutorial muestra cómo configurar una resolución de DNS local y, dado que se usará en el host local/red local, no se necesita encriptación (DNS sobre TLS o DNS sobre HTTPS). La configuración de un servidor DoT o DoH se tratará en un artículo futuro.

Tenga en cuenta que debe tener privilegios de root al instalar el software en Debian. Puedes agregar sudo al comienzo de un comando, o use su - Comando para cambiar a usuario root.

Instalar BIND9 en Debian 10 Buster

BIND (Berkeley Internet Name Domain) es un software de servidor DNS de código abierto ampliamente utilizado en Unix/Linux debido a su estabilidad y alta calidad. Originalmente fue desarrollado por UC Berkeley, y más tarde, en 1994, su desarrollo se trasladó a Internet Systems Consortium, Inc (ISC).

Ejecute el siguiente comando para instalar BIND 9 en Debian 10 Buster desde el repositorio predeterminado. BIND 9 es la versión actual y BIND 10 es un proyecto muerto.

sudo apt update
sudo apt install bind9 bind9utils bind9-doc bind9-host dnsutils

Verifique la información de la versión.

sudo named -v

Salida de muestra:

BIND 9.11.5-P4-5.1-Debian (Extended Support Version) <id:998753c>

Para verificar el número de versión y las opciones de compilación, ejecute

sudo named -V

De forma predeterminada, BIND se inicia automáticamente después de la instalación. Puede comprobar su estado con:

systemctl status bind9

Sugerencia:si el comando anterior no se cierra de inmediato, presione Q.

Si no se está ejecutando, inícielo con:

sudo systemctl start bind9

Y habilite el inicio automático en el momento del arranque:

sudo systemctl enable bind9

El servidor BIND se ejecutará como bind usuario, que se crea durante la instalación y escucha en el puerto TCP y UDP 53, como se puede ver ejecutando el siguiente comando:

sudo netstat -lnptu | grep named

Por lo general, las consultas de DNS se envían al puerto UDP 53. El puerto TCP 53 es para respuestas con un tamaño superior a 512 bytes.

El demonio BIND se llama named . (Un daemon es una pieza de software que se ejecuta en segundo plano). El named binario es instalado por el bind9 paquete y hay otro binario importante:rndc , el controlador del demonio de nombre remoto, que es instalado por bind9utils paquete. El rndc binary se usa para recargar/detener y controlar otros aspectos del demonio BIND. La comunicación se realiza a través del puerto TCP 953.

Por ejemplo, podemos comprobar el estado del servidor de nombres BIND.

sudo rndc status

Configuraciones para un solucionador de DNS local

/etc/bind/ es el directorio que contiene configuraciones para BIND.

  • nombre.conf :el archivo de configuración principal que incluye configuraciones de otros tres archivos.
  • db.127 :archivo de zona de mapeo inverso IPv4 localhost.
  • db.local :archivo de zona de asignación de IPv4 e IPv6 de reenvío localhost.
  • db.vacío :un archivo de zona vacío

El paquete bind9 en Debian 10 no incluye un db.root ahora usa el archivo de sugerencias raíz en /usr/share/dns/root.hints . Las pistas de raíz Los resolutores de DNS utilizan el archivo para consultar los servidores DNS raíz. Hay 13 grupos de servidores DNS raíz, desde a.root-servers.net a m.root-servers.net .

Listo para usar, el servidor BIND9 en Debian proporciona un servicio recursivo solo para host local y clientes de red local. Las consultas externas serán denegadas. Por lo tanto, no tiene que editar los archivos de configuración. Para que se familiarice con las configuraciones de BIND 9, le mostraré cómo habilitar el servicio de recursión de todos modos.

El archivo de configuración principal de BIND /etc/bind/named.conf obtiene la configuración de otros 3 archivos.

  • /etc/bind/named.conf.options
  • /etc/bind/named.conf.local
  • /etc/bind/named.conf.default-zones

Para habilitar el servicio de recursividad, edite el primer archivo.

sudo nano /etc/bind/named.conf.options

En las options cláusula, agregue las siguientes líneas. Reemplace las direcciones IP en allow-recursion declaración con sus propias direcciones de red local.

 // hide version number from clients for security reasons.
 version "not currently available";

 // optional - BIND default behavior is recursion
 recursion yes;

 // provide recursion service to trusted clients only
 allow-recursion { 127.0.0.1; 192.168.0.0/24; 10.10.10.0/24; };

 // enable the query log
 querylog yes;

Guarde y cierre el archivo. Luego pruebe la sintaxis del archivo de configuración.

sudo named-checkconf

Si la prueba es exitosa (indicado por una salida silenciosa), reinicie BIND9.

sudo systemctl restart bind9

Si tiene un firewall ejecutándose en el servidor BIND, entonces necesita abrir el puerto 53 para permitir que los clientes LAN envíen consultas DNS. Si usa el firewall UFW, puede ejecutar el siguiente comando.

sudo ufw allow in from 192.168.0.0/24 to any port 53

Esto abrirá el puerto TCP y UDP 53 a la red privada 192.168.0.0/24. Luego, desde otra computadora en la misma LAN, podemos ejecutar el siguiente comando para consultar el registro A de google.com. Reemplace 192.168.0.102 con la dirección IP de su sistema de resolución BIND.

dig A google.com @192.168.0.102

Ahora en el sistema de resolución BIND, verifique el registro de consultas con el siguiente comando.

sudo journalctl -eu bind9

Esto mostrará el último mensaje de registro de la unidad de servicio bind9. Puedo encontrar la siguiente línea en el registro, que indica que se recibió una consulta de DNS para el registro A de google.com desde el puerto 57806 de la dirección IP 192.168.0.103.

named[1162]: client @0x7f4d2406f0f0 192.168.0.103#57806 (google.com): query: google.com IN A +E(0)K (192.168.0.102)

Configuración de la resolución de DNS predeterminada en Debian 10 Buster Server

En el servidor BIND, debemos configurar 127.0.0.1 como el solucionador de DNS predeterminado. Puede verificar la resolución de DNS actual en Debian 10 con el siguiente comando.

cat /etc/resolv.conf

Salida de muestra:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#      DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 2001:19f0:300:1704::6
nameserver 108.61.10.10

El paquete bind9 en Debian 10 se envía con una unidad de servicio de Systemd bind9-resolvconf.service , que nos ayudará a establecer BIND como resolución de DNS predeterminada en el servidor Debian. De manera predeterminada, este servicio está deshabilitado, debemos iniciarlo y habilitar el inicio automático en el momento del arranque.

sudo systemctl start bind9-resolvconf

sudo systemctl enable bind9-resolvconf

Ahora puede comprobar el contenido de /etc/resolv.conf otra vez. Como puede ver, 127.0.0.1 (BIND) es ahora el solucionador de DNS predeterminado en Debian 10 Buster.

Si su resolución de DNS no es 127.0.0.1, es posible que su sistema no tenga resolvconf binario, lo que hace que bind9-resolvconf servicio a fallar. Necesitas instalar el resolvconf paquete y reinicie el servicio.

sudo apt install resolvconf

sudo systemctl restart bind9-resolvconf

Configuración del solucionador de DNS predeterminado en los equipos cliente

Ahora puede configurar otros cálculos en la LAN para usar el servidor BIND como resolución de DNS. Para computadoras con Windows y MacOS, puede buscar en Google para averiguar cómo configurar los solucionadores de DNS predeterminados. Aquí le mostraré cómo configurar la resolución de DNS en computadoras de escritorio Linux. El siguiente método funciona en cualquier distribución de Linux que use NetworkManager.

Haga clic en el ícono de Network Manager en su escritorio de Linux para encontrar Edit connections . (En algunas distribuciones de Linux, debe hacer clic con el botón derecho en el Administrador de red).

Luego, seleccione la conexión actual y haga clic en el icono del engranaje para editar esta conexión.

Seleccione la pestaña de configuración de IPv4, cambie el método de Automatic(DHCP) a Automatic(DHCP) addresses only , lo que evitará que su sistema Ubuntu obtenga la dirección del servidor DNS de su enrutador. A continuación, especifique un servidor DNS. Aquí ingreso la dirección IP del servidor BIND en mi LAN.

Guarde sus cambios. Luego reinicie NetworkManager para que los cambios surtan efecto.

sudo systemctl restart NetworkManager

Una vez que se haya vuelto a conectar, vuelva a hacer clic en el icono del Administrador de red y seleccione connection information . Puede ver que su computadora de escritorio Linux ahora está usando su servidor BIND DNS.

Cómo deshabilitar IPv6 en BIND

Si no utiliza IPv6 en su red, es una buena idea desactivar IPv6 en BIND; de lo contrario, habrá muchos errores sobre IPv6 en el registro de BIND, como se muestra a continuación.

network unreachable resolving 'mirrors.fedoraproject.org/A/IN': 2001:4178:2:1269:dead:beef:cafe:fed5#53
network unreachable resolving 'mirrors.fedoraproject.org/AAAA/IN': 2001:4178:2:1269:dead:beef:cafe:fed5#53
network unreachable resolving 'mirrors.fedoraproject.org/A/IN': 2610:28:3090:3001:dead:beef:cafe:fed5#53
network unreachable resolving 'mirrors.fedoraproject.org/AAAA/IN': 2610:28:3090:3001:dead:beef:cafe:fed5#53

Para deshabilitar IPv6 en BIND en Ubuntu, simplemente abra /etc/default/bind9 archivo

sudo nano /etc/default/bind9

Añadir -4 a las OPCIONES.

OPTIONS="-u bind -4"

Guarde y cierre el archivo. Luego reinicie BIND y listo.

sudo systemctl restart bind9

FALLO DE SERVICIO DE ENLACE

Si su sistema de resolución de BIND no puede responder consultas de DNS (SERVFAIL) y ve la siguiente línea en el registro de BIND.

dnssec: warning: managed-keys-zone: Unable to fetch DNSKEY set '.': timed out

Probablemente se deba a que su servidor no tiene una conectividad IPv6 que funcione. Esto le sucedió a uno de mis servidores. Pensé que la conectividad IPv6 funcionaba como de costumbre, pero de repente se interrumpió por razones que desconocía. Una vez que deshabilité IPv6 en BIND, la resolución DNS volvió a funcionar.

Reinicio automático de BIND

Si por alguna razón su proceso Bind se cancela, debe ejecutar el siguiente comando para reiniciarlo.

sudo systemctl restart bind9

En lugar de escribir manualmente este comando, podemos hacer que bind se reinicie automáticamente editando el named.service unidad de servicio systemd. Para anular la configuración predeterminada del servicio systemd, creamos un directorio separado.

sudo mkdir -p /etc/systemd/system/bind9.service.d/

Luego cree un archivo en este directorio.

sudo nano /etc/systemd/system/bind9.service.d/restart.conf

Agregue las siguientes líneas en el archivo, lo que hará que Bind se reinicie automáticamente 5 segundos después de que se detecte una falla.

[Service]
Restart=always
RestartSec=5s

Guarde y cierre el archivo. Luego recarga systemd.

sudo systemctl daemon-reload

Para verificar si esto funcionaría, elimine Bind con:

sudo pkill named

Luego verifique el estado de enlace. Verá que Bind se reinicia automáticamente.

systemctl status bind9

BIND max-cache-size

BIND puede almacenar en caché los resultados de DNS en el servidor para acelerar la búsqueda de DNS para los clientes. BIND asume que está ejecutando un sistema de resolución de DNS dedicado, es decir, ningún otro servicio web se está ejecutando en el mismo host, por lo que el tamaño de caché predeterminado (definido por max-cache-size ) se establece en el 90 % de la RAM total para lograr el mejor rendimiento. Puede ver una línea como la siguiente en el registro BIND (sudo journalctl -eu bind9 ) cuando se inicia BIND.

none:100: 'max-cache-size 90%' - setting to 7165MB (out of 7961MB)

Tenga en cuenta que BIND no usará el 90% de su RAM inmediatamente. Si solo hay unas pocas solicitudes de DNS, BIND usa solo una pequeña cantidad de RAM, porque no hay muchos resultados de DNS para almacenar en caché. Si hay muchas solicitudes de DNS, usará mucha RAM para almacenar la caché de DNS.

Si su RAM es limitada, es posible que no quiera que BIND use el 90% de su RAM para el caché. Edite el archivo de configuración de BIND /etc/bind/named.conf.options .

sudo nano /etc/bind/named.conf.options

Agregue la siguiente directiva en las options cláusula. Cambia el 50% a tu valor preferido.

max-cache-size 50%;

Reinicie BIND para que el cambio surta efecto.

sudo systemctl restart bind9

Conclusión

Espero que este tutorial le haya ayudado a configurar un solucionador de DNS local en Debian 10 Buster con BIND9. Como siempre, si encuentra útil esta publicación, suscríbase a nuestro boletín gratuito para obtener más consejos y trucos. Cuídate 🙂


Debian
  1. Cómo establecer una dirección IP estática en Debian 10 Buster

  2. Cómo configurar un servidor Samba en Debian 10 Buster

  3. Cómo configurar un servidor NFS en Debian 10 Buster

  4. Cómo instalar Steam con Steam Play en Debian 10 Buster

  5. Configurar un servidor de correo con PostfixAdmin en Debian 9

Cómo configurar fácilmente un servidor de correo en Debian 10 Buster con iRedMail

Ejecute su propio sitio web para compartir videos con YouPHPTube en Debian 10 Buster

Configurar el servidor DNS autorizado de BIND en Debian 10 Buster

Configurar DNS sobre HTTPS (DoH) Resolver en Ubuntu con DNSdist

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