Antes de nada: ¿Has leído todo lo anterior? Tienes que hacerlo.
Antes de comenzar realmente con esta sección, voy a dar un poco de teoría sobre cómo funciona DNS. Y lo deberías de leer porque es mejor para ti. Si no quieres, al menos deberías echar un vistazo rápido. Deja el repaso cuando sepas lo que debes incluir en tu fichero named.conf.
El DNS es un sistema jerárquico, un sistema con estructura de árbol. La raíz se escribe como `.' y se denomina `root' como es habitual para estructuras en árbol. 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. Como en un árbol, tiene raíz y ramas. Si tienes una base de informática puedes reconocer DNS como un árbol de búsqueda, y podrás buscar nodos. Los puntos son nodos, en los extremos están los nombres.
Cuando se busca una máquina, la pregunta procede recursivamente en la jerarquía comenzando desde la raíz. Si quieres localizar la dirección de prep.ai.mit.edu, tu servidor de nombres tiene que empezar preguntando en algún sitio. Comienza mirando e el cache. Si sabe la respuesta, por tenerla en el cache de antes, responderá de la misma forma que vimos en la última sección. Si lo desconoce mirará la respuesta más cercana que verifique el nombre pedido y utilizará el cache. En el peor de los casos que no se encuentre nada salvo la '.' (raíz) del nombre, se consultarán los servidores raíz. Eliminará partes del nombre comenzando por la izquierda, comprobando si sabe algo de ai.mit.edu., después mit.edu., después edu. y si no, lo que conoce de . es lo que tiene el fichero "hints". Entonces preguntará al servidor . sobre prep.ai.mit.edu. Este servidor . desconoce la respuesta, pero ayudará a tu servidor a encontrar el camino dando la referencia sobre donde buscar. Estas referencias, le dirigen al servidor de nombres que conoce la respuesta. Ilustramos eso ahora. +norec significa que dig está preguntando consultas no recursivas para que la obtengamos nosotros mismos. La otras opciones son para reducir lo que dig genera para no obtener muchas páginas:
6#6
Esto es una referencia. Nos devuelve una "Authority section" sólo, no "Answer section". Nuestro propio servidor de nombres nos envía a un servidor de nombres. Toma uno al azar.
7#7
Esto nos envía a los servidores de MIT.EDU de una vez. De nuevo toma uno al azar.
8#8
Esta vez obtenemos una "ANSWER SECTION", y una respuesta para nuestra pregunta. La "AUTHORITY SECTION" contiene información sobre a qué servidores hacer las preguntas sobre ai.mit.edu la próxima vez. Así les puede preguntar directamente la próxima vez que necesite algo de sobre los nombres de ai.mit.edu, es decir, cuando preguntamos por w.ww.mit.edu estaremos mucho mas cerca de obtener la respuesta.
Así, empezando en . encontramos los sucesivos servidores de nombres para cada nivel por referencia. Si has usado tu propio servidor DNS en lugar de usar todos esos servidores, tu named, por supuesto, guardará en el cache toda la información que encuentre mientras consulta para ti, y no tendrá que preguntar de nuevo durante cierto tiempo.
En la analogía con el árbol, cada ``.'' del mismo nombre es un punto de rama. Y cada parte entre ``.'' son los nombres de ramas individuales del árbol. Uno sube por el árbol tomando el nombre que queremos (prep.ai.mit.edu) preguntando a la raíz (.) o a cualquier servidor más arriba de la raíz hacia prep.ai.mit.edu cuya información tuviéramos en el cache. Una vez que llegamos a los límites del caché las resolución recursiva continúa preguntando a servidores, obteniendo referencias más lejanas del nombre.
Aunque se hable mucho menos, un dominio tan importante es in-addr.arpa. También se anida como los dominios `normales'. in-addr.arpa nos permite obtener el nombre de host cuando tenemos su dirección. Una cosa importante que tenemos que observar es que las direcciones IP se escriben en orden inverso en el dominio in-addr.arpa. Si tiene la dirección de una máquina: 192.186.203.77 named procede igual que para el ejemplo de prep.ai.mit.edu: encuentra servidores arpa.. Busca servidores in-addr.arpa., busca servidores 192.in-addr.arpa., busca servidores 186.192.in-addr.arpa., busca servidores203.186.192.in-addr.arpa.. Busca los registros que necesitamos para 77.203.186.192.in-addr.arpa. como haría para prep.ai.mit.edu. Ejemplo: Al no encontrar una entrada en el cache adecuada salvo `.', pregunta al servidor raíz, m.root-servers.net que te envía a otro servidor raíz. b.root-servers.net nos envia directamente a bitsy.mit.edu/. Se debería poder tomar ya desde allí.