lunes, 17 de mayo de 2021

Servidor DNS autoritativo en Debian con Bind

 En alguna oportunidad en una intranet o similares se necesita conocer o ubicar algunos hosts en la red de datos, pero por IPs muchas veces no es fácil cuando hay muchos equipos o se tiene algunos equipos que dan algún servicio, como podría ser un servidor web, entonces ubicarlo con nombre es mucho más fácil.

Otra ventaja al realizar un servidor DNS autoritativo es que las consultas a dns de otros servidores del mundo se realizan en nuestro equipo que implementa un servicio DNS (domain name system, o sistema de nombre de dominio), eso quiere decir que ya no se depende de otros servidores DNS públicos en internet como podría ser el conocido 8.8.8.8 de google o el que te da tu proveedor de servicio a internet, entonces es algo interesante que podemos realizar con un sistema operativo GNU/Linux o un BSD utilizando Bind (software para implementar servicio DNS).

Nota: por ahora solamente se realiza un servidor DNS principal, no un secundario.

1. Nuestro escenario: tenemos un equipo con dos interfaces de red (eth0 y eth1), eth0 es la que conecta al modem/router del proveedor y eth1 conecta a un switch en nuestra red LAN (192.168.2.0/24), las interfaces en versiones nuevas de Debian podrían ser enp0s3, enp0sx...

2. configurando ips a nuestras interfaces: a la interface eth0 le asignamos 192.168.1.5/24 y a eth1 192.168.2.5/24

3. agregamos el equipamiento lógico necesario en Debian:

#apt-get install bind9 bind9-doc dnsutils

4. ingresamos a la ruta donde encontraremos todos los archivos a modificar

#cd /etc/bind/

Los archivos principales a modificar son named.conf, named.conf.options, named.conf.local; los archivos que se editan principalmente son named.conf.options (para opciones generales) y named.conf.local, este último para nuestras zonas.

5. editamos el archivo named.conf.options y solamente son necesarias algunas líneas como las que escribo aquí abajo:

//Escuchar en interfaces locales ipv4

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

listen-on-v6 { none; };

//No transferir la información de zona a dns secundario

allow-transfer { none; };

//Aceptar consultas de nuestra red LAN, únicamente.

allow-query { 192.168.2.0/24; };

//Permitir consultas recursivas para la red LAN

allow-recursion { 192.168.2.5; };

//No hacer público la versión de BIND

version none;

6. opciones por defecto se dejan en el archivo named.conf.options, en este caso no se usa reenviadores osea forwarders, nosotros no utilizamos otros dns, nuestro servidor resolverá nombres.

7. creamos las zona principal y la zona inversa en el archivo named.conf.local

//Mi zona principal

zone "intranet.edu" {

        type master;

        file "/etc/bind/db.intranet.edu"; 

};

//zona inversa

zone "2.168.192.in-addr.arpa" {

        type master;

        file "/etc/bind/db.2.168.192";

};

Nota: puedes verificar si el archivo está bien configurado con el comando

#named-checkconf named.conf

#named-checkconf named.conf.local

8. los permisos de los archivos que crearemos ya están por defecto correctos, no debemos cambiar, al crearlos Debian GNU/Linux les asigna para usuario root y grupo bind, para no complicarnos copiaremos de los ejemplos, luego lo editamos a nuestros requerimientos.

#cp db.local db.intranet.edu

9. escribimos las líneas como muestra en la imagen de abajo.

Donde observamos el servidor principal con nombre server1.intranet.edu., no tenemos otros servidores y la zona está en la misma ip.

10. creamos la zona inversa

#cp db.intranet.edu db.2.168.192

11. debe quedar como en la imagen de abajo.

 Este archivo al indicarle una ip resuelve el nombre.

Nota: en ambos casos se puede comprobar que no haya errores luego de editar dichos archivos con el comando siguiente:

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

#named-checkzone 2.168.192.in-addr.arpa db.2.168.192

Se entiende que estamos en la ubicación de los archivos y luego de ejecutar los comandos nos muestra la zona con su serial de año-mes-dia-modificacion (01, es la primera modificación)

Nota: para cualquier cambio en archivos named.conf.local u otro debe reiniciarse el servicio.

#systemctl restart bind9 

Verificar cómo está resolviendo

#tail -f /var/log/syslog

12. cambiamos nuestro servidor dns en la ruta /etc/resolv.conf o si usa resolvconf se tendría que cambiar en /etc/network/interfaces o en Ubuntu reciente en el archivo netplan, en nuestro caso es en resolv.conf

13. ahora debes probar en el servidor y en clientes (usar el servidor dns que hemos creado con ip 192.168.2.5)

#dig intranet.edu NS

#ping -c 2 www.intranet.edu

#host intranet.edu

Salir al exterior

#ping -c 2 debian.org

#host debian.org

14. en el cliente podrías utilizar nslookup

Update:

Si existe un servidor web en la red interna LAN con ip 192.168.2.7/24 se debe añadir la ip al archivo db.intranet.edu y apuntar el alias al nombre del servidor web (server2), también un puntero en el archivo db.2.168.192 con número 7

 

Buscamos el servidor web en la red interna LAN

 visita mi canal de Youtube y suscríbete, ahí muestro cómo esta funcionando este servidor DNS 😀

No hay comentarios.:

Publicar un comentario

Cambiar el puerto de SSH en Derivados Red Hat Enterprise Linux 8

 En esta entrada mostraremos una forma de cambiar el puerto por defecto del servicio ssh en Rocky Linux 8. En primer lugar debemos de editar...