En el siguiente tutorial vamos a configurar e instalar un servidor DNS, sobre una red de maquinas virtuales con Ubuntu 18.04. La misma configuración puede aplicarse en un equipo físico y en otras distribuciones Linux como Debian, Linux Mint…
El el tutorial anterior sobre como instalar un servidor DHCP, podemos ver la configuración de red que hemos realizado.
Objetivos de la instalación del servidor DNS
En nuestro caso vamos a configurar un servidor maestro DNS, con la finalidad de que resuelva el nombre de los equipos conectados a nuestra red local. Para ello se crearan archivos de configuración directa e inversa. Las peticiones externas sobre dominios que nuestro servidor DNS no conoce, las reenviaremos a los de Google (8.8.8.8) y Cloudfare (1.0.0.1).
Instalación del servicio DNS
Antes de nada, abrimos el terminal e iniciamos sesión como root.
Posteriormente actualizamos los repositorios:
apt update
E instalamos las versiones más recientes respetando la configuración:
apt upgrade
Finalmente, instalamos el servicio DNS mediante el paquete bind9.
apt install bind9
apt install bind9utils
Configuración del servidor DNS
Podemos ver los diferentes archivos utilizados por bind9 para la configuración del servidor DNS accediendo al fichero /etc/bind/named.conf.
nano /etc/bind/named.conf
include "/etc/bind/named.conf.options"; #Almacena las opciones principales del servicio DNS include "/etc/bind/named.conf.local; #Nos permite incluir archivos para direccionamiento directo e inverso. include "/etc/bind/named.conf.default-zones; #Indica la zona por defecto del servidor de nombres de dominio
En primer lugar, editamos el archivo /etc/bind/named.conf.options, para realizar la configuración principal del servidor. Para ello borramos el contenido e insertemos la siguiente información:
nano /etc/bind/named.conf.option
options {
#Indica el archivo donde se almacena la caché:
directory "/var/cache/bind";
#Reenvía las peticiones que no puede resolver nuestro servidor
forwarders {
8.8.8.8;
1.0.0.1;
};
#Opciones de seguridad: el servidor escucha en el puerto 53
#Se escuchan las peticiones realizadas por nuestro equipo y los conectados a la red local 192.168.3.0
listen-on port 53 {
127.0.0.1;
192.168.3.0/24;
};
#No se realizan escuchas IPv6
listen-on-v6 { none; };
#Acepta peticiones DNS realizadas por servidor y equipos conectados a la red local 192.168.3.0
allow-query {
127.0.0.1;
192.168.3.0/24;
};
#No se permite la transferencia de información entre servidores DNS
allow-transfer { none; };
#Se aceptan las peticiones DNS recursivas, para servidor y equipos de la red...
allow-recursion {
127.0.0.1;
192.168.3.0/24;
};
};
Debido a que nuestra red local de trabajo es 192.168.3.0/24, escuchamos tan solo las peticiones recibidas por esta red. Para personalizar la instalación, tan solo hay que cambiar la IP 192.168.3.0 del fichero de configuración.
Una vez realizada la configuración inicial, para configurar las peticiones recibidas en el dominio, editamos el archivo /etc/bind/named.conf.local
nano /etc/bind/named.conf.local
#Nombre del dominio
zone "asirfp" {
type master;
#Archivo de resolución directa de nombres
file "/etc/bind/asirfp.db";
};
#Parte fija de la ip de red invertida 192.168.3 -> 3.168.192
#seguda de .in-addr.arpa
zone "3.168.192.in-addr.arpa" {
type master;
#Archivo de resolución inversa de nombres
file "/etc/bind/asirfp.rev";
};
Creación de archivos de configuración directa e inversa
Para el correcto funcionamiento del servicio DNS, tenemos que crear los archivos con el nombre y ruta que especificamos en el archivo de configuración /etc/bind/named.conf.local
En primer lugar editamos el archivo de configuración directa:
nano /etc/bind/asirfp.db
$TTL 604800
@ IN SOA asirfp root.asirfp(
2 ;Serial
404800 ;Refresh
86400 ;Retry
2419200 ;Expire
604800 ) ;Negative Cache TTL
@ IN NS asirfp
@ IN A 192.168.3.1
@ IN MX 0 asirfp
www IN A 192.168.3.1
uah IN CNAME asirfp
cliente-asirfp IN A 192.168.3.50
cliente-asirfp1 IN A 192.168.3.51
cliente-asirfp2 IN A 192.168.3.52Para adaptarlo a nuestro caso particular tendremos que modificar asirfp por nuestro nombre de dominio, la IP del servidor 192.168.3.1 y las IPs y nombre de los equipos.
Por ejemplo, vamos a modificar el archivo de configuración adecuándolo a un dominio llamado DOMINIO, un servidor con IP 192.168.1.2 y un equipo llamado Cliente-Dominio en la IP 192.168.1.20.
$TTL 604800
@ IN SOA DOMINIO root.DOMINIO(
2 ;Serial
404800 ;Refresh
86400 ;Retry
2419200 ;Expire
604800 ) ;Negative Cache TTL
@ IN NS DOMINIO
@ IN A 192.168.1.2
@ IN MX 0 DOMINIO
www IN A 192.168.1.2
uah IN CNAME DOMINIO
Cliente-Dominio IN A 192.168.1.20
Por otra parte, editamos el archivo de configuración inversa:
nano /etc/bind/asirfp.rev
$TTL 604800
@ IN SOA asirfp. root.asirfp(
2 ; Serial
404800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
@ IN NS asirfp.
1 IN PTR servidor.asirfp
50 IN PTR cliente-asirfp
51 IN PTR cliente-asirfp1
52 IN PTR cliente-asirfp2
En el caso del archivo de configuración inversa, solo tenemos que añadir la parte variable de la dirección IP, la parte fija de la dirección de red se encuentra indicada en el fichero /etc/bind/named.conf.local
Con esto, ya hemos finalizado la instalación y configuración de nuestro propio servidor DNS.
Verificamos que todo funciona correctamente escribiendo:
named-checkconf
Para hacer efectivos los cambios, debemos reiniciar el servicio:
/etc/init.d/bind9 restart
Finalmente, para indicar al equipo que debe usar nuestro servidor DNS, tenemos que borrar y configurar un nuevo fichero /etc/resolv.conf
Borramos:
rm /etc/resolv.conf
Creamos,
touch /etc/resolv.conf
Damos permisos,
chmod 777 /etc/resolv.conf
y editamos:
nano /etc/resolv.conf
domain asirfp nameserver 192.168.3.1 search asirfp