En la siguiente entrada veremos como instalar y configurar nuestro propio servidor DNS Bind9 en Ubuntu 20.04.
El servidor DNS es el encargado de convertir URL (dominios + servicios) en direcciones IP, por ejemplo podemos configurarlo con el dominio networld.cu e indicarle que cuando alguien escriba en su navegador www.networld.cu, pues convierta esa URL en una dirección IP 192.x.x.x que es a fin de cuenta la dirección donde estará escuchando un servidor Web en este caso. Este se hace por dos razones, la primera porque a los usuarios le es prácticamente imposible recordar direcciones IP, siendo mucho más amigable los nombres de dominio, la segunda porque a fin de cuenta los ordenadores o servidores se comunican por direcciones IP.
Así que si estas brindando servicios en tu red y los clientes tienen que usar direcciones IP y quieres cambiar eso para hacerles la vida más fácil, pues este artículo te va a ayudar a lograrlo, además tendrás un video en nuestro canal.
Asumiendo que ya tienes Ubuntu Server 20.04 instalado y funcionando, los datos del servidor para esta guía serían:
//Información del sistema base:
Nombre de host: ns1
FQDN: ns1.networld.cu
Dirección IP: 10.10.20.13
//Los archivos a editar en esta guía son:
/etc/bind/named.conf.options
/etc/default/named
/etc/bind/named.conf.local
/etc/bind/zonas/db.networld.cu (archivo inexistente, lo crearemos nosotros)
/etc/bind/zonas/db.10.10.20 (archivo inexistente, lo crearemos nosotros)
1- Lo primero que haremos siempre, comprobar actualizaciones:
# sudo apt update
# sudo apt upgrade
2- Nos instalamos el paquete de Bind9 y Nano para editar archivos en caso de que no lo tengamos.
# sudo apt install bind9 bind9-utils nano
3- Comprobamos si Bind9 ya esta en funcionamiento, los errores o advertencias son normales (aún no hemos realizado ninguna configuración)
# systemctl status bind9
4- Permitir de forma sencilla en el Firewall local, el acceso al puerto y protocolo que utiliza Bind9
# sudo ufw allow bind9
//Debe arrojar, Rules Update
5- Configuración mínima de Bind9
# sudo nano /etc/bind/named.conf.options
//Líneas a modificar, agregar o eliminar (el archivo debe contener lo siguiente)
listen-on { any; };
allow-query { localhost; 10.10.20.0/24; };
forwarders {
8.8.8.8;
8.8.4.4;
};
dnssec-validation no;
//listen-on define la dirección donde estará escuchando Bind9, si no sabes con exactitud, utiliza la opción any.
//allow-query define desde que redes o ip es posible realizar consultas, normalmente la misma red a la que pertenece el servidor DNS.
//forwarders define servidores DNS a los cuales Bind9 reenviará las consultas que el no pueda resolver.
//dnssec-validation define si se validará un dnssec.
6- Obligar el uso único de IPv4
# sudo nano /etc/default/named
//Modificar la línea dejándola así:
OPTIONS="-u bind -4"
7- Comprobar la configuración de Bind9 y reiniciar el servicio si todo está bien, luego lanzar status para ver si no hay errores.
# sudo named-checkconf
# sudo systemctl restart bind9
# systemctl status bind9
8- Agregar las Zonas
# sudo nano /etc/bind/named.conf.local
zone "networld.cu" IN {
type master;
file "/etc/bind/zonas/db.networld.cu";
};
zone "20.10.10.in-addr.arpa" {
type master;
file "/etc/bind/zonas/db.10.10.20";
};
//Vas a cambiar el dominio por el que vas a usar al igual que la dirección IP, fijate que se lee la IP de atrás a adelante obviando el último octeto. Por ejemplo en el caso la IP es: 10.10.20.13 y esta representada en el archivo así: 20.10.10.
//La zona networld.cu es la zona directa de nuestro DNS.
//La zona 20.10.10.in-addr.arpa es la zona inversa para nuestros PTR.
//Los archivos de zona configurados hay que crearlos porque lógicamente no existen [db.networld.cu y db.10.10.20]
9- Creando el directorio donde guardaremos los archivos de zonas y luego creamos las dos zonas, la directa y la inversa.
# sudo mkdir /etc/bind/zonas
//Ten en cuenta cambiar los nombres de archivos según el dominio y la IP usada.
# sudo nano /etc/bind/zonas/db.networld.cu
$TTL 1D
@ IN SOA ns1.networld.cu. admin.networld.cu. (
1 ; Serial
12h ; Refresh
15m ; Retry
3w ; Expire
2h ) ; Negative Cache TTL
; Registros NS
IN NS ns1.networld.cu.
ns1 IN A 10.10.20.13
www IN A 10.10.20.13
// La línea etiquetada como ‘serial‘ recoge un número que deberá incrementarse manualmente cada vez que editemos este archivo, ya sea para modificar nombres o añadir nuevos.
// La línea admin.networld.cu. se trata de la dirección de correo del administrador del servidor DNS sin el @, estos datos al igual que los tiempos de Refrech y demás no se tratan a la ligera, pues son los que dan reputación y confiabilidad a nuestro servidor en el mundo cuando estamos trabajando sobre un servidor DNS autoritativo o real.
# sudo nano /etc/bind/zonas/db.10.10.20
$TTL 1d ;
@ IN SOA ns1.networld.cu admin.networld.cu. (
20210222 ; Serial
12h ; Refresh
15m ; Retry
3w ; Expire
2h ) ; Negative Cache TTL
;
@ IN NS ns1.networld.cu.
1 IN PTR www.networld.cu.
//Es importante en estos dos archivos que acabamos de crear respetar los signos, cualquier error conlleva que el servidor no arranque.
10- Comprobar los archivos de zona que acabamos de crear para ver si todo esta bien.
# sudo named-checkzone networld.cu /etc/bind/zonas/db.networld.cu
# sudo named-checkzone db.20.10.10.in-addr.arpa /etc/bind/zonas/db.10.10.20
//Debemos obtener un OK en cada comprobación
11- Reiniciamos nuevamente
# sudo systemctl restart bind9
12- Comprobar funcionamiento desde otra PC.
ping www.networld.cu
Excelente contenido colega, muy bien explicado y con mucho detalle. Agradecido por todo. Saludos