miércoles, 26 de mayo de 2021

Servidor DNS recursivo (caching) con Bind en CentOS/RockyLinux/AlmaLinux/RHEL 7

 En ésta entrada realizaremos un servidor DNS recursivo para nuestra red interna (192.168.2.0/24) y ofrecer más adelante un servidor web en una terminal de dicho segmento.

Nuestro escenario es el siguiente:

Nuestro servidor (CentOS 7) tiene dos interfaces de red, mínimo en interfaces para tener un firewall, entonces nuestra interfaz conectado a internet o al modem/router de nuestro proveedor es con nombre enp0s3 cuya ipv4 es 192.168.1.5/24 y la interfaz destinada a nuestra red interna tiene nombre enp0s8 cuya ipv4 es 192.168.2.5/24; existe un switch conectado a la interfaz interna y conecta un segmento de red completo con posibilidad de proveer 254 terminales, exceptuando la ipv4 ya utilizada.

Modem/Router (internet)====(enp0s3)CentOS(enp0s8)====Switch ethernet

El servicio dns resolverá nombres a ipv4, se usará la configuración de DNS recursivo (caching) usando el ejemplo que proporciona CentOS o similares.

Paso 1. instalaremos el equipamiento lógico

#yum install bind bind-utils bind-chroot

bind-chroot lo iniciaremos al final.

Paso 2. iniciaremos el servicio named

#systemctl enable named

#systemctl start named

#systemctl status named

Paso 3. los archivos a configurar son /etc/named.conf, /etc/named.rfc912

Paso 4. el directorio por defecto para los archivos donde estará la zona directa e inversa está en /var/named

Paso 5. configurando las opciones generales en named.conf, se añade estas líneas y se deja por defecto las que ya trae CentOS 7 (para 8 es lo mismo)

#vi /etc/named.conf

options    {

//escuchar en interface de la red interna y en IPv4 only

listen-on    port     53    { 127.0.0.1; 192.168.2.5;  };

listen-on-v6    port    53    { none; }; 

...

//consultas a nuestra red interna

allow-query    { localhost; 192.168.2.0/24; };

//no transferir a otro equipo

allow-transfer    { none; };

//consultas recursivas desde la lan

allow-recursion { 192.168.2.0/24; };

//no mostrar la version de bind

version none;

//opción por defecto, esta opción debe estar en yes, caso contrario no va //funcionar la resolución de nombres.
recursion yes;

...

//deshabilitamos dnssec, para no complicarnos :)

dnssec-enable no;

dnssec-validation no;

...

};

Puedes verificar si no tienes errores con el comando:

#named-checkconf /etc/named.conf

Si no muestra un mensaje, entonces el file esta bien :)

Paso 6. creamos nuestras zona directa e inversa en el archivo /etc/named.rfc912.zones

#vi  /etc/named.rfc912.zones

...

//nuestro dominio principal

zone "intranet.edu" IN {

type master;

//la ruta esta en /var/named

file  "db.intranet.edu";

allow-update "none";

};

//zona inversa

zone "2.168.192.in-addr.arpa" IN {

type master;

file "db.2.168.192";

allow-update "none";

};

Puedes revisar el file, si no muestra mensajes el file esta good :)

#named-checkconf /etc/named.rfc1912.zones

Paso 7. creamos los archivos en la ruta /var/named

#cd /var/named/

#cp named.localhost db.intranet.edu

#chown root:named db.intranet.edu

#vi db.intranet.edu

En este archivo se pudo haber usado @ en lugar del dominio intranet.edu., de igual manera donde hay espacio en blanco significa que está presente el @, por lo tanto es el dominio principal o zona directa.

Para la zona inversa

#cp db.intranet.edu db.2.168.192

#chown root:named db.2.168.192

#vi db.2.168.192

 Probar las zonas y buscar errores con el comando:

#named-checkzone intranet.edu db.intranet.edu

Paso 8. reiniciamos el servicio

#systemctl restart named

Paso 9. cambiamos la ip de nuestro servidor dns remoto a nuestra ip, a nuestro servicio dns local.

#vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

...

DNS1=192.168.2.5

#systemctl restart NetworkManager

#cat /etc/resolv.conf

Ya tomó nuestra ip.

Paso 10. pruebas en nuestro equipo y en clientes en nuestro segmento de red

#ping -c 2 www.intranet.edu

Paso 11. añadimos el servicio a nuestro firewall, se está usando firewallD

#firewall-cmd --add-service=dns --zone=internal --permanent

Ahora ya pueden consultar los clientes.

Paso 12. aquí utilizaremos a bind-chroot, para ello debemos parar y deshabilitar or disable named service, and start named-chroot, e.g.

#systemctl stop named

#systemctl start named-chroot

#systemctl enable named-chroot

Ahora todo estará montado de forma automática, no necesitamos hacer otros cambios, hay que mirar la ruta /var/named/chroot/..., ahi se montaron todos los archivos que hemos configurado y otros.

recomienda la web de rhel que si se va a editar se haga con una copia, por ejemplo:

~]# vim -c "set backupcopy=yes" /etc/named.conf

Pero si editas el archivo al reiniciar el servicio observas que el mismo se ha modificado en la ruta chroot.

En los clientes:



Nota: se adicionó un servicio en un cliente del segmento de red interno con ip 192.168.2.7/24 que presta un servicio web.

Como ya existe servicio de dominio, entonces buscará las ips correspondientes a un nombre, en neustro caso le dijimos que si se escribe un alias www.intranet.edu, buscará la ip 192.168.2.7/24

Si te gustó, estate atento a nuestro blog y canal de youtube, porque al igual que Debian y Ubuntu se complementará con soporte a php y mysql para instalar wordpress :)

No hay comentarios.:

Publicar un comentario

Extensiones php en FreeBSD 14 para PhpSysinfo, PhpMyAdmin y Simple Machines Forum

 En FreeBSD 14 ocurre algo especial, por defecto no se activa las extensiones PHP para los softwares como PhpSysinfo, PhpMyAdmin ySimple mac...