Ahora vamos a definir nuestro propio dominio. Vamos a crear el dominio
linux.bogus y definir máquinas en él. Uso un nombre de dominio
totalmente falso para estar seguro de que no molestamos a nadie de fuera.
Una cosa más antes de empezar: No se permiten todos los caracteres en
nombres de máquina. Estamos restringidos a los caracteres del alfabeto inglés: a-z,
números 0-9 y el carácter '-' (guión). Manténte en estos caracteres. Las mayúsculas
y minúsculas son indistintas para el DNS, así pat.uio.no es idéntico a Pat.UiO.No.
Ya hemos comenzado esta parte con la siguiente línea en named.conf:
zone "0.0.127.in-addr.arpa" {
type master;
file "pz/127.0.0";
};
Por favor, observa la ausencia de `.' al final de los nombres de dominio
en este fichero. Esto dice que ahora vamos a definir la zona
0.0.127.in-addr.arpa, de la que somos servidor principal ("master") y que está
definida en un fichero llamado pz/127.0.0. Ya hemos configurado este fichero,
en el que podemos leer:
$TTL 3D
@ IN SOA ns.linux.bogus. hostmaster.linux.bogus. (
1 ; Serie
8H ; Refresco
2H ; Reintento
4W ; Expira
1D) ; Minimo TTL
NS ns.linux.bogus.
1 PTR localhost.
Por favor observa los `.' al final de los nombres de dominio completo
en contraste con el archivo named.conf anterior. A algunas
personas les gusta iniciar cada zona del archivo con una directiva
$ORIGIN, pero esto es superfluo. El origen (lugar de la
jerarquía DNS a donde pertenece) de un fichero de zona se especifica en la
columna dominio del archivo named.boot; en este caso es
0.0.127.in-addr.arpa.
Este ``fichero de zona'' contiene tres registros de recursos
(RRs): Un RR SOA, Un RR NS y un RR PTR.
SOA es una abreviatura de Start Of Authority. La
`@' es una notación especial que simboliza el origen, y como
la columna dominio para este archivo indica
0.0.127.in-addr.arpa. La primera línea realmente significa:
0.0.127.in-addr.arpa. IN SOA ...
NS es el RR Name Server (Servidor de Nombres). No hay '@' al
comienzo de esta línea; es implícita ya que la línea previa comenzaba con '@'.
Eso ahorra algo de tecleo. Así la línea NS se podría haber escrito
también como:
0.0.127.in-addr.arpa. IN NS ns.linux.bogus
Esto le indica
a DNS qué máquina es el servidor de nombres del dominio
0.0.127.in-addr.arpa, este es ns.linux.bogus. 'ns' es un nombre
habitual para servidores de nombres, pero como con los servidores
web que habitualmente se llaman www.loquesea el nombre puede ser
cualquiera.
Y finalmente el
registro PTR (Domain Name Pointer, Puntero de nombre de dominio)
le dice que el host con dirección 1 (igual a
1.0.0.127.IN-ADDR.ARPA, esto es, 127.0.0.1) es el
llamado localhost.
El registro SOA es el preámbulo de todos los archivos de zona y
debe haber uno exactamente en cada archivo de zona. El registro SOA
describe la zona, de dónde proviene
(una máquina llamada linux.bogus), quién es el responsable de su
contenido (hostmaster@linux.bogus), qué versión del
archivo de zona es (Numero de Serie, 1), y otras cosas que
tienen que ver con el caché y los servidores secundarios DNS. Para el
resto de los campos (Tasa de Refresco, Tasa de
Reintento, Caducidad para secundario y Tiempo de Validez
para Clientes) use los valores que aparecen aquí para mayor
seguridad. Antes de SOA viene una línea obligatoria, la línea $TTL 3D
Ponla en todos tus ficheros de zona.
Ahora reinicia tu named (la orden es ndc restart) y usa dig para examinar
tu trabajo. -x pregunta por resolución inversa:
$ dig -x 127.0.0.1
; <<>> DiG 8.2 <<>> -x
;; res options: init recurs defnam dnsrch
;; got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 0
;; QUERY SECTION:
;; 1.0.0.127.in-addr.arpa, type = ANY, class = IN
;; ANSWER SECTION:
1.0.0.127.in-addr.arpa. 1D IN PTR localhost.
;; AUTHORITY SECTION:
0.0.127.in-addr.arpa. 1D IN NS ns.penguin.bv.
;; Total query time: 5 msec
;; FROM: lookfar to SERVER: default -- 127.0.0.1
;; WHEN: Sat Dec 16 01:13:48 2000
;; MSG SIZE sent: 40 rcvd: 110
Así gestiona pra obtener localhost from 127.0.0.1, bien. Ahora para
nuestro tarea principal, el dominio linux.bogus, inserta una nueva sección
'zone' en named.conf:
zone "linux.bogus" {
notify no;
type master;
file "pz/linux.bogus";
};
Observa de nuevo la ausencia de `.' final en el nombre de dominio
en el fichero named.conf.
En el fichero de zona linux.bogus pondremos datos totalmente
ficticios
N del T: :
Por si no lo has notado todavía, bogus en inglés significa precisamente falso.
;
; Fichero de zona para linux.bogus
;
; El fichero de zona completo
;
$TTL 3D
@ IN SOA ns.linux.bogus. hostmaster.linux.bogus. (
199802151 ; serie, fecha de hoy + serie de hoy #
8H ; refresco, segundos
2H ; reintento, segundos
4W ; expira, segundos
1D ) ; mínimo, segundos
;
NS ns ; Dirección Inet del servidor de nombres
MX 10 mail.linux.bogus ; Relay de correo primario
MX 20 mail.friend.bogus. ; Relay de correo secundario
;
localhost A 127.0.0.1
ns A 192.168.196.2
mail A 192.168.196.4
Deben de observarse dos cosas sobre los registros SOA.
ns.linux.bogus debe ser una máquina actual con un registro
A. No es legal tener un registro CNAME para la máquina
mencionada en el registro SOA. Su nombre no necesita ser
ns, podría ser cualquier nombre legal de máquina. A continuación,
en hostmaster.linux.bogus deberá aparecer algo como
hostmaster@linux.bogus; esto sería un alias de email, o
una cuenta de correo, donde la(s) persona(s) que realizan el mantenimiento
de DNS deberían leer con frecuencia el correo. Cualquier email respecto
del dominio será mandado a la dirección aquí indicada. El nombre no tiene
por que ser hostmaster, puede ser cualquier dirección email
legal, pero la dirección email hostmaster funcionará también.
Hay un nuevo tipo de RR en este archivo, el MX, o
Mail eXchanger. Este indica el sistema de correo a donde mandar
el correo dirigido a alguien@linux.bogus, pudiendo ser
también mail.linux.bogus o mail.friend.bogus. El número
que precede a cada nombre de máquina es la prioridad del RR MX.
El RR con el número más bajo (10) es aquel al que el correo será
enviado primero. Si este falla, puede ser mandado a otro con un número
más alto, que será gestor secundario de correo, como
mail.friend.bogus que tiene una prioridad 20 aquí.
Reinicia named ejecutando ndc restart. Examina los
resultados con dig:
$ dig any linux.bogus +pfmin
;; res options: init recurs defnam dnsrch
;; got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 23499
;; QUERY: 1, ANSWER: 4, AUTHORITY: 1, ADDITIONAL: 1
;; QUERY SECTION:
;; linux.bogus, type = ANY, class = IN
;; ANSWER SECTION:
linux.bogus. 3D IN MX 10 mail.linux.bogus.linux.bogus.
linux.bogus. 3D IN MX 20 mail.friend.bogus.
linux.bogus. 3D IN NS ns.linux.bogus.
linux.bogus. 3D IN SOA ns.linux.bogus. hostmaster.linux.bogus. (
199802151 ; serial
8H ; refresh
2H ; retry
4W ; expiry
1D ) ; minimum
Con un examen cuidadoso puede descubrir fallos. La línea
linux.bogus. 3D IN MX 10 mail.linux.bogus.linux.bogus.
está completamente equivocada. Debería ser
linux.bogus. 3D IN MX 10 mail.linux.bogus.
Deliberadamente cometí un error para que pudieras aprender de él. :-) Mirando en el fichero de zona encontramos la línea:
MX 10 mail.linux.bogus ; Relay de correo primario
Falta un punto. O tiene demasiados 'linux.bogus'. Si una nombre de máquina
no termina en punto, en un fichero de zona, se le añade el origen al final
ocasionado el doble linux.bogus.linux.bogus. Entonces, o bien
MX 10 mail.linux.bogus. ; Relay de correo primario
o
MX 10 mail ; Primary Mail Exchanger
es correcto. Prefiero la última forma, hay que teclear menos.
Hay algunos expertos den BIND que no están de acuerdo con
esto y otros que sí. En un fichero de zona el dominio
debería de escribirse bien finalizado con un
`.' o no debería incluirse, en cuyo caso toma como valor
predeterminado el origen.
Tengo que insistir que en el fichero named.conf no se tiene que
poner `.'s tras los nombres de dominio. No tienes ni idea de cuantas veces
un `.' por ponerlo o por no ponerlo ha estropeado todo y ha
vuelto loca a la gente.
Y habiendo incluido mi punto,aquí está el nuevo fichero de zona, con alguna información extra también:
;
; Fichero de zona para linux.bogus
;
; Fichero de zona completo
;
$TTL 3D
@ IN SOA ns.linux.bogus. hostmaster.linux.bogus. (
199802151 ; seriel, fecho de hoy + serie de hoy #
8H ; refresco, segundos
2H ; reintento, segundos
4W ; expira, segundos
1D ) ; mínimo, segundos
;
TXT "Linux.Bogus, sus consutas DNS"
NS ns ; Inet Address of name server
NS ns.friend.bogus.
MX 10 mail ; Relay primario de correo
MX 20 mail.friend.bogus. ; Relay secundario de correo
localhost A 127.0.0.1
gw A 192.168.196.1
HINFO "Cisco" "IOS"
TXT "El router"
ns A 192.168.196.2
MX 10 mail
MX 20 mail.friend.bogus.
HINFO "Pentium" "Linux 2.0"
www CNAME ns
donald A 192.168.196.3
MX 10 mail
MX 20 mail.friend.bogus.
HINFO "i486" "Linux 2.0"
TXT "DEK"
mail A 192.168.196.4
MX 10 mail
MX 20 mail.friend.bogus.
HINFO "386sx" "Linux 1.2"
ftp A 192.168.196.5
MX 10 mail
MX 20 mail.friend.bogus.
HINFO "P6" "Linux 2.1.86"
Hay varios registros nuevos aquí: HINFO (Host
INFOrmation), tiene dos partes, es una buena costumbre poner comillas
a cada uno. La primera parte es el hardware o CPU de la máquina, y la
segunda parte corresponde al software o Sistema Operativo de la misma.
La máquina llamada ns tiene una CPU Pentium con Linux 2.0.
El registro TXT es
un texto en formato libre que puede usar para cualquier cosa que le
interese. CNAME (Canonical NAME) es una forma de dar a
cada máquina varios nombres. Por tanto www es un
alias para ns.
El uso de registros CNAME es controvertido. Pero es más seguro
seguir la norma de que los registros
MX, CNAME y SOA nunca deben
hacer referencia a un registro CNAME, sólo deben referirse a
registros A, en consecuencia es desaconsejable tener
foobar CNAME www ; NO!
lo correcto sería tener
foobar CNAME ns ; Yes!
También es mejor suponer que un CNAME no es un nombre de
máquina legal para direcciones de correo:
webmaster@www.linux.bogus es una dirección email ilegal
dada en la configuración anterior. Encontrará muy pocos administradores de
correo de Ahí Afuera que recomienden esta regla, incluso si te
funciona. La forma de evitar esto es usar un registro A (y
quizá algunos otros también, como un registro MX) en su lugar:
www A 192.168.196.2
Algunos gurús de named recomiendan no usar CNAME.
Por tanto considere el no utilizarlo seriamente. Pero la discusión de por qué
o no está más allá de los objetivos de este documento.
Pero como puede ver, en este COMO y en muchos sitios no siguen esta regla.
Cargue la nueva base de datos ejecutando ndc reload, esto provoca
la lectura de sus archivos de nuevo.
$ dig linux.bogus axfr
; <<>> DiG 8.2 <<>> linux.bogus axfr
$ORIGIN linux.bogus.
@ 3D IN SOA ns hostmaster (
199802151 ; serie
8H ; refresco
2H ; reintento
4W ; expira
1D ) ; minimo
3D IN NS ns
3D IN NS ns.friend.bogus.
3D IN MX 10 mail
3D IN MX 20 mail.friend.bogus.
3D IN TXT "Linux.Bogus, sus consutas DNS"
gw 3D IN TXT "The router"
3D IN HINFO "Cisco" "IOS"
3D IN A 192.168.196.1
localhost 3D IN A 127.0.0.1
mail 3D IN HINFO "386sx" "Linux 1.2"
3D IN MX 10 mail
3D IN MX 20 mail.friend.bogus.
3D IN A 192.168.196.4
www 3D IN CNAME ns
donald 3D IN TXT "DEK"
3D IN HINFO "i486" "Linux 2.0"
3D IN MX 10 mail
3D IN MX 20 mail.friend.bogus.
3D IN A 192.168.196.3
ns 3D IN HINFO "Pentium" "Linux 2.0"
3D IN MX 10 mail
3D IN MX 20 mail.friend.bogus.
3D IN A 192.168.196.2
ftp 3D IN HINFO "P6" "Linux 2.1.86"
3D IN MX 10 mail
3D IN MX 20 mail.friend.bogus.
3D IN A 192.168.196.5
@ 3D IN SOA ns hostmaster (
199802151 ; serial
8H ; refresh
2H ; retry
4W ; expiry
1D ) ; minimum
;; Received 29 answers (29 records).
;; FROM: lookfar to SERVER: 127.0.0.1
;; WHEN: Sat Dec 16 01:35:05 2000
Está bien. Como puedes ver, se parece un montón al propio fichero de zona
Verifiquemos lo que dice sólo para www:
$ dig www.linux.bogus +pfmin
;; res options: init recurs defnam dnsrch
;; got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27345
;; QUERY: 1, ANSWER: 2, AUTHORITY: 2, ADDITIONAL: 1
;; QUERY SECTION:
;; www.linux.bogus, type = A, class = IN
;; ANSWER SECTION:
www.linux.bogus. 3D IN CNAME ns.linux.bogus.
ns.linux.bogus. 3D IN A 192.168.196.2
En otras palabras, el nombre real de www.linux.bogus es
ns.linux.bogus, y te da parte de la información que tiene de ns también,
suficiente si fueras un programa.
Ahora estamos a mitad de camino.