El formato de un archivo de zona se define en el RFC 1035 (sección 5) y en el RFC 1034 (sección 3.6.1). Este formato fue utilizado originalmente por el paquete de software Berkeley Internet Name Domain (BIND), pero ha sido ampliamente adoptado por otro software de servidor DNS – aunque algunos de ellos (por ejemplo, NSD, PowerDNS) utilizan los archivos de zona sólo como punto de partida para compilarlos en formato de base de datos, véase también Microsoft DNS con integración de base de datos de Active Directory.
Un archivo de zona es una secuencia de entradas orientadas a líneas, cada una de las cuales es una directiva o una descripción de texto que define un único registro de recursos (RR). Una entrada se compone de campos separados por cualquier combinación de espacios en blanco (tabuladores y espacios), y termina en un límite de línea, excepto dentro de un valor de campo de cadena entre comillas o un par de paréntesis de formato de cierre. Cualquier línea puede terminar con un texto de comentario precedido por un punto y coma, y el archivo también puede contener cualquier número de líneas en blanco.
Las entradas pueden aparecer en cualquier orden en un archivo de zona, con algunas excepciones.
Las directivas son entradas de control que afectan al resto del archivo de zona. El primer campo de una directiva consiste en un signo de dólar seguido de una palabra clave:
- $ORIGIN va seguido de un nombre de dominio que se utilizará como origen para los subsiguientes nombres de dominio relativos.
- $INCLUDE va seguido de un nombre de archivo y de un nombre de dominio de origen opcional que se utilizará al interpretar su contenido (que se trata como si apareciera en el archivo principal, seguido de un restablecimiento del valor de origen que precede a la evaluación de la directiva).
- $TTL, definida en el RFC 2308 (sección 4), va seguida de un número que se utilizará como TTL (tiempo de vida) por defecto.
- $GENERATE, una extensión no estándar aceptada por BIND y algunos otros software de servidores de nombres para insertar múltiples registros de recursos con una sola entrada, va seguida de una representación concisa de una secuencia creciente de números no negativos y, a continuación, una entrada RR de plantilla. Se añade un registro de recursos para cada número de la secuencia, utilizando la plantilla con los caracteres «$» sin esconder por el número.
Una entrada de registro de recursos consta de varios campos como se indica a continuación (ambos ordenamientos de campos son aceptables y pueden usarse indistintamente):
nombre | ttl | clase de registro | tipo de registro | datos de registro |
nombre | clase de registro | ttl | tipo de registro | datos de registro |
El campo nombre puede dejarse en blanco. Si es así, el registro hereda el campo del registro anterior. Se utiliza una @ libre para denotar el origen actual.
El campo ttl especifica el número de segundos tras los cuales un cliente de caché debe descartar el registro y realizar una nueva operación de resolución para obtener información fresca. Algunos servidores de nombres, incluido BIND, permiten representaciones no estándar que utilizan abreviaturas de unidades de tiempo (por ejemplo, «2d» que significa dos días de 24 horas o «1h30m» que significa una hora y 30 minutos). Puede omitirse, en cuyo caso el valor resultante se establecerá a partir del TTL por defecto (si está definido) o del registro anterior.
El campo de clase de registro indica el espacio de nombres de la información del registro. Puede omitirse, en cuyo caso el valor resultante se establecerá a partir del registro anterior. El espacio de nombres más utilizado es el de Internet, indicado por el parámetro IN, pero existen otros y están en uso, por ejemplo, CHAOS.
El campo tipo de registro es una abreviatura del tipo de información almacenada en el último campo, datos del registro. Por ejemplo: un registro de dirección (tipo A para IPv4, o tipo AAAA para IPv6,) asigna el nombre de dominio del primer campo a una dirección IP en los datos del registro; un registro de intercambiador de correo (tipo MX) especifica el host de correo del Protocolo Simple de Transferencia de Correo (SMTP) para un dominio.
El campo de datos del registro puede consistir en uno o más elementos de información, dependiendo de los requisitos de cada tipo de registro. Por ejemplo, un registro de dirección sólo requiere una dirección, mientras que un registro de intercambiador de correo requiere una prioridad y un nombre de dominio. Estos elementos de información se representan como campos separados por espacios en blanco.
Ejemplo de archivoEditar
Un ejemplo de archivo de zona para el dominio example.com es el siguiente:
$ORIGIN example.com. ; designates the start of this zone file in the namespace$TTL 3600 ; default expiration time (in seconds) of all RRs without their own TTL valueexample.com. IN SOA ns.example.com. username.example.com. ( 2020091025 7200 3600 1209600 3600 )example.com. IN NS ns ; ns.example.com is a nameserver for example.comexample.com. IN NS ns.somewhere.example. ; ns.somewhere.example is a backup nameserver for example.comexample.com. IN MX 10 mail.example.com. ; mail.example.com is the mailserver for example.com@ IN MX 20 mail2.example.com. ; equivalent to above line, "@" represents zone origin@ IN MX 50 mail3 ; equivalent to above line, but using a relative host nameexample.com. IN A 192.0.2.1 ; IPv4 address for example.com IN AAAA 2001:db8:10::1 ; IPv6 address for example.comns IN A 192.0.2.2 ; IPv4 address for ns.example.com IN AAAA 2001:db8:10::2 ; IPv6 address for ns.example.comwww IN CNAME example.com. ; www.example.com is an alias for example.comwwwtest IN CNAME www ; wwwtest.example.com is another alias for www.example.commail IN A 192.0.2.3 ; IPv4 address for mail.example.commail2 IN A 192.0.2.4 ; IPv4 address for mail2.example.commail3 IN A 192.0.2.5 ; IPv4 address for mail3.example.com
Como mínimo, el archivo de zona debe especificar el registro Start of Authority (SOA) con el nombre del servidor de nombres maestro autoritativo para la zona y la dirección de correo electrónico de alguien responsable de la gestión del servidor de nombres (representado como un nombre de dominio, con un carácter de punto en lugar del símbolo @ habitual). Los parámetros del registro SOA también especifican una lista de parámetros de temporización y caducidad (número de serie, período de actualización del esclavo, tiempo de reintento del esclavo, tiempo de caducidad del esclavo y el tiempo máximo de almacenamiento en caché del registro). Algunos servidores de nombres, incluido BIND, también requieren al menos un registro NS adicional.
En el archivo de zona, los nombres de dominio que terminan con un carácter de punto (como «example.com.» en el ejemplo anterior) son totalmente calificados mientras que los que no terminan con un punto son relativos al origen actual (por lo que www en el ejemplo anterior se refiere a www.example.com).