Que es el protocolo DNS y como montar un servidor DNS en CentOS 6

Objetivos

Realizar una introducción a los conceptos básicos para entender y poner en funcionamiento un servidor de nombres de dominio, además de conocer como se registran o configuran nuevos nombres de dominio.

EL Protocolo DNS

El protocolo DNS o Sistema de Nombre de Dominio, es un protocolo que funciona como una base de datos distribuida y jerárquica, la cual consiste en asignar nombres a direcciones IP asignadas a servidores facilitando así a los usuarios el recordar como se llaman. El anterior fue el protocolo, mientras que su implementación cae en manos de BIND (Berkley Internet Name Domain), una implementación de software libre usada en aproximadamente el 99% de internet.

En este capitulo se mostrará como instalar bind como un servidor de nombres de dominio de tipo maestro; hay dos tipos de servidores DNS, los maestros (resuelven un dominio por la información que tiene en si mismo) y los esclavos (resuelven los dominios primero transfiriendo la información de las zonas de dominio desde otro servidor), se mostrará como configurar el servidor, y por ultimo como registrar nuevos nombres de dominios.

Instalación Y Configuración De BIND

En caso de no tener instalados los paquetes (bind bind-chroot bind-utils) necesarios para el funcionamiento del servidor DNS se ejecuta el siguiente comando.

yum -y install bind bind-chroot bind-utils

Luego de instalar con existo los paquetes anteriores, se debe generar una firma digital para la seguridad del servidor, preferiblemente que sea de 512 bits, y después de generarla se deben cambiar los permisos del archivo donde queda guardada para que el único que tenga acceso sea el usuario root y el grupo named, por seguridad, para ello se usan los siguientes comandos.

rndc-confgen -a -r /dev/urandom -b 512 -c /etc/rndc.key
chown root:named /etc/rndc.key
chmod 640 /etc/rndc.key

Ahora, existen unos servidores llamados Server Root Masters, que son los servidores principales o de mas alto nivel en la jerarquía del funcionamiento del protocolo DNS; resulta que para el buen funcionamiento de todo servidor DNS es necesario conocer donde están ubicandos estos servidores que están distribuidos por todo el planeta, y para ello se debe actualizar el archivo named.ca ubicado en la carpeta /var/named/ de la siguiente manera.

wget -N http://www.internic.net/domain/named.root \ -O /var/named/named.ca
chown root:named /var/named/named.ca
chmod 640 /var/named/named.ca

La implementación Bind tiene un archivo de configuración principal, llamado named.conf y se encuentra en /etc/, en este archivo es donde se declaran las zonas de dominios que este servidor va a mantener, también se pueden configurar sobre que dirección IP y puerto escucha el servidor (puerto 53 por defecto) entre muchas mas cosas. A continuación se muestra el archivo named.conf para explicar que partes se deben modificar como mínimo.

Archivo named

La linea listen-on siver para elegir sobre que dirección IP y puerto va a escuchar el servidor DNS, en este caso el puerto 53 y por colocar localhost escuchará en las direcciones 127.0.0.1 y la dirección IP que tenga asignada la maquina.

listen-on port 53 { localhost; };

La linea anterior funciona para IP versión 4 y esta siguiente para IP versión 6, pero como no se esta usando esta tecnología en la realización de esta guía se comenta para desactivarla.

// listen-on-v6 port 53 { ::1; };

Ahora con la linea allow-query se decide a que hosts se les permitirá realizar consultas al DNS, en este caso a cualquiera (any).

allow-query { any; };

Con la linea allow-transfer se decide con que servidores se permite la comunicación para la transferencia de zonas de dominio, en este caso nameservers el cual es una ACL (Lista de Control de Acceso) que esta declarada mas abajo en el archivo indicando que los servidores permitidos seran la propia maquina con las direcciones 127.0.0.1 y 10.130.127.1 (dirección ip de la maquina) además de los servidores dns que proporciona el ISP contratado.

allow-transfer { nameservers; };
acl "nameservers" { 127.0.0.1; 10.130.127.1; 190.157.2.140; 200.118.2.91; };

La siguiente instrucción es recursion yes, la cual hace que cuando el servidor DNS recibe una solicitud de resolución de dominio y este no tiene la información para resolver el dominio, asume la carga de preguntarle a otros servidores DNS y luego entregar la respuesta completa al cliente; si se cambia yes por no, entonces el servidor responderá solo con base en la información que tenga en su caché o en las zonas locales y si no tiene respuesta reenvía la petición a otro servidor DNS.

recursion yes;

La parte en la que están las zonas declaradas se verá en la siguiente sección donde se crearán zonas de forward y de reverso; mientras, una vez modificado este archivo queda por modificar el archivo hosts que se encuentra en la carpeta /etc/, aquí se debe colocar la dirección IP de asignada a la máquina y el nombre de dominio que se le quiere dar para identificarla.

Archivo hosts

Ahora en la configuración de red queda modificar cual es el servidor DNS al que la máquina estará realizando consultas, y ese servidor debe ser la propia máquina, entonces como muestra la imagen se cambia configuración de red para que el DNS sea estático y sea puesto de manera manual.

Configuración de red

Después de toda esta configuración lo que queda es iniciar el servicio, pero se debe tener en cuenta que si hay zonas declaradas y no se han creado sus archivos pertinentes entonces el inicio del servicio fallará. El nombre del servicio de DNS es named y se inicia de la siguiente manera.

service named start
chconfig --level 35 named on

Registar Un Dominio

Para crear un dominio se deben declarar una zona de forward (permiten devolver direcciones IP tras consultar un dominio) y una zona de reverso (devuelven nombres de dominio totalmente cualificados a partir de consultar una dirección IP), estas zonas deben ser declaradas en el archivo named.conf como se vio en el ejemplo anterior, donde tenia ya varias zonas declaradas.

En la siguiente imagen se ven dos zonas, una para el forward (zona de reenvío) y otra para el reverso (zona de resolución inversa), en la primera declaramos el nombre del domino y cual es el archivo de zona donde se guardará toda su configuración, en este caso el archivo se llama jfnietos.example.com.zone y la carpeta donde debe ser guardado y todos los demás archivos de zona es /var/named/, después está la declaración de la zona de reverso en la cual se registra como nombre la red en la que está asignada la dirección ip de la máquina a la que se resuelve el dominio creado, el nombre del archivo es rev.10.130.127 pero la red al declararla como nombre de la zona se debe escribir de manera inversa.

Zonas

Los archivos de zona se deben crear en la carpeta /var/named/, en este caso primero se analizará el archivo de zona de resolución, en el cual está configurado el dominio jfnietos.example.com. es importante notar que aquí se debe escribir el FQDN (nombre de dominio totalmente cualificado) el cual es el domonio con un punto al final que indica que es el dominio entero.

En los archivos de zonas existen algunas configuraciones que requieren especificar tiempos, estos se pueden escribir en términos de segundos, horas (H), días (D) o semanas (W), además de que se debe colocar la fecha de creación del archivo además de la versión de este como indica esta zona con la fecha 201410181 (el ultimo número es la versión).

Forward Zone

Algunas directivas a tener en cuanta son por ejemplo el TTL 3D, el cual indica el tiempo de vida (en este caso 3 días) el cual le indica a los servidores DNS durante cuanto tiempo deberían de guardar estas zonas en su caché antes de solicitar una actualización de esta información.

TTL 3D

EL SOA o inicio de autoridad es una directiva que describe las características globales de la zona.

SOA jfnietos.example.com. root.jfnietos.example.com.

Con las siguientes directivas NS (nombre de servidor) y A (dirección IPv4) le indicamos que el nombre del servidor es el dominio que se está registrando y a que dirección IP debe responder.

NS jfnietos.example.com.
A 10.130.127.1

Con la directiva MX (intercambio de correo) se declara cual va a ser el servidor de correo de esta zona.

MX 10 mail.jfnietos.example.com.

Después de configurar el dominio principal, se pueden configurar subdominios para este dominio que a la hora de usarlos quedarían algo así como www.jfnietos.example.com; estos subdominios se registran con la directiva A primero indicando el nombre del subdominio y luego a que dirección IP serán enlazados.

www IN A 10.130.127.1
ventas IN A 10.130.127.1
talentos IN A 10.130.127.1

El archivo de reverso es muy similar al de forward, con la diferencia a la hora de configurar los subdominios que se registran con la directiva PTR (apuntador) en la que solo indicamos primero la parte que representa al host en la dirección IP luego al final se escribe el dominio completo al que está enlazado.

Reverse Zone

Después de haber configurado los archivos de zonas solo queda reiniciar el servicio named y realizar las pruebas pertinentes para verificar su buen funcionamiento. Para probar que los dominios fueron bien configurados se usa el comando nslookup, el cual al ejecutarlo abrirá un prompt con el caracter > esperando instrucciones, aquí se introducen los dominios que se hayan registrado, como se ve en el ejemplo de la imagen se introdujo el dominio compania1.example.com lo que produce una salida donde muestra que realizó la consulta por este dominio al servidor 10.130.127.1 en el puerto 53 (puerto de escucha del DNS) y si está bien configurado el dominio dice después que ese dominio está ligado a la dirección IP 10.130.127.1

Prueba Forward

Con el comando nslookup también se puede realizar la prueba de resolución inversa ingresando la dirección IP esperando que responda que dominios están ligados a esta dirección IP; como muestra la imagen siguiente la dirección IP 10.130.127.1 tiene 6 dominios asignados.

Prueba Reverso