Como configurar su propio dominio.
Antes de comenzar realmente con esta sección, voy a dar un poco de teoría
sobre cómo funciona DNS.  Y lo va a leer porque será mejor para Vd.  Si no
quiere, al menos debería echar un vistazo rápido. Deje el repaso cuando
sepa lo que debe incluir en su archivo named.boot. 
El DNS es un sistema jerárquico. La raíz se escribe como `.' y se
denomina `root'. Debajo hay cierto número de Dominios de Nivel
Superior (Top Level Domains, TLDs), los más conocidos son
ORG, COM, EDU y NET, pero hay muchos más. 
Cuando se busca una máquina, la pregunta procede recursivamente en la
jerarquía comenzando desde arriba. Si quiere localizar la dirección de
prep.ai.mit.edu, su servidor de nombres ha de encontrar primero
un servidor de nombres que sirva a edu. Pregunta al servidor
. (ya conoce los servidores ., es para lo que se utiliza el
archivo root.cache), y el servidor . proporcionará una lista
de servidores edu: 
     $ nslookup
     Default Server:  localhost
     Address:  127.0.0.1
Comienza preguntando a un servidor raíz.
     > server c.root-servers.net.
     Default Server:  c.root-servers.net
     Address:  192.33.4.12
Pone el tipo de petición (Query) a NS (Name Server
records). 
> set q=ns 
Pregunta por edu.
> edu.
El punto (".") final aquí es significativo, indica al servidor que le
pedimos un edu que está justo debajo de ".", y esto reduce la
búsqueda un poco.  
     edu     nameserver = A.ROOT-SERVERS.NET
     edu     nameserver = H.ROOT-SERVERS.NET
     edu     nameserver = B.ROOT-SERVERS.NET
     edu     nameserver = C.ROOT-SERVERS.NET
     edu     nameserver = D.ROOT-SERVERS.NET
     edu     nameserver = E.ROOT-SERVERS.NET
     edu     nameserver = I.ROOT-SERVERS.NET
     edu     nameserver = F.ROOT-SERVERS.NET
     edu     nameserver = G.ROOT-SERVERS.NET
     A.ROOT-SERVERS.NET      internet address = 198.41.0.4
     H.ROOT-SERVERS.NET      internet address = 128.63.2.53
     B.ROOT-SERVERS.NET      internet address = 128.9.0.107
     C.ROOT-SERVERS.NET      internet address = 192.33.4.12
     D.ROOT-SERVERS.NET      internet address = 128.8.10.90
     E.ROOT-SERVERS.NET      internet address = 192.203.230.10
     I.ROOT-SERVERS.NET      internet address = 192.36.148.17
     F.ROOT-SERVERS.NET      internet address = 192.5.5.241
     G.ROOT-SERVERS.NET      internet address = 192.112.36.4
Esto nos dice que *.root-servers.net sirve a edu., y así
podemos seguir preguntando a C. Ahora queremos saber quién sirve el
siguiente nivel del nombre de dominio: mit.edu. 
     > mit.edu.
     Server:  c.root-servers.net
     Address:  192.33.4.12
     Non-authoritative answer:
     mit.edu nameserver = STRAWB.mit.edu
     mit.edu nameserver = W20NS.mit.edu
     mit.edu nameserver = BITSY.mit.edu
     Authoritative answers can be found from:
     STRAWB.mit.edu  internet address = 18.71.0.151
     W20NS.mit.edu   internet address = 18.70.0.160
     BITSY.mit.edu   internet address = 18.72.0.3
steawb, w20ns y bitsy sirven a mit, selecciona uno 
y pregunta por ai.mit.edu:
     > server W20NS.mit.edu.
Los nombres de máquina no son sensibles a mayúsculas/minúsculas, pero como yo uso el ratón para cortar y pegar, obtengo una copia tal y como aparece en la pantalla.
     Server:  W20NS.mit.edu
     Address:  18.70.0.160
     > ai.mit.edu.
     Server:  W20NS.mit.edu
     Address:  18.70.0.160
     Non-authoritative answer:
     ai.mit.edu      nameserver = WHEATIES.AI.MIT.EDU
     ai.mit.edu      nameserver = ALPHA-BITS.AI.MIT.EDU
     ai.mit.edu      nameserver = GRAPE-NUTS.AI.MIT.EDU
     ai.mit.edu      nameserver = TRIX.AI.MIT.EDU
     ai.mit.edu      nameserver = MUESLI.AI.MIT.EDU
     Authoritative answers can be found from:
     AI.MIT.EDU      nameserver = WHEATIES.AI.MIT.EDU
     AI.MIT.EDU      nameserver = ALPHA-BITS.AI.MIT.EDU
     AI.MIT.EDU      nameserver = GRAPE-NUTS.AI.MIT.EDU
     AI.MIT.EDU      nameserver = TRIX.AI.MIT.EDU
     AI.MIT.EDU      nameserver = MUESLI.AI.MIT.EDU
     WHEATIES.AI.MIT.EDU     internet address = 128.52.32.13
     WHEATIES.AI.MIT.EDU     internet address = 128.52.35.13
     ALPHA-BITS.AI.MIT.EDU   internet address = 128.52.32.5
     ALPHA-BITS.AI.MIT.EDU   internet address = 128.52.37.5
     GRAPE-NUTS.AI.MIT.EDU   internet address = 128.52.32.4
     GRAPE-NUTS.AI.MIT.EDU   internet address = 128.52.36.4
     TRIX.AI.MIT.EDU internet address = 128.52.32.6
     TRIX.AI.MIT.EDU internet address = 128.52.38.6
     MUESLI.AI.MIT.EDU       internet address = 128.52.32.7
     MUESLI.AI.MIT.EDU       internet address = 128.52.39.7
Entonces weaties.ai.mit.edu es un servidor de nombres para
ai.mit.edu: 
     > server WHEATIES.AI.MIT.EDU.
     Default Server:  WHEATIES.AI.MIT.EDU
     Addresses:  128.52.32.13, 128.52.35.13
Ahora cambia el tipo de solicitud; ha encontrado el servidor de nombres y
va a preguntar todo lo que queremos saber sobre prep.ai.mit.edu.
     > set q=any
     > prep.ai.mit.edu.
     Server:  WHEATIES.AI.MIT.EDU
     Addresses:  128.52.32.13, 128.52.35.13
     prep.ai.mit.edu CPU = dec/decstation-5000.25    OS = unix
     prep.ai.mit.edu
             inet address = 18.159.0.42, protocol = tcp
              #21 #23 #25 #79
     prep.ai.mit.edu preference = 1, mail exchanger = life.ai.mit.edu
     prep.ai.mit.edu internet address = 18.159.0.42
     ai.mit.edu      nameserver = alpha-bits.ai.mit.edu
     ai.mit.edu      nameserver = wheaties.ai.mit.edu
     ai.mit.edu      nameserver = grape-nuts.ai.mit.edu
     ai.mit.edu      nameserver = mini-wheats.ai.mit.edu
     ai.mit.edu      nameserver = trix.ai.mit.edu
     ai.mit.edu      nameserver = muesli.ai.mit.edu
     ai.mit.edu      nameserver = count-chocula.ai.mit.edu
     ai.mit.edu      nameserver = life.ai.mit.edu
     ai.mit.edu      nameserver = mintaka.lcs.mit.edu
     life.ai.mit.edu internet address = 128.52.32.80
     alpha-bits.ai.mit.edu   internet address = 128.52.32.5
     wheaties.ai.mit.edu     internet address = 128.52.35.13
     wheaties.ai.mit.edu     internet address = 128.52.32.13
     grape-nuts.ai.mit.edu   internet address = 128.52.36.4
     grape-nuts.ai.mit.edu   internet address = 128.52.32.4
     mini-wheats.ai.mit.edu  internet address = 128.52.32.11
     mini-wheats.ai.mit.edu  internet address = 128.52.54.11
     mintaka.lcs.mit.edu     internet address = 18.26.0.36
De esta forma comenzando en . ha encontrado los sucesivos servidores
de nombre para el siguiente nivel en el nombre de dominio. Si ha usado su
propio servidor DNS en lugar de usar todos esos otros servidores, su
named, desde luego, habrá almacenado en el caché toda la
información que haya encontrado mientras profundizaba en la búsqueda, y en
consecuencia no tendrá que preguntar de nuevo durante un tiempo. 
Se habla mucho menos sobre él, pero un dominio importante es
in-addr.arpa. También está anidado como los dominios
'normales'. in-addr.arpa nos permite determinar el
nombre de la máquina cuando conocemos su dirección IP. Una cosa importante
aquí es observar que que las direcciones IP están escritas en orden
inverso en el dominio in-addr.arpa. Si tiene la dirección de
máquina 192.128.52.43, named procede como para el ejemplo de
prep.ai.mit.edu: Busca los servidores arpa..  Busca los
servidores in-addr.arpa., los servidores
192.in-addr.arpa., los servidores 128.192.in-addr.arpa. , y
los servidores 52.128.192.in-addr.arpa. y finalmente, los registros
necesarios para 43.52.128.192.in-addr.arpa. ¿Inteligente? (Diga
`sí'). La inversión de números puede ser confusa los 2 primeros años. 
He contado una mentira. DNS no funciona como he dicho de forma literal. Pero es bastante parecido.
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.
Ya hemos comenzado esta parte con la siguiente línea en
named.boot:
primary         0.0.127.in-addr.arpa            pz/127.0.0
Por favor tome nota de la ausencia de `.' al final de los nombres de
dominio en este archivo. La primera línea nombra al archivo
pz/127.0.0 como definición de 0.0.127.in-addr.arpa. Ya hemos
configurado este archivo, en él podremos leer: 
@               IN      SOA     ns.linux.bogus. hostmaster.linux.bogus. (
                                1       ; Numero de Serie
                                28800   ; Tasa de Refresco
                                7200    ; Tasa de Reintento
                                604800  ; Caducidad para secundario
                                86400)  ; Tiempo de Validez para Clientes
                        NS      ns.linux.bogus.
1                       PTR     localhost.
Por favor observe los `.' al final de los nombres de dominio completo
en contraste con el archivo named.boot 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), e indica
a DNS qué máquina es el servidor de nombres del dominio. Y finalmente el
registro PTR tiene valor 1 (igual a
1.0.0.127.IN-ADDR.ARPA, esto es, 127.0.0.1) que es el
localhost de named.
El registro SOA es el preámbulo de todos los archivos de zona y
debe haber uno exactamente en cada archivo de zona, como primer registro
de todos. 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. 
El registro NS nos indica quién efectúa el servicio DNS para
0.0.127.in-addr.arpa, que es ns.linux.bogus. El registro
PTR nos dice que 1.0.0.127.in-addr.arpa (aka
127.0.0.1) es conocido como localhost.
Ahora reiniciamos named (el comando es ndc restart) y
usamos nslookup para examinar lo que ha hecho: 
     $ nslookup
     Default Server:  localhost
     Address:  127.0.0.1
     > 127.0.0.1
     Server:  localhost
     Address:  127.0.0.1
     Name:    localhost
     Address:  127.0.0.1
así obtiene localhost de 127.0.0.1, bien. Ahora para
nuestra tarea principal, el dominio linux.bogus, inserte una
nueva línea, primary, en named.boot: 
primary               linux.bogus                     pz/linux.bogus
Observe que continúa la ausencia de "." final en el nombre de dominio
del archivo named.boot. 
En el archivo de zona de linux.bogus pondremos algunos datos
totalmente falsos
 Por si no lo ha notado todavía,
bogus en inglés significa precisamente falso.
;
; Fichero de zona para linux.bogus
;
; Minimo indspensable para tener funcionando un dominio
;
@       IN      SOA     ns.linux.bogus. hostmaster.linux.bogus. (
                        199511301       ; Numero de serie, fecha de hoy + n. de serie de hoy
                        28800           ; Tasa de Refresco, en segundos
                        7200            ; Tasa de Reintento, en segundos
                        3600000         ; Caducidad para secundario, en segundos
                        86400 )         ; Tiempo de Validez para Clientes, en segundos
                NS      ns.linux.bogus.
                NS      ns.friend.bogus.
                MX      10 mail.linux.bogus   ; Intercambiador de Correo Primario
                MX      20 mail.friend.bogus. ; Intercambiador de Correo Secundario
localhost       A       127.0.0.1
ns              A       127.0.0.2
mail            A       127.0.0.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á bien. 
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í.
Reinicie named ejecutando ndc restart.  Examine los
resultados con nslookup: 
     $ nslookup
     > set q=any
     > linux.bogus
     Server:  localhost
     Address:  127.0.0.1
     linux.bogus
             origin = linux.bogus
             mail addr = hostmaster.linux.bogus
             serial = 199511301
             refresh = 28800 (8 hours)
             retry   = 7200 (2 hours)
             expire  = 604800 (7 days)
             minimum ttl = 86400 (1 day)
     linux.bogus     nameserver = ns.linux.bogus
     linux.bogus     nameserver = ns.friend.bogus
     linux.bogus     preference = 10, mail exchanger = mail.linux.bogus.linux.bogus
     linux.bogus     preference = 20, mail exchanger = mail.friend.bogus
     linux.bogus     nameserver = ns.linux.bogus
     linux.bogus     nameserver = ns.friend.bogus
     ns.linux.bogus  internet address = 127.0.0.2
     mail.linux.bogus        internet address = 127.0.0.4
Con un examen cuidadoso podrá descubrir un error. La línea
       linux.bogus     preference = 10, mail exchanger = mail.linux.bogus.linux.bogus
está equivocada. Debería ser
       linux.bogus     preference = 10, mail exchanger = mail.linux.bogus
Cometí el error de forma deliberada para que aprenda de él :-)
Mirando en el archivo de zona podemos ver que la línea
     @               MX      10 mail.linux.bogus     ; Intercambiador de Correo Primario
no tiene punto. O tiene demasiados linux.bogus.  Si un nombre de
máquina no termina en punto en un archivo de zona, el origen es añadido a
su final. Así, 
@               MX      10 mail.linux.bogus.    ; Intercambiador de Correo Primario
o
@               MX      10 mail                 ; Primary Mail Exchanger
serán correctos. Yo prefiero la última forma, hay que escribir menos. En
un archivo de zona el dominio debería ser escrito y terminado con un
punto, o no debe ser incluido, en cuyo caso se referirá al origen por
defecto.  Debo hacer hincapié que en el archivo named.boot no
debería haber puntos después de los nombres de dominio. No tiene ni idea
de cuantas veces un '.' por estar o por no estar ha hecho fallar toda una
configuración y ha confundido horrorosamente a la gente...
Una vez hecha esta puntualización, he aquí el nuevo archivo de zona, con algo de información extra también:
;
; Archivo de zona para  linux.bogus
;
; minimo indispensable para hacer funcionar un dominio
;
@       IN      SOA     ns.linux.bogus. hostmaster.linux.bogus. (
                        199511301       ; Numero de Serie, fecha de hoy + n. de serie de hoy 
                        28800           ; Tasa de Refresco, en segundos
                        7200            ; Tasa de Reintento, en segundos
                        604800          ; Caducidad para secundario, en segundos
                        86400 )         ; Validez para Clientes, en segundos
                NS      ns              ; Direccion de Internet del servidor de nombres
                NS      ns.friend.bogus.
                MX      10 mail         ; Intercambiador de Correo Primario
                MX      20 mail.friend.bogus. ; Intercambiador de Correo Secundario
localhost       A       127.0.0.1
ns              A       127.0.0.2
mail            A       127.0.0.4
;
; Extras
;
@               TXT     "Linux.Bogus, your DNS consultants"
ns              MX      10 mail
                MX      20 mail.friend.bogus.
                HINFO   "Pentium" "Linux 1.2"
                TXT     "RMS"
richard         CNAME   ns
www             CNAME   ns
donald          A       127.0.0.3
                MX      10 mail
                MX      20 mail.friend.bogus.
                HINFO   "i486"  "Linux 1.2"
                TXT     "DEK"
mail            MX      10 mail
                MX      20 mail.friend.bogus.
                HINFO   "386sx" "Linux 1.0.9"
ftp             A       127.0.0.5
                MX      10 mail
                MX      20 mail.friend.bogus.
                HINFO   "P6" "Linux 1.3.59"
Puede que quiera desplazar los tres primeros registros tipo A
(localhost, ns y mail) junto con los otros registros de su mismo
tipo (donald, mail, y ftp), en vez de colocarlos separados
al principio como aquí. 
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. 
ns tiene una CPU Pentium con Linux 1.2. 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 richard y www son
alias para ns.  Es importante observar que los registros
A, MX, CNAME y SOA nunca deben
hacer referencia al registro CNAME, sólo pueden referirse a
registros A.
fulanito  CNAME   richard                 ; ¡¡¡NO!!!
siendo correcto tener
fulanito  CNAME   ns                      ; ¡¡¡SI!!!
También es importante observar que 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 a Vd. le
funciona.  La forma de evitar esto es usar un registro A (y
quizás algunos otros también, como un registro MX) en su lugar: 
www     A       127.0.0.2
Paul Vixie, el principal gurú de named recomienda no usar CNAME.
Por tanto considere el no utilizarlo seriamente. 
Cargue la nueva base de datos ejecutando ndc reload, esto provoca
la lectura de sus archivos de nuevo.
     $ nslookup
     Default Server:  localhost
     Address:  127.0.0.1
     > ls -d linux.bogus
Esto haría que todos los registros fuesen listados.
     [localhost]
      linux.bogus.       SOA   ns.linux.bogus hostmaster.linux.bogus. (199511301 28800 7200 604800 86400)
      linux.bogus.       NS    ns.linux.bogus
      linux.bogus.       NS    ns.friend.bogus
      linux.bogus.       MX    10   mail.linux.bogus
      linux.bogus.       MX    20   mail.friend.bogus
      linux.bogus.       TXT   "Linux.Bogus, your DNS consultants"
      localhost          A     127.0.0.1
      mail               A     127.0.0.4
      mail               MX    10   mail.linux.bogus
      mail               MX    20   mail.friend.bogus
      mail               HINFO 386sx       Linux 1.0.9
      donald             A     127.0.0.3
      donald             MX    10   mail.linux.bogus
      donald             MX    20   mail.friend.bogus
      donald             HINFO i486        Linux 1.2
      donald             TXT   "DEK"
      www                CNAME ns.linux.bogus
      richard            CNAME ns.linux.bogus
      ftp                A     127.0.0.5
      ftp                MX    10   mail.linux.bogus
      ftp                MX    20   mail.friend.bogus
      ftp                HINFO P6          Linux 1.3.59
      ns                 A     127.0.0.2
      ns                 MX    10   mail.linux.bogus
      ns                 MX    20   mail.friend.bogus
      ns                 HINFO Pentium     Linux 1.2
      ns                 TXT   "RMS"
      linux.bogus.       SOA   ns.linux.bogus hostmaster.linux.bogus. (199511301 28800 7200 604800 86400)
Esto está bien. Comprobemos qué dice para www sólo:
     > set q=any
     > www.linux.bogus.
     Server:  localhost
     Address:  127.0.0.1
     www.linux.bogus canonical name = ns.linux.bogus
...En otras palabras, el nombre real de 
www.linux.bogus es ns.linux.bogus
     linux.bogus     nameserver = ns.linux.bogus
     linux.bogus     nameserver = ns.friend.bogus
     ns.linux.bogus  internet address = 127.0.0.2
y ns.linux.bogus tiene la dirección 127.0.0.2. Parece
correcto también.
Desde luego, este dominio es falso, y como tal son todas sus direcciones, y quizás, desafortunadamente sea un poco confuso. Para un ejemplo real de dominio vea la siguiente sección.