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 totalmente 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 with Minimal Installation
  2. RHEL 8 with RedHat Subscription Enabled
  3. RHEL 8 with Static IP Address
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 editarlo 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 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 avance 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:

  • type: Defines the role of this server for the zone. The value “master” means it’s an authoritative server where the master copy of the zone data is maintained.
  • file: specifies the zone’s database file.
  • allow-update: specifies the hosts which allowed to submit Dynamic DNS updates for master zones. None in this case.

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: specifies the time-to-live of the RR and $TTL directive gives a default TTL for every RR without a specific TTL set.
  • @: It is an alias for the domain name (e.g tecmint.lan) defined in the main configuration file.
  • IN: means the Internet.
  • SOA: specifies the Start of Authority: who the authoritative name server is (dns-primary.tecmint.lan), the administrator’s contact info (admin.tecmint.lan, the @ sign is replaced by a period) and other related information.
  • NS: means name server.
  • Serial: this value is used by the DNS server to verify that the contents of a particular zone file are up-to-date.
  • Refresh: specifies how often a slave DNS server should perform a zone transfer from the master.
  • Retry: specifies how often a slave should retry a failed zone transfer.
  • Expire: determines how long a slave server should wait before answering client query when a master is unreachable.
  • Minimum: sets the minimum TTL for the zone.
  • A: A host address.

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 usado 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. Establezca 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 que 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 privado y autorizado en RHEL 8 usando el software BIND. Esperamos que todo le haya funcionado bien, de lo contrario, envíenos sus consultas o cualquier otro comentario a través del formulario de comentarios a continuación.