Como vimos antes, cada línea primary en el archivo
named.boot
asocia un dominio con un archivo dentro del
directorio especificado por la línea primary. A estos archivos
los llamamos archivos de zonas, y a su 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. Por ejemplo, un registro para asociar un nombre de máquina con una dirección IP tiene el tipo A, y uno para asociar un nombre corto o alias a una máquina a la que ya se le asoció un IP es de tipo CNAME. En general, los registros o RRs tienen la forma siguiente:
[dominio] [ttl] [clase] tipo datos
Cada campo del registro se separa mediante espacios o tabuladores. Los
campos entre paréntesis cuadrados son opcionales, como se verá. Un
campo puede ocupar más de una línea siempre y cuando aparezca un
paréntesis antes del primer salto de línea y otro paréntesis cierre
después del último campo del registro en la última línea. Un ejemplo
típico de esto es el registro SOA, que veremos más adelante. Al igual
que en el archivo de arranque, el named.boot
, es posible
introducir comentarios en un archivo de zona mediante un punto y coma:
todo lo que aparece después de este signo es ignorado.
Este es el nombre del dominio (o de máquina, que para el caso es lo mismo), al cual se aplica el registro. Recordemos que sino termina en un punto se le considera relativo al origen del archivo. Este campo es opcional; si no aparece, el registro se aplica al RR anterior.
Del inglés time to live. Es posible asignarle a cada registro un tiempo de vida en segundos, que sirve para que cualquiera que utilice este registro descarte su información al término de este periodo.
Este campo es importante, porque si su valor es demasiado bajo, los clientes del servidor de nombres le harán solicitudes frecuentemente por el mismo dato, lo que afectará el rendimiento del sistema. Por el contrario, si este valor es muy alto es posible que los clientes no vean los cambios que puedan realizarse en la red (máquinas que cambian de IP, etc.). El valor típico de este campo es grande, especialmente si hablamos de redes de área local, donde la topología cambia lentamente.
Si este campo no parece en el registro, como es usual, el tiempo de vida es el que se menciona en un campo especial del registro SOA (minimum), al principio del archivo de zona. Aquellos registros cuya información sea susceptible de cambio frecuente deberían tener un ttl explícito.
Este campo tiene generalmente el valor IN. Si no aparece este campo en el registro, se asume el del registro anterior.
Este campo indica el tipo del registro. Los tipos más comunes son A, SOA, PTR y NS. Los tipos se describen más abajo.
El formato de estos datos esta relacionado con el campo anterior, el tipo.
Los tipos de registro más usados son los siguientes:
Este registro debe aparecer en cada archivo mencionado en una línea primary, e indica que los registros que siguen contienen información autoritativa pàra el dominio. SOA significa Start of authority. Este es un registro típico:
; ; Archivo /var/named/db.cfemex.com ; ; @ IN SOA master.cfemex.com. root.master.cfemex.com. ( 96112500 ; Serial 10800 ; Refresh 3 horas 3600 ; Retry 1 hora 3600000 ; Expire 1000 hora 86400 ; Minimum 24 horas ) IN NS master.cfemex.com. ; ;
Los datos asociados con un registro SOA son los siguientes:
Es el nombre canónico del servidor de nombres primario para este dominio, y generalmente se da como absoluto, es decir, con un punto al final.
Es el nombre de la persona responsable para este dominio. Es parecido a una dirección de correo electrónico normal, a excepción de que la arroba se remplaza con un punto. También termina con un punto.
Es un número que indica la versión del archivo de zona, y debe ser incrementado cada vez que el archivo se modifique. Es importante porque los servidores secundarios solicitan el registro SOA en ciertos intervalos (ver refresh, más abajo), para verificar el serial. SI éste ha cambiado, entonces transfieren el archivo completo para actualizarse.
Una práctica muy común es utilizar la fecha en el formato ddmmaa y agregarle dos dígitos más para los cambios que se hacen al archivo en el mismo día. De tal manera, un serial típico podría ser ``96112510'': el décimo cambio realizado al archivo en el día 25 de noviembre de 1996.
Es el intervalo, en segundos, para las revisiones que hacen los servidores secundarios del registro SOA, con el fin de verificar si la información del dominio ha cambiado. El valor típico es de una hora (3600).
Es el tiempo, en segundos, que un servidor secundario debe esperar para reintentar una conexión por refresh que ha fallado. El valor recomendado es de 10 minutos, o sea 600.
Si un servidor secundario no ha podido comunicarse con su servidor primario para verificar que no haya habido cambios a la zona (mediante su registro SOA), descartará la información que tiene después de este periodo dado en segundos. El valor típico es de 42 días, o sea 3600000.
Este es el número de segundos empleado en los registros del archivo que no especifican su campo ttl (time to live).
Este registro sirve para asociar un nombre de máquina con una
dirección IP. El único dato para este tipo de registro es la
dirección IP en su forma estándar: xxx.xxx.xxx.xxx
. Debe haber
sólo un registro A por cada dirección IP en el archivo, aunque es
posible asignarle a una máquina más de una dirección mediante varios
registros A. Por ejemplo, asignémos a pentium las siguientes
direcciones:
pentium IN A 159.16.16.148 IN A 159.16.16.150
Este registro sirve para asignarle un nombre alternativo o
alias a una máquina. Supongamos que nuestra máquina
pentium
cumple las funciones de servidor de web y de noticias de
nuestra red interna, cfemex.com
. Una manera de hacer esto
explícito a los usuarios de la red es usar los siguientes alias:
news IN CNAME pentium www IN CNAME pentium
De esta manera tenemos, aunque sólo en apariencia, dos máquinas
diferentes: news.cfemex.com
y www.cfemex.com
.
Mediante un registro NS es posible designar un servidor que deberá
responder para todas las peticiones que involucren un determinado
subdominio. Esto es importante porque permite delegar la asginación de
nombres y facilita el manejo de dominios complejos. El siguiente
ejemplo designa al servidor lapem1.lapem.cfemex.com
como
servidor de nombres para el área lapem
:
lapem IN NS lapem1.lapem
Designar un servidor de nombres, sin embargo, no basta. Necesitamos definir en alguna parte del archivo la dirección de este servidor, mediante un registro A, por supuesto. A este registro se le llama en inglés glue record.
Un registro PTR se utiliza para relacionar una dirección IP
con un nombre de máquina, exactamente al revés que un registro tipo
A. Estos registros aparecen en los archivos de zonas para la
resolución reversa, los que en named.boot
aparecen en una
línea primary con el dominio IN-ADDR.ARPA.
82.10 IN PTR redes.cfemex.com.
Nótese que en cada registro sólo aparece una fracción de la dirección IP: la dirección se completa porque, como dijimos más arriba, a cada nombre que no termina en un punto se le agrega el origen.
Los nombres de máquinas aparecen siempre en los registros PTR en su forma canónica, es decir, con el dominio completo. El punto es necesario porque de no aparecer se le agregaría erróneamente el origen.
Los registros MX sirven para anunciar a los programas de intercambio de correo (Sendmail, por ejemplo), una máquina que se encarga de administrar el correo de un determinado dominio. Un ejemplo típico es el siguiente:
@ IN MX 5 mailer
Esta línea declara a la máquina mailer
como administradora de
correo para el dominio origen. A diferencia de registros como el A o
el PTR, el registro MX utiliza un campo numérico adicional que sirve
para marcar la preferencia de la máquina. Un programa que
quiera enviar correo a este dominio va a tratar de establecer
contacto con todas las máquinas que tengan un registro MX asociado
hasta que lo logre, pero va a tratar primero con el que tenga el
número de preferencia más bajo.
Este es un archivo típico de zona, y corresponde a lv.cfemex.com
:
; ; Zona 'lv.cfemex.com' ; @ IN SOA sistlv11.lv.cfemex.com. root.sistlv11.lv.cfemex.com. ( 97012900 43200 3600 360000 360000 ) IN NS sistlv11.lv.cfemex.com. IN NS systlv17.lv.cfemex.com. IN NS master.cfemex.com. sistlv10 IN A 192.168.10.10 IN A 159.16.70.65 IN MX 5 sistlv10.lv.cfemex.com. sistlv3 IN MX 5 sistlv3.lv.cfemex.com. IN A 192.168.10.3 sistlv11 IN A 192.168.10.11 IN A 159.16.70.97 IN MX 2 sistlv11.lv.cfemex.com.
A continuación mostramos un archivo para la resolución inversa, es decir, de direcciones IP a nombres:
; ; Mapeo inverso de direcciones para 70.16.159.in-addr.arpa. ; @ IN SOA sistlv11.lv.cfemex.com. root.sistlv11.lv.cfemex.com. ( 96052400 43200 3600 360000 360000 ) IN NS sistlv11.lv.cfemex.com. IN NS systlv17.lv.cfemex.com. 101 IN PTR h2020-3.lv.cfemex.com. 115 IN PTR clvpr1.lv.cfemex.com. 96 IN PTR vaxlv-net. IN A 255.255.255.240 97 IN PTR sistlv11.lv.cfemex.com. 98 IN PTR vaxlv1.lv.cfemex.com. 146 IN PTR laser1in.lv.cfemex.com. 99 IN PTR vaxlv2.lv.cfemex.com.
0.0.127.in-addr.arpa
Este archivo sirve únicamente para convertir la dirección
127.0.0.1
en localhost
.
; ; Mapeo inverso de direcciones para el dominio 0.0.127.in-addr.arpa. ; @ IN SOA master.cfemex.com. root.master.cfemex.com. ( 97012900 43200 3600 360000 360000 ) IN NS master.cfemex.com. 1 IN PTR localhost.