# > Servicio DNS
Servidor de nombres autoritario.
Un servidor de nombres de dominio DNS autoritario para una zona como aquel que contiene los registros de recursos para dicha zona. Para ello se utilizan los registros de recursos SOA y NS.
Cada zona puede tener uno o mas servidores de nombre de dominio autoritarios, y uno de ellos debe ser secundario o caché.
-Primario: los registros de recursos para la zona se encuentran en los archivos de la zona que estan almacenados en el sistema del propio servidor DNS.
-Secundario: los registros de recursos de la zona se cargan desde otro servidor de nombres (primario) utilizando el proceso de transferencia de zona.
Base de datos del protocolo DNS
Cada servidor de nombres de dominio mantiene una base de datos que sirva para asociar los nombres de dominios con direcciones IP llamada archivos de la zona, y una base de datos de resolucion inversa llamada archivos de resolucion inversa de la zona. El formato de estas bases de datos es de archivos de texto.
Para resolver nombres los servidores DNS consultan las zonas, las cuales contienen los registros de recursos (RR) que describen la información relativa al dominio DNS. Por ejemplo, hay registros de recursos que asignan nombres descriptivos a direcciones IP.
El formato de cada registro de recursos es:
Propietario TTL Clase Tipo RDATA
Los principales tipos de registros de recursos son:
SOA (inicio de autoridad), identifica al servidor autoritario de una zona y sus parámetros de configuración, registro SOA:
performsec.com. IN SOA servidor.performsec.com.
( 2005051701 ; numero de serie
10800 ; actualizacion1. ; reintentos604800 ; caducidad
86400 ; valor TTL
)
NS (servidor de nombres), identifica servidores de nombres autorizados para una zona, un ejemplo de este servicio:
performsec.com. IN NS servidor.performsec.com.
A (direccion), asocial un nombre de dominio FQDN con una dirección IP, por ejemplo, el registro A siguiente asigna una dirección IP a la maquina pc2:
Pc2.performsec.com. IN A 192.168.1.2
PTR (puntero), asigna una direccion IP a un nombre de dominio completamente cualificado. Para las busquedas inversas:
2.1.168.192.in-addr.arpa IN PTR pc2.performsec.com.
In-addr significa (inverse address) direccion inverse y arpa porque en un principio Internet se llamo ARPANET.
MX (registro de correo), indica maquinas encargadas de ka entrega de correo en el dominio:
performsec.com. IN MX 0 mail.performsec.com.
CNAME (nombre canónico), permite asignar uno o mas nombres a una maquina.
TXT (text), almacena cualquier información.
SRV (servicio), ubicación de los servidores para un servicio, ejemplo de registro SRV para un servidor web del dominio performsec.com.:
http.tcp.performsec.com. IN SRV 0 0 80 www.performsec.com.
Configuración de un servidor DNS en Debian GNU/Linux.
La configuración de un servidor DNS en Debian requiere la instalacion de los paquetes siguiente (como root):
# apt-get install bind9 bind9-doc dnsutils
El servicio DNS esta compuesto por dos programas:
-El denominado named: es el servidor de nombres de dominio.
-El resolver (cliente): es el que genera las peticiones.
Antes de editar y manipular cualquier archivo de configuración de cualquier herramienta o servicio hay que hacer una copia de seguridad del mismo.Se pueden copiar con el mismo nombre y añadir la final del texto origen. Por ejemplo:
# cp /etc/bin/named.conf.local /etc/bind/named.conf.local.origen
El archivo de configuración del dominio named se encuentra en /etc/bind/ y se llama named.conf. En este mismo directorio se encuentra el resto de archivos de configuración relaciones con bind.
El archivo named.conf no se suele modificar. Las zonas especificas del servidor DNS que se configura se definen en /etc/bind/named.conf.local y se incluyen al final de este archivo con un “incluye”.
El directorio de trabajo de named es /var/cache/bind/.
Para lanzar el servicio debe ejecutarse la orden siguiente:
# /etc/init.d/bind9 start
Y el proceso dominio que se lanza es el named.
Los archivos de configuración implicados son named.config, /etc/bind/named.conf.local, db.performsec.com y db.192.168.1.
Named.conf almacena la configuración de las diferentes zonas generadas por defecto en el momento de la instalación, entre ellas la correspondiente a la interfaz local o loopback para el dominio arpa llamada 0.0.127.in-addr.arpa.
Por otro lado tenemos, /etc/bind/named.conf.local contiene información especifica de las zonas de resolución directa e inversa para el servidor DNS, eliminado la información no especifica. Este archivo contiene lo siguiente:
/* Resolucion normal */
Zone “performsec.com” {
Type master;
Allow-query { 127.0.0.1; 192.168.1.1/24; };
Allow-transfer {127.0.0.1; 192.168.1.1/24; };
File “/etc/bind/bd.performsec.com”;
};
/* Resolucion inversa */
Zone “1.168.192.in-addr.arpa” {
Type-master;
Allow-query { 127.0.0.1.; 192.168.1.1/24; };
Allow-transfer {127.0.0.1; 192.168.1.1/24; };
File “/etc/bind/db.192.168.1”;
};
En el codigo anterior se incluyen opciones de seguridad, cuyo significado se explica a continuación:
-allow-tranfer: restringe las transferencias de zona.
-allow-query: deja activas, unica y exclusivamente, la consultas internas y a la maquina local.
Es muy importante que siempre que se coloque un nombre de dominio completo, este finalice con un punto ya que, de no ponerse, su interpretación real será la concatenación con el origen.
El archivo de configuración db.performsec.com almacena información de la zona performsec.com. a definir.
En el caso del servidor DNS para el dominio definido en el aula, su contenido (/etc/bind/db.performsec.com) es el siguiente:
$TTL 10800
DOM.com. IN SOA servidor.performsec.com.
(1 ;
10800 ; 3 horas
900 ; 15 minutos
604800 ; 1 semana
86400 ; 1 dia
DOM.com. IN A 192.168.1.1
DOM.com. IN NS servidor.performsec.com.
; servidores
Servidor IN A 192.168.1.1
; servidor de impression
Cups IN CNAME servidor
; servidor web
www IN CNAME servidor
; estaciones
Pc2 IN A 192.168.1.2
Pc3 IN A 192.168.1.3
Grupo2INCNAME pc2
; grupo2 es un alias de pc2
; incluir el resto de equipos de la red
El archivo de configuración db.192.168.1 contiene los punteros de nombre de dominio PTR que indican al servidor que el equipo con direccion 2, por ejemplo, es el que se llama pc2.performsec.com. Para el servidor DNS configurado su dominio (/etc/bind/db.192.168.1) es el siguiente:
$TTL 10800
performsec.com. IN SOA performsec.com.
( 1 ;
10800 ;
900 ;
604800 ;
86400 ; )
DOM.com IN NS servidor.performsec.com.
; puerta de enlace
1 IN PTR gateway.performsec.com.
; servidores internos
1 IN PTR servidores.performsec.com.
; estaciones
2 IN PTR pc2.performsec.com.
3 IN PTR pc3.performsec.com.
; incluir el resto de maquinas
Llegando a este punto es importante hacer dos observaciones:
1. Los alias definidos en el DNS nunca deben aparecer en la parte derecha de un registro, en la zona correspondiente a los datos.
2. Cuando el servidor de DNS trata de resolver un nombre y encuentra que este en un alias, ya que tiene un registro CNAME asociado, sustituye el alias por su nombre canónico y devuelve las direcciones IP indicadas para éste.
Una vez configurado el servidor DNS, y para comprobar que esta atendiendo a las peticiones que le llegan, conviene ejecutar las dos ordenes siguientes: la primera relanza el servicio (si se han hecho modificaciones) y la segunda comprueba que atiende peticiones de resolución de nombres.
Servidor:/etc/bind# /etc/init.d/bind9 restart
Servidor:/etc/bind# dig any servidor.performsec.com
; <<>> DIG 9.2.4 <<>> any
Servidores.performsec.com
; ; global options: pintcmd
; ; got answer:
; ; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13046
; ; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
; ; QUESTION SECTION:
;servidor.performsec.com. IN ANY; ; ANSWER SECTION:
Servidor.performsec.com. 10800 IN A 192.168.1.1; ; AUTHORITY SECTION:
performsec.com. 10800 IN NS servidor.performsec.com.
; ; Query time: 1 msec
; ; SERVER: 192.168.1.1#53 (192.168.1.1)
; ; WHEN: Thu January 1 00:00:01 2008
; ; MSG SIZE rcvd: 68
Hay que observar que en la ejecución el estado del servidor DNS sea NOERROR, lo cual indica que el servidor está atendiendo peticiones de resolución de nombres.
Para comprobar el funcionamiento de la resolución inversa, ejecutar la orden siguiente:
# host 127.0.0.1
1.0.0.127.in-addr.arpa domain name pointer localhost.
Para analizar posibles fallos en el funcionamiento del servidor DNS conviene visualizar el contenido del archive de logs /var/log/syslog. Ejecutando las órdenes:
# /etc/init.d/bind9 restart
# trail –f /var/log/syslog
Se pueden observer las lineas de arranque del demonio named y los posibles conflictos y/o errores de configuración.
# > Configuración del cliente Debian GNU/Linux
El cliente del servicio DNS se llama resolver. El “resolvedor” (resolver) es parte de una biblioteca de funciones (similares a las rutinas) de C que se enlazan a otros programas que necesitan utilizarlas para consultar un servidor DNS. Esto se realiza de forma transparante para el usuario.
Las tareas de resolver son:
1. Interrogar al servidor de nombres.
2. Interpretar respuestas ( que pueden ser registros RR o errores).
3. Devolver información al programa que la solicita.
El resolver de GNU/Linux posee una configuración muy sencilla que se realiza a traves del archivo /atc/resolv.conf.
El archivo /etc/resolv.conf consta de un conjunto de directivas o atributos con la sintaxis siguiente:
<atributo> <valor1> <valor2> … <valorN>
Los atributos pueden ser nameserver, domain, search y options.
Nameserver indica la dirección IP de los servidores de DNS, cada uno a través de una directiva diferente. El numero máximo de servidores de nombres de dominio esta especificado en el archivo /usr/incluye/resolv.h a través de la constante MAXNS cuyo valor por defecto es de tres. Ejemplo de atributo nameserver en /etc/resolv.conf:
Nameserver 192.168.1.1 127.0.0.1
El atributo domain indica el dominio por defecto:
Domain performsec.com
Si no existe esta linea en el archivo /etc/resolv.conf y la maquina local se llama servidor.performsec.com, se toma por defecto, como nombre de dominio, a partir del primer punto hacia la derecha (performsec.com).
Search especifica la lista de dominios donde se harán las consultas:
Search performsec.com
Las directivas domain y search son mutuamente excluyentes, es decir la ultima que se indica sobrescribe a la anterior.
Options permite modificar el valor de algunos atributos internos del resolver, Se expresa de la forma:
Options <opcion1> <opcion2> … <opcionN>
Ejemplo del archivo ya configurado /etc/resolv.cof
Search performsec.com
Nameserver 192.168.1.1 127.0.0.1
Options debug timeout:10
Por ultimo, en el archive /etc/host.conf se define el orden de busquea de informacion:
#primero que utilice bind, es decir en el
# servidor, DNS y si falla que busque en /etc/host.
Orden bind, host
Multi on
La opción multi puede estar en on o en off. Si esta en on el resolver devuelve todas las direcciones IP validas para una maquina que aparecen en el archivo /etc/hosts. Si esta en off (valor por defecto) solo devuelve la primera.
Para comprobar que se esta resolviendo nombres, ejecutar la orden ping sobre el nombre del equipo:
# ping servidor
# ping servidor.performsec.com
Si todo esta bien configurado deberá responder sin problema. Tambien se puede comprobar ejecutando:
# nslookup servidor.performsec.com
Si no responde el ping con “servidor”, pero si con “servidor.performsec.com” habrá que revisar el archivo /etc/resolv.conf y comprobar si están simultáneamente las opciones search y domain.