Crear y configurar un Servidor DNS Linux

El Servidor DNS Bind nos permitirá crear nuestro propio servidor DNS en Linux.

 
En este artículo veremos:

 
En este caso lo haremos desde la terminal de Ubuntu Server .
 

A continuación ,esta práctica muestra la Configuración DNS necesaria para el ejercicio VirtualHost Apache basado en IP.

 

1. INSTALACIÓN DE BIND

Para descargar el servidor Bind podeis visitar el Sitio oficial de Bind.

Aunque lo más normal desde Linux es descargarlo e instalarlo así:

apt-get install bind9

 

 

2. LOS ARCHIVOS MÁS IMPORTANTES DE BIND AL CREAR UN SERVIDOR DNS Linux con Bind

 

  • /etc/bind/named.conf:  Archivo de configuración principal; permite definir qué archivos serán llamados. Por defecto contiene:
include "/etc/bind/named.conf.options";
include "/etc/bind/named.conf.local";
include "/etc/bind/named.conf.default-zones";

 
Así que named.conf permite definir que se aplicarán las opciones que se configuren en el archivo named.con.options, se encargará de generar las zonas definidas en named.conf.local, y contiene también una llamada al archivo de las zonas por defecto (que serán las de localhost, directa e inversa, la ROOT, y la broadcast).

 

  • /etc/bind/named.conf.local:  Archivo en el que definimos las zonas del server DNS

 

  • /etc/bind/named.conf.options: algunas opciones interesantes para nuestro server DNS (por ejemplo los forwarders o reenviadores, que son otros servidores a los que reenviamos las consultas que nuestro server DNS desconoce).

 

  • Archivos de Zona Directa y archivos de Zona Inversa: los llamaremos db.zona_lo_que_sea. En ellos definimos los registros DNS de las  zonas definidas en named.conf.local, de las cuales seremos Master o Slave.

 

  • /etc/resolv.conf: En este archivo ha de constar la IP del servidor DNS que deseamos resuelva en nuestra máquina.

Introduciremos el servidor DNS al que deseamos hacer peticiones DNS de esta forma (en este caso ponemos nuestro propio server DNS, para probar que funciona):

nameserver 192.168.1.10

 

 

A continuación ,suponiendo que ya tenemos correctamente configuradas las interfaces de red, tendremos que crear las nuevas zonas DNS en Bind (en Linux).

 

 

3. CREACIÓN DE ZONAS DNS en named.conf.local

 

En el archivo named.conf.local definiremos las nuevas zonas DNS que vamos a crear:

Así que vamos al archivo /etc/bind/named.conf.local y definimos en él las zonas que vamos a crear, la zona de busqueda directa DNS y la zona de búsqueda inversa (Abrimos el documento, vamos al final del todo y añadimos las nuevas zonas.
 
También podemos configurar:
 
– Si la zona será Master o Slave

type master;
o
type slave;

 
– Si se permite la transferencia de la zona, y a qué servidores

allow-transfer { 192.168.1.1; 192.168.1.142; 192.168.1.143 ;};

 
– Si se envía notificación cada vez que cambie la zona.

notify yes;
o 
notify no;

 

 

VEAMOS LAS NUEVAS ZONAS DNS EN EL ARCHIVO named.conf.local:

 

//
// Do any local configuration here
//
// Consider adding the 1918 zones here, if they are not used in your
// organization
 
//include "/etc/bind/zones.rfc1918";
 
 
zone "midominio.com"{
type master;
file "/etc/bind/db.midominio.com";
allow-transfer { 192.168.1.1; 192.168.1.142; 192.168.1.143 ;};
notify yes;
};
 
 
zone "1.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.1.168.192";
};

 

 

4. CREACIÓN Y CONFIGURACIÓN DE ARCHIVOS DE ZONAS DNS DIRECTA/INVERSA

 

Ahora creamos el archivo de resolución directa de la zona midominio.com.

 
Podemos copiar el archivo de zona db.local, que hay en el directorio /etc/bind, y transformarlo para crear la nueva zona DNS.
 
Como podéis ver, se han creado más registros además del dominio www1 (www2, www3, www4 …). Los usaremos para siguientes ejercicios:
 

 
;BIND data file for local loopback interface
 
$TTL    604800
@       IN      SOA     midominio.com. root.midominio.com. (
                             2         ; Serial
                        604800         ; Refresh
                         86400         ; Retry
                       2419200         ; Expire
                        604800 )       ; Negative Cache TTL
;
@       IN      NS      midominio.com.
@       IN      A       192.168.1.10
www1    IN      A       192.168.1.10
www2    IN      A       192.168.1.10
www3    IN      A       192.168.1.30
www4    IN      A       192.168.1.40
www5    IN      A       192.168.1.40

 

 

A continuación creamos la zona de Resolución inversa:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
GNU nano 2.2.2           Archivo: db.1.168.192
 
;
 
; BIND data file for local loopback interface
 
;
 
$TTL    604800
 
@       IN      SOA     midominio.com. root.midominio.com. (
 
2         ; Serial
 
604800         ; Refresh
 
86400         ; Retry
 
2419200         ; Expire
 
604800 )       ; Negative Cache TTL
 
;
 
@       IN      NS      midominio.com.
 
10      IN      PTR     midominio.com.
 
10      IN      PTR     www1.midominio.com.
 
10      IN      PTR     www2.midominio.com.
 
30      IN      PTR     www3.midominio.com.
 
40      IN      PTR     www4.midominio.com.
 
40      IN      PTR     www5.midominio.com.

 

 

4.1 Sintáxis y definición de los archivos de zona y sus registros DNS.

 

La arroba @ significa el propio servidor

El registro NS define el servidor primario

El registro A define la IP del servidor

El registro MX define el servidor de correo

 

 

 
@       IN      NS      midominio.com.
 
@       IN      MX 10       ns1
 
@       IN      MX 10       mail
 
@       IN      A       192.168.1.10

 

Después definimos las IP´s de los equipos que componen el dominio. Ejemplo de configuración de archivo de zona:

 

ns1        IN      A       192.168.1.10
 
mail       IN      A       192.168.1.10

 

 

4.2 Herramientas para comprobar la sintaxis correcta de los archivos de configuración de Bind

 

  • Tenemos el comando named-checkconf named.conf.local

Este comando comprobará si hay errores en la sintaxis de las zonas creadas en named.conf.local

 

  • Otro comando muy interesante es named-checkzone
1
named-checkzone midominio.com db.midominio.com

 

named-checkzone nombre_de_la_zona nombre_del_archivo_de_la_zona

 

named-checkzone zonename filename

 

 

5. RECARGAR CONFIGURACIÓN DE BIND Y REINICIAR EL SERVICIO PARA APLICAR LOS CAMBIOS

 
Después de terminar las configuraciones, recargamos la configuración de bind y reiniciamos el servicio bind con :

/etc/init.d/bind9 reload
/etc/init.d/bind9 restart

 
También podemos ejecutar:

rndc reload

 

 

6. PRUEBAS DE FUNCIONAMIENTO DE LAS NUEVAS ZONAS DNS CREADAS

 

Resolución del Dominio DNS desde un cliente con el comando DIG:

Dig a dominio

 
Recordemos que para resolver correctamente los DNS, el cliente ha de tener configurado como resolvedor DNS al servidor que acabamos de crear.
 
Así que nos aseguramos de que en el archivo /etc/resolv.conf contenga lo siguiente en este caso:

nameserver 192.168.1.10

 

 
Ahora que hemos configurado el servidor DNS Linux correctamente, podemos empezar a crear el sitio Web Apache y los VirtualHosts.
 

Si necesitáis algo más de ayuda, podéis miraros los Conceptos y comandos sobre DNS.