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 va a leer porque será 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, los extremos están en 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 no lo conoce
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.
$ dig +norec +noH +noques +nostats +nocmd prep.ai.mit.edu.
;; res options: init defnam dnsrch
;; got answer:
; flags: qr ra; QUERY: 1, ANSWER: 0, AUTHORITY: 13, ADDITIONAL: 13
;; AUTHORITY SECTION:
. 5d23h48m47s IN NS I.ROOT-SERVERS.NET.
. 5d23h48m47s IN NS E.ROOT-SERVERS.NET.
. 5d23h48m47s IN NS D.ROOT-SERVERS.NET.
. 5d23h48m47s IN NS A.ROOT-SERVERS.NET.
. 5d23h48m47s IN NS H.ROOT-SERVERS.NET.
. 5d23h48m47s IN NS C.ROOT-SERVERS.NET.
. 5d23h48m47s IN NS G.ROOT-SERVERS.NET.
. 5d23h48m47s IN NS F.ROOT-SERVERS.NET.
. 5d23h48m47s IN NS B.ROOT-SERVERS.NET.
. 5d23h48m47s IN NS J.ROOT-SERVERS.NET.
. 5d23h48m47s IN NS K.ROOT-SERVERS.NET.
. 5d23h48m47s IN NS L.ROOT-SERVERS.NET.
. 5d23h48m47s IN NS M.ROOT-SERVERS.NET.
;; ADDITIONAL SECTION:
I.ROOT-SERVERS.NET. 6d23h48m47s IN A 192.36.148.17
E.ROOT-SERVERS.NET. 6d23h48m47s IN A 192.203.230.10
D.ROOT-SERVERS.NET. 6d23h48m47s IN A 128.8.10.90
A.ROOT-SERVERS.NET. 6d23h48m47s IN A 198.41.0.4
H.ROOT-SERVERS.NET. 6d23h48m47s IN A 128.63.2.53
C.ROOT-SERVERS.NET. 6d23h48m47s IN A 192.33.4.12
G.ROOT-SERVERS.NET. 6d23h48m47s IN A 192.112.36.4
F.ROOT-SERVERS.NET. 6d23h48m47s IN A 192.5.5.241
B.ROOT-SERVERS.NET. 6d23h48m47s IN A 128.9.0.107
J.ROOT-SERVERS.NET. 6d23h48m47s IN A 198.41.0.10
K.ROOT-SERVERS.NET. 6d23h48m47s IN A 193.0.14.129
L.ROOT-SERVERS.NET. 6d23h48m47s IN A 198.32.64.12
M.ROOT-SERVERS.NET. 6d23h48m47s IN A 202.12.27.33
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.
$ dig +norec +noH +noques +nostats +nocmd prep.ai.mit.edu. @H.ROOT-SERVERS.NET.
; (1 server found)
;; res options: init defnam dnsrch
;; got answer:
; flags: qr; QUERY: 1, ANSWER: 0, AUTHORITY: 3, ADDITIONAL: 3
;; AUTHORITY SECTION:
MIT.EDU. 2D IN NS BITSY.MIT.EDU.
MIT.EDU. 2D IN NS STRAWB.MIT.EDU.
MIT.EDU. 2D IN NS W20NS.MIT.EDU.
;; ADDITIONAL SECTION:
BITSY.MIT.EDU. 2D IN A 18.72.0.3
STRAWB.MIT.EDU. 2D IN A 18.71.0.151
W20NS.MIT.EDU. 2D IN A 18.70.0.160
Esto nos envía a los servidores de MIT.EDU de una vez. De nuevo toma uno al azar.
$ dig +norec +noH +noques +nostats +nocmd prep.ai.mit.edu. @bitsy.mit.edu
; (1 server found)
;; res options: init defnam dnsrch
;; got answer:
; flags: qr ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 4
;; ANSWER SECTION:
prep.ai.mit.edu. 3h50m7s IN A 198.186.203.18
;; AUTHORITY SECTION:
AI.MIT.EDU. 6H IN NS FEDEX.AI.MIT.EDU.
AI.MIT.EDU. 6H IN NS LIFE.AI.MIT.EDU.
AI.MIT.EDU. 6H IN NS ALPHA-BITS.AI.MIT.EDU.
AI.MIT.EDU. 6H IN NS BEET-CHEX.AI.MIT.EDU.
;; ADDITIONAL SECTION:
FEDEX.AI.MIT.EDU. 6H IN A 192.148.252.43
LIFE.AI.MIT.EDU. 6H IN A 128.52.32.80
ALPHA-BITS.AI.MIT.EDU. 6H IN A 128.52.32.5
BEET-CHEX.AI.MIT.EDU. 6H IN A 128.52.32.22
También hay un bonito truco para máquinas con módem usando forwarders, se describe en la sección PUF.
Reinicia tu servidor de nombres y compruébalo con dig. Debería funcionar bien.