Instalar y configurar un servidor DNS con Ubuntu Server paso a paso

Un servidor DNS (Domain Name System) es un sistema que nos permite usar nombres de dominio en lugar de direcciones IP. Su principal ventaja es que para nosotros es mucho más fácil recordar un nombre que una dirección IP.

El servidor DNS más utilizado es Bind y, aunque teníamos un poco abandonado a Ubuntu Server en Slice of Linux, hoy vamos a ver cómo instalarlo y configurarlo sobre él paso a paso. El contenido de este tutorial es genérico pero las pruebas y capturas de pantalla se han hecho sobre Ubuntu 10.04 Server.

Los valores que debemos tener claros antes de comenzar son los siguientes:

* Dirección IP del servidor: 192.168.2.1
* Nombre del servidor: servidor
* Dominio que vamos a crear: sliceoflinux.lan

Estos valores deberemos sustituirlos por los que necesitemos en cada caso.

Los pasos para instalar y configurar Bind en Ubuntu Server son los siguientes:

1. Actualizamos la información de los repositorios con el siguiente comando:

sudo aptitude update
2. Instalamos el servidor DNS Bind9:

sudo aptitude install bind9
3. Hacemos una copia de seguridad del archivo que vamos a modificar:

sudo cp /etc/bind/named.conf.local{,.original}

Este comando nos puede ahorrar mucho tiempo y está descrito en el artículo “hacer copias de seguridad de archivos rápidamente“.
4. Editamos el archivo /etc/bind/named.conf.local con el siguiente comando:

sudo nano /etc/bind/named.conf.local

y añadimos el siguiente contenido:

zone "sliceoflinux.lan" {
type master;
file "db.sliceoflinux.lan";
};

zone "2.168.192.in-addr.arpa" {
type master;
file "db.192.168.2";
};

Esto se puede ver en la siguiente captura de pantalla:
Editamos el archivo /etc/bind/named.conf.local

Instalar un DNS con Bind 9 paso a paso

Editamos el archivo /etc/bind/named.conf.local

Para guardar el archivo debemos pulsar la combinación de teclas Control+O y para salir Control+X.
5. Para comprobar la sintaxis de los archivos de configuración ejecutamos el siguiente comando:

named-checkconf

Si no aparece nada, la sintaxis de los archivos de configuración es correcta. ¡Ojo! Eso no significa que no haya ningún error, sólo que no hay errores de sintaxis.

Linux

Ejecución de named-checkconf sin errores

Ejecución de named-checkconf sin errores

Si hubiésemos cometido un error de sintaxis, nos aparecería indicado junto a la línea en la que ocurre. En el siguiente ejemplo puede verse que en el archivo /etc/bind/named.conf.local en la línea 15 hay un error:

GNU/Linux

Ejecución de named-checkconf con un error

Ejecución de named-checkconf con un error
6. Creamos el archivo /var/cache/bind/db.sliceoflinux.lan:

sudo nano /var/cache/bind/db.sliceoflinux.lan

e incluimos el siguiente contenido:

$ORIGIN sliceoflinux.lan.
$TTL 86400 ; 1 dia
@ IN SOA servidor postmaster (
1 ; serie
6H ; refresco (6 horas)
1H ; reintentos (1 hora)
2W ; expira (2 semanas)
3H ; mínimo (3 horas)
)
NS servidor
servidor A 192.168.2.1

El contenido del archivo es bastante especial y no lo vamos a comentar pero para más información se puede leer el RFC 1912 y el RFC 2308. Aquí deberíamos añadir todos los equipos de nuestra red que quisiéramos mantener identificados pero como es más fácil hacerlo con DDNS (Dynamic DNS) ya lo veremos en otra ocasión.
7. Comprobamos la zona que acabamos de crear (sliceoflinux.lan):

named-checkzone sliceoflinux.lan /var/cache/bind/db.sliceoflinux.lan

En esta ocasión siempre nos aparecerá una salida, ya sea para indicarnos que todo está bien (OK) o algún error.

Ejecución de named-checkzone sin errores

Ejecución de named-checkzone sin errores
8. A continuación creamos el archivo /var/cache/bind/db.192.168.2 para la zona inversa:

sudo nano /var/cache/bind/db.192.168.2

e incluimos el siguiente contenido:

$ORIGIN 2.168.192.in-addr.arpa.
$TTL 86400 ; 1 dia
@ IN SOA servidor postmaster (
1 ; serie
6H ; refresco (6 horas)
1H ; reintentos (1 hora)
2W ; expire (2 semanas)
3H ; mínimo (3 horas)
)
NS servidor.sliceoflinux.lan.
1 PTR servidor.sliceoflinux.lan.

El número 1 se corresponde con el último dígito de la dirección IP del servidor (192.168.2.1).
9. Comprobamos la zona inversa recién creada:

named-checkzone 2.168.192.in-addr.arpa /var/cache/bind/db.192.168.2

Al igual que antes obtendremos un mensaje para indicarnos tanto si la zona es correcta como si no lo es.

Ejecución de named-checkzone sin errores

Ejecución de named-checkzone sin errores
10. Reiniciamos el servicio:

sudo service bind9 restart

Si todo va bien, veremos que está OK.

Reiniciamos el servicio

Reiniciamos el servicio
11. Revisamos el log para comprobar que todo ha ido bien. Aunque se puede hacer con el comando tail, yo prefiero less porque me permite ver todo el contenido del mismo:

less /var/log/syslog

El resultado se puede ver en la siguiente captura:

dns en linux

Comprobamos que no hay errores en syslog

Comprobamos que no hay errores en syslog

Para salir deberemos pulsar la tecla q.
12. Editamos el archivo /etc/resolv.conf para que nuestro servidor resuelva las peticiones DNS:

sudo nano /etc/resolv.conf

Cambiando el primero de los servidores DNS por la IP del nuestro:

nameserver 192.168.2.1
nameserver 8.8.8.8

13. Probamos nuestro servidor de nombres:

dig sliceoflinux.lan

La respuesta será muy parecida a la siguiente:

Ejecución de dig sliceoflinux.lan

Ejecución de dig sliceoflinux.lan
14. Probamos la resolución inversa:

dig -x 192.168.2.1

Esta sería la salida esperada del comando anterior:

Ejecucuión de dig -x 192.168.2.1

Ejecución de dig -x 192.168.2.1
15. Por último, para poder sacarle partido al servidor que hemos creado nos faltaría incluir este servidor DNS en la configuración de los clientes. Para esto puedes nuestro artículo Configurar el servidor DNS de Ubuntu Karmic desde la interfaz gráfica.


Fuente tomada de http://sliceoflinux.com/2010/04/21/instalar-y-configurar-un-servidor-dns-con-ubuntu-server-paso-a-paso/