Servidor DNS
Servidor DNS
Servidor DNS
Servidores de nombres
Los servidores DNS almacenan información acerca del espacio de nombres del dominio, y
son conocidos como servidores de nombres.
Los servidores de nombres suelen ser responsables de una o más zonas (entendiendo como
zona un archivo físico que almacena registros de la base de datos de una parte del espacio
de nombres DNS).
Cuando se configura un servidor de nombres DNS, se indica cuáles son los restantes
servidores de nombres DNS que se encuentran en el mismo dominio.
Un servidor de nombres maestro es un servidor de nombres que obtiene los datos de sus
zonas de archivos locales. Los cambios en una zona, como la adición de dominios, se
realizan en el servidor de nombres principal.
Un servidor de nombres secundario obtiene los datos de sus zonas de otro servidor de
nombres de la red que tiene autoridad para esa zona, normalmente de un servidor de
nombres principal. El proceso de obtención de información de estas zonas vía red se conoce
como transferencia de zona.
Acerca de Bind
BIND (acrónimo de Berkeley Internet Name Domain) es una implementación del protocolo
DNS y provee una implementación libre de los principales componentes del Sistema de
Nombres de Dominio, los cuales incluyen:
Un servidor de sistema de nombres de dominio (named).
Una biblioteca resolutoria de sistema de nombres de dominio.
Herramientas para verificar la operación adecuada del servidor DNS (bind-utils).
Con la finalidad de mejorar la seguridad, genere una firma digital de 512 bits (el valor
predeterminado es 128 bits) para el servidor DNS. Ejecute lo siguiente:
Cambie las pertenencias para que este archivo sea propiedad del usuario root y grupo
named:
Asegúrese que los permisos de acceso sean lectura y escritura para usuario, sólo lectura
para grupo y nada para otros, es decir un permiso 640 (rw-r-----):
wget -N http://www.internic.net/domain/named.root -O
/var/named/named.ca
Si no tiene instalado el programa wget, ejecute antes el comando yum install wget
-y
Es neceesario asignar permiso de lectura y escritura para root, sólo lectura para named y
nada para el resto (rw-r-----).
chmod 640 /var/named/named.ca
Una vez realizado estos ajustes, procedemos a la configuración de los archivos del servicio.
cp /etc/named.conf /etc/named.conf.original
nano /etc/named.conf
//
// named.conf
//
// Provided by Red Hat bind package to configure the ISC BIND
named(8) DNS
// server as a caching only nameserver (as a localhost DNS
resolver only).
//
// See /usr/share/doc/bind*/sample/ for example named
configuration files.
//
options {
listen-on port 53 { 127.0.0.1; };
listen-on-v6 port 53 { ::1; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file
"/var/named/data/named_mem_stats.txt";
allow-query { localhost; };
recursion yes;
dnssec-enable yes;
dnssec-validation yes;
dnssec-lookaside auto;
bindkeys-file "/etc/named.iscdlv.key";
managed-keys-directory "/var/named/dynamic";
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.rfc1912.zones";
include "/etc/named.root.key";
Para poner comentarios en que ocupen varias líneas se utiliza /* al inicio del bloque y */ al
final del mismo, si utiliza la secuencia // o # los comentarios inician a partir de ahí hasta el
final de la línea.
Para efectos del curso, voy a utilizar midominio.com el cual no está registrado ante
ninguna autoridad de registro de nombres de dominio. Hay dos tipos de dominio: ccTLDs
(territoriales) y los gTLDs (génericos); la diferencia estriba en que los dominios ccTLDs se
asocian a un país, por ejemplo el .MX los registros se asocian con México y los gTLDs no.
Por cierto, TLD significa Top Level Domain, que es la más alta categoría de las FQDN
(Fully Qualified Domain Name) que son traducidos a direcciones IP por los DNS oficiales
de Internet. Los nombres servidos por los DNS oficiales son administrados por la Internet
Corporation for Assigned Names and Numbers (ICANN). EnMéxico, el organismo
encargado de la administración .MX es AKKY (akky.mx).
Estos archivos serán los que utilicemos para definir el o los dominios que nuestro servidor
DNS va a resolver, a cada dominio asociado le llamamos origen. Cada nombre de dominio
o de máquina que aparezca en estos archivos es considerado relativo a este origen a menos
que termine con un punto. Esta regla no debe ser tomada a la ligera: todos los nombres en
un archivo de zona son expandidos agregándoles el origen a menos que terminen en un
punto, y esto nos puede desconcertar en ocasiones. Para hacer referencia al origen en sí es
necesario usar el símbolo @. Los archivos de zonas están hechos de lo que en inglés se
conoce como resource records o, simplemente, RRs, y tienen un tipo asociado. Estos son
los principales:
Requerido por cada archivo de zona. El registro SOA contiene información relevante, cómo
la dirección email del administrador de la zona y el nombre de servidor maestro para la
zona. El SOA también contiene un número que es incrementado cada vez que el archivo de
zona es actualizado. Cuando este número es cambiado se lanza el DNS para recargar los
datos de la zona.
Host (A)
El registro A es usado para mapear una dirección IP a un HOST NAME. Éste es el tipo más
común de registro en Internet.
Un CNAME es simplemente un alias para un host. Los CNAMEs te permiten tener más de
un nombre DNS para un host. Los registros CNAME apuntan de regreso hacia un registro
A. Si tú cambias tu dirección IP en tu registro A, todo tu registro CNAME seguirá
automáticamente a la nueva IP del registro A. La solución alternativa es tener múltiples
registros A, pero entonces tú tendrías múltiples lugares para cambiar la dirección IP que
incrementa el margen de error. Usando CNAME es más eficiente.
Text (TXT)
Un registro meramente informativo que tú puedes usar para proveer información adicional
sobre un host. Ö tu puedes usarlo para proveer información técnica a servidores.
Los registros SRV son registros de recurso usados para identificar computadores que
hostean servicios específicos.
AAA
Los registros AAA almacenan el protocolo de internet versión 6 de 128 bit (IPV6), lo cual
no se adpata al formato estándar del registro A.
Campo Descripción
Name El nombre raíz de la zona. El símbolo "@" es una es una forma abreviada
de referirse al origen actual (zona) en el archivo /etc/named.conf
Class Hay diferentes clases de DNS. En una red de casa o de una pequeña
oficina se limitará a la clase IN o Internet utilizada para definir la
información de asignación de direcciones IP para BIND. Hay otras clases
para protocolos y funciones que no son de Internet pero que raramente
son usados.
Type El tipo de registro de recurso de DNS. Para este ejemplo, éste es un
registro SOA.
Name-Server Nombre completo del servidor DNS primario. Debe terminar con el signo
".".
Email-addres La dirección de correo del administrador del servidor DNS. La @ en la
dirección de correo se remplaza por un ".". La dirección de correo debe
terminar también con un ".".
Serial-no Número de serie de la configuración actual. Puede utilizar el formato
AAMMDD
A serial number for the current configuration. You can use the date format
YYYYMMDD with an incremented single digit number tagged to the end.
This will allow you to do multiple edits each day with a serial number that
both increments and reflects the date on which the change was made.
Refresh Le dice al servidor DNS esclavo que tan seguido debería verificar la
configuración en el servidor DNS maestro. Los DNS esclavos no se utilizan
en redes pequeñas.
Retry Intervalo de reintento del DNS esclavo para conectarse al maestro en caso
de un fallo en la conexión.
Expiry La cantidad total de tiempo que un DNS esclavo debe volver a intentar
ponerse en contacto con el maestro antes de expirar los datos que
contiene. Referencias futuras estarán dirigidas a los servidores raíz.
Minimum-TTL Hay ocasiones en que los clientes remotos harán consultas para
subdominios que no existen. El servidor DNS responderá con un no
dominio o NXDOMAIN que el cliente remoto cacha. Este valor define la
duración de caché que el DNS incluye en la respuesta.
Los tiempos de los campos refresh, retry, expiry y minimu-TTL se expresan en segundos o bien en
su forma abreviada H=Hour, D=Day y W=Week.
Ahora que sabe los elementos clave de un archivo de zona, es el momento de examinar un
ejemplo para el dominio midominio.com y como ejemplo el servidor utiliza la dirección IP
192.168.3.123:
El TTL para nuestro dominio es de una hora (3600 segundos), por lo tanto los servidores de
caching DNS remotos almacenarán la información referente a la zona de nuestro dominio
por una hora antes de que vacíe sus cachés.
Una práctica requerida consiste en incrementar el número de serie cada vez que se edite un
archivo de zona. En escenarios donde se utilicen servidores secundarios estos sondean
periódicamente al servidor principal con el fin de averiguar si la información de archivo de
zona se ha actualizado, utilizando para determinar esto el número de serie. No hacer esto,
podría provocar que los servidores esclavos contengan información obsoleta aún cuando se
hayan modificado.
cd /var/named/. /
Información importante
Cada vez que haga algún cambio en algún archivo de zona, deberá cambiar el número de
serie a fin de que tomen efecto los cambios de inmediato cuando se reinicie el servicio
named, ya que de otro modo tendría que reiniciar el equipo, algo poco conveniente.
Las zonas de resolución inversa que involucran direcciones IP públicas son responsabilidad
de los ISP (proveedores de servicio de acceso hacia Internet). Crear una zona de resolución
inversa sin ser la autoridad de dicha zona tiene efecto sólo para quien use el servidor DNS
recién configurado como único DNS.
Es necesario realizar unos ajustes al archivo de configuración del servicio DNS. Para ello
debemos agregar las zonas recién creadas en la línea 44 de la siguiente manera:
zone "midominio.com" IN {
type master;
file "fwd.midominio.com";
allow-update { none; };
};
zone "3.168.192.in-addr.arpa" IN {
type master;
file "rev.midominio.com";
allow-update { none; };
};
named-checkconf /etc/named.conf
Si todo está bien, procedemos a arrancar por primera vez nuestro servicio; si hay errores,
debemos seguir las indicaciones producidas por los comandos con los cambios a realizar.
Nos debe devolver el tan esperado OK de que todo salió bien ... si no fue así, entonces
hay que revisar los mensajes de error que nos devolvió el arranque del servidor y proceder a
corregirlos.
Sólo falta indicar que el servicio de nombres se inicie cuando se arranque el servidor:
Procederemos a realizar pruebas con las utilerías que instalamos con BIND:
dig
;; QUESTION SECTION:
;ns.midominio.com. IN A
;; ANSWER SECTION:
ns.midominio.com. 3600 IN A 192.168.3.123
;; AUTHORITY SECTION:
midominio.com. 3600 IN NS
ns.midominio.com.
nslookup
Name: midominio.com
Address: 192.168.3.123
host