Configuración de Bind como servidor DNS privado en RHEL 8


El Sistema de Nombres de Dominio (DNS) es un método que se utiliza para traducir nombres de dominio legibles por humanos (o Nombres de Dominio Completamente Calificados (FQDN)) a direcciones IP legibles por máquina, para ubicar una computadora en una red como Internet.

En los sistemas informáticos y de red, esto es necesario porque, aunque los FQDN son fáciles de recordar y usar para los humanos, las computadoras (clientes) acceden a recursos o servicios en otras computadoras (servidores) basándose en direcciones IP.

En este sentido, un servidor DNS (también conocido como servidor de nombres) mantiene un directorio de FQDN y los traduce a direcciones IP; también puede devolver una dirección IP cuando se proporciona un nombre de host/FQDN. Hay diferentes tipos de servidores DNS, incluido el servidor de nombres autorizado, el servidor de nombres de almacenamiento en caché y muchos otros.

En este artículo, lo guiaremos a través de los pasos para instalar y configurar un servidor DNS autoritativo privado/interno en RHEL 8 utilizando el software de código abierto BIND.

  1. RHEL 8 con instalación mínima
  2. RHEL 8 con suscripción a RedHat habilitada
  3. RHEL 8 con dirección IP estática

Domain: tecmint.lan
DNS Server IP and hostname: 192.168.56.100, dns-primary.tecmint.lan
DNS Client IP and hostname: 192.168.56.104, tecmint.tecmint.lan

Paso 1: Instalación de Bind DNS en RHEL 8

1. Para instalar bind y sus utilidades en su servidor, ejecute el siguiente comando cdnf.

# dnf install bind bind-utils

2. A continuación, inicie el servicio DNS por ahora, luego habilítelo para que se inicie automáticamente al arrancar el sistema y verifique si está funcionando con los comandos systemctl.

# systemctl start named
# systemctl enable named
# systemctl status named

Paso 2: Configuración de BIND DNS en RHEL 8

3. Para configurar el servidor Bind DNS, primero debe realizar una copia de seguridad del archivo de configuración original /etc/named.conf usando el siguiente comando cp.

# cp /etc/named.conf /etc/named.conf.orig

4. Ahora abra el archivo de configuración /etc/named.conf para editar usando su editor de texto de línea de comando favorito de la siguiente manera.

# vi /etc/named.conf 

En la sección de configuración de opciones , comente las siguientes líneas.

options {
        #listen-on port 53 { 127.0.0.1; };
        #listen-on-v6 port 53 { ::1; };
        directory       "/var/named";

5. A continuación, busque el parámetro allow-query y establezca su valor en su red, lo que significa que solo los hosts de su red local pueden consultar el servidor DNS.

allow-query  {localhost; 192.168.56.0/24}

Paso 3: creación de las zonas de DNS directo e inverso

Una zona de reenvío es donde se almacenan las relaciones entre el nombre de host (o FQDN) y la dirección IP; devuelve una dirección IP utilizando el nombre de host. Tenga en cuenta que las consultas DNS normales son consultas de búsqueda hacia adelante. Por otro lado, una zona inversa devuelve el FQDN de un host en función de su dirección IP.

6. Para definir las zonas de avance y retroceso, agregue las siguientes líneas al final del archivo /etc/named.conf.

//forward zone 
zone "tecmint.lan" IN { 
     type master; 
     file "tecmint.lan.db"; 
     allow-update { none; }; 
    allow-query {any; }
}; 
//backward zone 
zone "56.168.192.in-addr.arpa" IN { 
     type master; 
     file "tecmint.lan.rev"; 
     allow-update { none; }; 
    allow-query { any; }
};

Expliquemos brevemente las opciones en las configuraciones de zona anteriores:

  • tipo: define la función de este servidor para la zona. El valor "maestro" significa que es un servidor autorizado donde se mantiene la copia maestra de los datos de la zona.
  • archivo: especifica el archivo de base de datos de la zona.
  • allow-update: especifica los hosts que permitieron enviar actualizaciones de DNS dinámico para las zonas maestras. Ninguno en este caso.

Paso 4: Creación de un archivo de zona de DNS directo

7. Primero, cree un archivo de zona de avance en el directorio/var/named.

# vi /var/named/tecmint.lan.db

Agregue la siguiente configuración en él.

$TTL 86400
@ IN SOA dns-primary.tecmint.lan. admin.tecmint.lan. (
    2019061800 ;Serial
    3600 ;Refresh
    1800 ;Retry
    604800 ;Expire
    86400 ;Minimum TTL
)

;Name Server Information
@ IN NS dns-primary.tecmint.lan.

;IP for Name Server
dns-primary IN A 192.168.56.100

;A Record for IP address to Hostname 
www IN A 192.168.56.5
mail IN A 192.168.56.10
docs  IN A 192.168.56.20

Expliquemos brevemente la definición de zona anterior y los parámetros.

  • TTL: especifica el tiempo de vida de RR y la directiva $TTL proporciona un TTL predeterminado para cada RR sin un conjunto de TTL específico.
  • @: Es un alias para el nombre de dominio (por ejemplo, tecmint.lan) definido en el archivo de configuración principal.
  • IN: significa Internet.
  • SOA: especifica el inicio de la autoridad: quién es el servidor de nombres autorizado (dns-primary.tecmint.lan), la información de contacto del administrador (admin.tecmint.lan, el signo @ se reemplaza por un punto) y otros información.
  • NS: significa servidor de nombres.
  • Serie: el servidor DNS utiliza este valor para verificar que el contenido de un archivo de zona en particular esté actualizado.
  • Actualizar: especifica la frecuencia con la que un servidor DNS esclavo debe realizar una transferencia de zona desde el maestro.
  • Reintentar: especifica la frecuencia con la que un esclavo debe reintentar una transferencia de zona fallida.
  • Caducidad: determina cuánto tiempo debe esperar un servidor esclavo antes de responder la consulta del cliente cuando no se puede acceder a un maestro.
  • Mínimo: establece el TTL mínimo para la zona.
  • A: una dirección de host.

Paso 5: Creación de un archivo de zona DNS inversa

8. De manera similar, cree un archivo de zona inversa en el directorio/var/named.

# vi /var/named/tecmint.lan.rev

Luego agregue las siguientes líneas en él. Aquí, el PTR es lo opuesto al registro A utilizado para asignar una dirección IP a un nombre de host.

$TTL 86400
@ IN SOA dns-primary.tecmint.lan. admin.tecmint.lan. (
    2019061800 ;Serial
    3600 ;Refresh
    1800 ;Retry
    604800 ;Expire
    86400 ;Minimum TTL
)
;Name Server Information
@ IN NS dns-primary.tecmint.lan.

;Reverse lookup for Name Server
100 IN PTR dns-primary.tecmint.lan.

;PTR Record IP address to HostName
5 IN PTR www.tecmint.lan.
10 IN PTR mail.tecmint.lan.
20 IN PTR docs.tecmint.lan.

9. Configure los permisos de propiedad correctos en los archivos de zona de la siguiente manera.

# chown :named /var/named/tecmint.lan.db
# chown :named /var/named/tecmint.lan.rev

10. Finalmente, verifique que la configuración de DNS y los archivos de zona tengan la sintaxis correcta después de realizar los cambios anteriores, usando la utilidad named-checkconf (sin salida significa que no hay error):

# named-checkconf
# named-checkzone tecmint.lan /var/named/tecmint.lan.db
# named-checkzone 192.168.56.100 /var/named/tecmint.lan.rev

11. Una vez que haya realizado toda la configuración necesaria, debe reiniciar el servicio DNS para que los cambios recientes surtan efecto.

# systemctl restart named

12. A continuación, antes de que cualquier cliente pueda acceder a las configuraciones del servicio DNS en el servidor, debe agregar el servicio DNS en la configuración del firewall del sistema y volver a cargar la configuración del firewall utilizando la utilidad firewall-cmd, de la siguiente manera:

# firewall-cmd --permanent --zone=public --add-service=dns 
# firewall-cmd --reload

Paso 6: probar el servicio DNS desde un cliente

13. En esta sección, mostraremos cómo probar el servicio DNS desde el lado del cliente. Inicie sesión en la máquina cliente, configúrela para usar el servidor DNS anterior. En un sistema Linux, abra el archivo /etc/resolve.conf usando su editor de texto favorito.

# vi /etc/resolve.conf 

Agregue la siguiente entrada, que le dice al resolutor que use el servidor de nombres especificado.

nameserver  192.168.56.100

Guarde el archivo y ciérrelo. Tenga en cuenta que también debe especificar el servidor DNS en el archivo de configuración de la interfaz de red.

14. Agregue la IP 192.168.56.100 de los servidores DNS como resolución al archivo de configuración de la interfaz de red de la máquina cliente/etc/sysconfig/network-scripts/ifcfg-enp0s3 como se muestra en la siguiente figura.

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s3
UUID=aba298ca-fa65-48cd-add9-6c3f1f28cee2
DEVICE=enp0s3
ONBOOT=no
DNS=192.168.56.100

15. Luego use la utilidad nslookup para consultar la IP usando el nombre de host y viceversa, de los servidores www, correo y documentos en su red como se muestra.

# nslookup 192.168.56.5
# nslookup www.tecmint.lan
# nslookup 192.168.56.10
# nslookup mail.tecmint.lan
# nslookup 192.168.56.20
# nslookup docs.tecmint.lan
# nslookup 192.168.56.100
# nslookup dns-primary.tecmint.lan

En este artículo, hemos mostrado cómo instalar y configurar un servidor DNS autorizado y privado en RHEL 8 usando el software BIND. Esperamos que todo haya funcionado bien para usted, de lo contrario, envíenos sus consultas o cualquier otro comentario a través del formulario de comentarios a continuación.