DNS - Ubuntu Server 22.04
Con Bind9, en un entorno cliente-servidor
A la hora de configurar y administrar una infraestructura de servidores se vuelve importante poder buscar las interfaces de red e IP mediante un nombre. Para ello, podemos configurar un sistema de nombres de dominio (DNS).
Utilizar nombres de dominio completos (FQDN), en lugar de direcciones IP para especificar direcciones de red facilita la configuración de servicios y aplicaciones, ayuda a mejorar la administración de los servidores.
Por tanto, aquí veremos cómo configurar un servidor DNS primario con zonas directa e inversa para la resolución de nombres en nuestra red local. Configuraremos el uso de forwarders
para las consultas externas y dicho servidor DNS será autoritativo
para nuestra red.
Para ello utilizaremos el software de servidor de nombres BIND
(BIND9) en una máquina virtual (MV) Ubuntu 22.04
.
Sería recomendable tener un segundo servidor Ubuntu 22.04 que sirva como servidor DNS secundario NS2.
Requisitos previos
Una MV con Ubuntu Server 22.04
Un adaptador de red:
Red NAT
Observaciones
Debes tener en cuenta que en esta guía el nombre del servidor de DNS principal que vamos a configurar debería ser ns1
, pero utilicé una instalación de Ubuntu Server a la que había llamado haven
y no lo modifiqué.
El dominio para el DNS es haven.local
con lo cual quedaría: haven
.haven.local.
Puedesutilizar una redNAT
en lugar de dos adaptadores (puente o NAT) y la red Interna.
Aunque no lo menciono al inicio, algo que debes tener en cuenta es:
la dirección IP de la red interna o la redNAT que vayas a considerar que, en mi caso es la 192.168.6.100/24 para el servidor.
revisar que adaptador(es) de red(es) tienes configurado en tu VM.
debes tener conexión a Internet desde la VM.
Configurar una dirección IP estática que si bien no es obligatorio, es recomendable. Lo necesitaremos realmente cuando vayamos a configurar el servicio de DHCP en el mismo servidor.
Algunas razones para configurar una IP estática en un servidor DNS:
Estabilidad: Asegura que el servidor DNS siempre se pueda encontrar en la misma dirección. También se utilizan las direcciones dinámicas.
Rendimiento: Pueden ser más eficientes en términos de resolución de nombres, ya que no hay necesidad de actualizar registros de DNS cada vez que cambia la dirección IP.
Seguridad: Facilita la configuración de reglas en el firewall y políticas de seguridad.
Pudieras utlizar una dirección IP dinámica o DHCP para un servidor DNS pero en nuestro caso, no disponemos de servidor DHCP, todo lo contrario, la idea es instalar el servicio en el mismo servidor para que brinde servicios a varios clientes que se conecten al dominio.
Actualizar e instalar paquetes
Actualizamos los repositorios de nuestro sistema:
Una vez hecho esto, procedemos a instalar el paquete Bind9:
Configurar
El primer fichero a editar sería
/etc/bind/named.conf.local
Aquí será donde definiremos las zonas: directa e inversa, para el dominio haven.local haciendo uso de la cláusula zone.
Cada bloque de zona incluirá de que tipo será la zona y el fichero en el que estarán definidas las características, propiedades y entidades del dominio, para cada zona.
Una práctica adecuada sería hacer una copia de seguridad de los archivos de configuración, como es el caso del archivo named.conf.local
para lo cual podemos hacer:
Ahora podemos crear el contenido de cada zona en el fichero de configuración: named.conf.local. Esto es:
Ahora comprobemos que la configuración es la correcta y no hayamos cometido errores en la sintaxis. Para ello, usamos el comando:
Si tras lanzar el comando no nos devuelve nada, significa que no se han encontrado errores.
Ficheros de zona
Ahora vamos a crear los ficheros de zona que hemos indicado en la configuración. Para ello tomemos como plantillas los ficheros de zonas que se crean al instalar el paquete bind9 y los editaremos.
Para la zona directa creamos el fichero:
Una vez creado dicho fichero ya podemos editarlo y hacer las modificaciones necesarias para nuestra configuración, como el nombre del dominio.
También debemos cambiar la cláusula Serial cada vez que editemos nuestros ficheros de zona, como una forma de llevar un control de versiones.
Para crear el fichero de zona inversa podemos copiar el fichero db.127:
Editamos el fichero de zona inversa y lo modificaremos, sin olvidarnos del Serial.
Al igual que antes, debemos comprobar que la configuración de los ficheros de zonas se ha realizado correctamente y que no hayamos cometido errores. Tener en cuenta que el directorio zones
que pudieras no haberlo utilizado. Utilizamos el mismo comando:
seguido del nombre de la zona y del fichero en cuestión. Esto es:
Ahora nos tocaría editar el fichero /etc/bind/named.conf.options
donde podemos crear una lista de acceso
para restringir el acceso a quienes pueden realizar las consultas a nuestro servidor DNS. También indicaremos un par de servidores forwarders
donde pueda delegar nuestro servidor DNS local cuando no pueda resolver alguna consulta.
Ya casi finalizamos, pero antes de poner en marcha el servicio modifiquemos el fichero /etc/default/named
donde especificaremos la opción-4
como argumento para el usuario bind, que se crea automáticamente durante la instalación del servicio bind9.
La opción -4
nos sirve para forzar el uso de IPv4 siempre y evitar mensajes de error de red inalcanzable por direccionamiento IPv6.
Listo, ya tenemos configurado el servidor DNS. Solo nos queda reiniciar el servicio bind9
y comprobar que esté corriendo correctamente.
Si no las hecho antes, edita la configuración de red del servidor de Ubuntu para indicar que él mismo es el servidor DNS que tendrá que consultar para la resolución de nombres. Y esto lo tenemos que hacer con netplan.
Para que tome los cambios, hacemos:
Ya podemos realizar pruebas con nslookup para comprobar si el servidor DNS está resolviendo correctamente los nombres y las direcciones IP:
Nos sigue respondiendo con una respuesta no autoritativa pese a que no debería ser así.
Las aplicaciones hacen uso del resolver de systemd-resolved escuchan en la interfaz de loopback en la dirección 127.0.0.53. Por lo cual las respuestas a nuestras consultas son no autoritativas, ya que nos está respondiendo el resolver de systemd-resolved que a su vez obtiene la respuesta de nuestro resolver (bind9).
El archivo /etc/resolv.conf es un enlace simbólico a otro fichero de configuración. Por cada modo de implementación del systemd-resolved, existen 4 ficheros de configuración.
¿Cómo podemos desactivar el systemd-resolved y que las aplicaciones consulten nuestro resolver directamente?
Si haces:
verás que apunta a un archivo en:
Entonces, modificamos el enlace simbólico haciendo lo siguiente:
para hacerlo apuntar al fichero adecuado. Comprueba haciendo:
Si vuelves a probar el nslookup veremos que funciona como se espera que haga:
Links
Last updated
Was this helpful?