1. Introducción
DNS viene del inglés Domain Name System que significa Sistema de Nombres de Dominio y su objetivo consiste en resolver nombres de dominio a direcciones IP, que es con lo que trabaja internamente un ordenador.
Un poco de historia:
Este sistema fue desarrollado en los años 80, por Paul V. Mockapetris, a raíz del gran crecimiento de la red. Empezó a resultar complicado resolver manualmente todas las direcciones IP que fueron apareciendo.
Por ejemplo, cuando tecleamos en el navegador www.8bitsofmadness.com, el ordenador consulta un servidor DNS establecido en sus ajustes y, si consigue resolverla, se conecta a la dirección IP del servidor en el cual se almacena la página (por ejemplo 74.125.195.121).
Los servidores DNS se organizan de manera jerárquica. Cada dominio o subdominio tiene una o más zonas de autoridad que publican información acerca de cualquier domino incluido en ella,
Hay 2 tipos de resolución DNS:
• Directa: se obtiene una dirección IP a partir de un nombre.
• Inversa: se obtiene un nombre a partir de la dirección IP.
1.1 La estructura de un nombre de dominio
Todos los nombres de dominio de los host tienen una estructura parecida a www.8bitsofmadness.com, compuesta de distintos grupos:
• Dominio de primer nivel: en mi caso es ".com" e identifica la actividad desempeñada (".com" de comunidad, ".org" de organización, ".edu" de educación), aunque también podría identificar el país de procedencia (".es", ".jp", ".ru", ".hk", etc). Puede estar compuesto por uno o más elementos (ej: "com.es", "co.uk").
• Dominio de segundo nivel: en mi caso "8bitsofmadness" y denomina la marca o, valga la redundancia, denominación de la página.
• Dominio de tercer nivel: en este caso "www" , y hace referencia al tipo de servidor (web, ftp, etc).
Un host puede tener un dominio de hasta 127 niveles, sin embargo es raro que se utilicen más de 4-5.
2. Empezando. Actualizamos los repositorios del sistema.
Este punto coincide en su totalidad con el punto 2 de este artículo. Por lo tanto solo tienes que seguir esos pasos.
3. Instalamos el servidor
Vamos a instalar BIND9, que es el servidor DNS de Linux por excelencia. Para ello primero nos situamos en modo root mediante sudo su y tecleamos:
No olvidamos de hacer una copia de respaldo del fichero de configuración:
4. Configuramos una @IP estática en el servidor
Al igual que las otras veces vamos a abrir con permisos root el fichero /etc/network/interfaces para asignar una dirección IP estática a nuestro servidor. Voy a asignar al mío la 192.168.0.1, con la máscara 255.255.255.0. Para ello agrego al fichero las siguientes configuraciones:
Guardamos los cambios y reiniciamos el servicio de red mediante /etc/init.d/networking restart.
Probamos la configuración de la interfaz mediante un ifconfig:
Si no os la coge correctamente, probad un ifdown eth0 && ifup eth0.
5. Configuramos las zonas de búsqueda
Creamos una zona de búsqueda directa y otra inversa, indicando los ficheros de bases de datos del directorio /etc/bind correspondientes a cada uno. Para resoluciones directas (de nombre a IP) y e inversas, respectivamente.
5.1 Definimos las zonas en el fichero /etc/bind/named.conf.local
Entre comillas indicamos nuestro dominio para cada zona, su tipo (master - primario, slave - secundario), y la base da datos correspondiente de cada, cuyo nombre incluirá el nombre de nuestro dominio:
5.2 Creamos los ficheros /etc/bind/db.andrii.com (utilizado para resolución directa) y el /etc/bind.db.192.168.0 (para la zona inversa) de nuestro servidor DNS.
Listamos el contenido de /etc/bin:
Para crear el primero, utilizaremos el fichero /etc/bind/db.local de plantilla. Para ello lo copiamos con nusetro nombre al mismo directorio:
Para el segundo empleamos de plantilla /etc/bind/db.127 y lo copiamos con nuestro nombre al mismo directorio:
Comprobamos que los ficheros se han creado correctamente:
6. Explicación y edición del /etc/bind/db.andrii.com
Aspecto inicial del fichero (idéntico a db.local):
Al comienzo del archivo vemos el dominio a resolver ("localhost.", que sustituiremos por el nuestro). Debemos notar que al final de cada dominio viene un punto, que identifica la raíz de este.
Normalmente no vamos a modificar los siguientes paramentros:
• Serial: es un identificador del archivo, puede tener un valor arbitrario.
• Refresco: número de segundos que un servidor de nombres secundario debe esperar para comprobar de nuevo los valores de un registro.
• Reintentos: número de segundos que un servidor de nombres secundario debe esperar después de un intento fallido de recuperación de datos del servidor primario.
• Expiración: número de segundos máximo que los servidores de nombre secundarios retendrán los valores antes de expirarlos.
• TTL mínimo: tiempo de vida mínimo (TimeToLive) y es el número de segundos que los registros se mantienen activos en los servidores NS caché antes de volver a preguntar su valor real.
Registros más empleados e importantes:
• A (Address). Es el registro más usado, que define una dirección IP y el nombre asignado al host. Generalmente existen varios en un dominio.
• PTR (Pointer). También conocido como 'registro inverso', funciona a la inversa del registro A, traduciendo IPs en nombres de dominio.
• MX (Mail eXchanger). Se usa para identificar servidores de correo, se pueden definir dos o más servidores de correo para un dominio, siendo que el orden implica su prioridad. Debe haber al menos uno para un dominio.
• CNAME (Canonical Name). Es un alias que se asigna a un host que tiene una dirección IP valida y que responde a diversos nombres. Pueden declararse varios para un host.
• NS (Name Server). Define los servidores de nombre principales de un dominio. Debe haber al menos uno y pueden declararse varios para un dominio.
• SOA (Start Of Authority). Este es el primer registro de la zona y sólo puede haber uno en cada archivo de la zona y sólo está presente si el servidor es autoritario del dominio. Especifica el servidor DNS primario del dominio, la cuenta de correo del administrador y tiempo de refresco de los servidores secundarios.
Además de sustituir localhost por el nombre de nuestro dominio (andrii.local en mi caso), cambiaremos 127.0.0.1 por la dirección IP de nuestro servidor. Voy a agregar, además, algunos registros nuevos a nuestra base de datos db.andrii.local. Su contenido tendrá el siguiente aspecto:
Guardamos y comprobamos la sintaxis de db.andrii.local con el siguinete comando:
7. Edición del /etc/bind/db.192.168.0
Como ya sabemos, este fichero configura la resolución inversa. Su aspecto inicial es el siguiente:
Al igual que en el anterior, sustituimos localhost por el nombre de nuestro dominio, el 1.0.0 por el número de host de nuestro servidor (si asignamos la dirección 192.168.0.1, sería 1, ya que la máscara es 255.255.255.0) y agregamos algunas filas:
8. Reiniciamos el servicio DNS y comprobamos si funciona
Para ello ejecutamos /etc/init.d/bind9 restart:
Ahora, con nslookup, comprobamos si el servidor resuelve correctamente nuestro nombre de dominio a la dirección IP y vice versa:
Repartir además nuestro DNS por DHCP
En ESTE TUTORIAL explico como configurar un servidor DHCP en Ubuntu Server. Para repartir la configuración DNS, además de las direcciones IP, tenemos que modificar /etc/dhcp/dhcpd.conf de nuestro servidor DHCP insertando los valores option domain-name y option domain-name-servers:
9. La prueba final
Iniciamos una máquina cliente (Windows 7 en mi caso), estando servidor y esta en modo de Red interna (o Host-only en VMware). Iniciamos el servicio isc-dhcp-server (/etc/init.d/isc-dhcp-server start) de nuestro servidor DHCP configurado previamente. Si no lo hiciste, puedes introducir la IP de nuestro DNS manualmente en los ajustes de la interfaz del cliente.
ÓLE MIS ADMINISTRADORES CÓMO MOLAN! SE MERECEN UNA OLA!
Hasta otra, chavales! :)
P.D.: Hola Susana!
No hay comentarios:
Publicar un comentario