sábado, 18 de agosto de 2007

DNS


El DNS ( Domain Name Service) es un sistema de nombres que permite traducir de nombre de dominio a dirección IP y vice-versa. Aunque Internet sólo funciona en base a direcciones IP, el DNS permite que los humanos usemos nombres de dominio que son bastante más simples de recordar (pero que también pueden causar muchos conflictos, puesto que los nombres son activos valiosos en algunos casos).
El sistema de nombres de dominios en Internet es un sistema distribuido, jerárquico, replicado y tolerante a fallas. Aunque parece muy difícil lograr todos esos objetivos, la solución no es tan compleja en realidad. El punto central se basa en un árbol que define la jerarquía entre los dominios y los sub-dominios. En un nombre de dominio, la jerarquía se lee de derecha a izquierda. Por ejemplo, en dcc.uchile.cl, el dominio más alto es cl. Para que exista una raíz del árbol, se puede ver como si existiera un punto al final del nombre: dcc.uchile.cl., y todos los dominios están bajo esa raíz (también llamada ``punto").
Cada componente del dominio (y también la raíz) tiene un servidor primario y varios servidores secundarios. Todos estos servidores tienen la misma autoridad para responder por ese dominio, pero el primario es el único con derecho para hacer modificaciones en él. Por ello, el primario tiene la copia maestra y los secundarios copian la información desde él. El servidor de nombres es un programa que típicamente es una versión de BIND ( Berkeley Internet Name Daemon). En general es mucho mejor traer la última versión desde Internet ( www.isc.org) que usar la que viene con el Sistema Operativo, porque es un servidor que ha cambiado mucho a lo largo del tiempo.
La raíz del sistema de dominios es servida por algunos servidores ``bien conocidos''. Todo servidor de nombres debe ser configurado con la lista de los servidores raíz bien conocidos (en general lo vienen de fábrica). Estos servidores dicen qué dominios de primer nivel existen y cuales son sus servidores de nombres. Recursivamente, los servidores de esos dominios dicen qué sub-dominios existen y cuales son sus servidores. (Ver figura
1).
Figure: Delegación de Dominios
Existe un conflicto de competencia entre el servidor de un dominio y el de un sub-dominio: ambos deben saber cuales son los servidores de nombres del sub-dominio. En un inicio, estarán de acuerdo, pero con el tiempo los servidores pueden ir cambiando, y las versiones de ambos pueden ser inconsistentes. Actualmente, el que manda es el servidor del sub-dominio, y su información es la más importante. Por ejemplo, si el servidor de .cl dice que uchile.cl es servido por los servidores A y B, y luego el servidor A dice que uchile.cl es servido por A y C, la información que se recibirá en el mundo es que los servidores son A y C. El único requisito es que por lo menos uno de los servidores de nombres que figuran en el dominio debe corresponder a uno de los que lista el sub-dominio. Si no es así, el dominio queda sin servidores y es inaccesible del resto del mundo
.
En general, la regla ideal es que la lista de servidores que figura en el dominio sea un sub-conjunto de la lista que figura en el sub-dominio. El DNS se utiliza principalmente para la resolución de nombres, esto es, decidir qué dirección IP pertenece a determinado nombre completo de host.
También puede descargar este tutorial en otros formatos (HTML sin decoraciones y PDF).
Usos del DNS
El DNS se utiliza para distintos propósitos. Los más comunes son:
Resolución de nombres: Dado el nombre completo de un host (por ejemplo blog.smaldone.com.ar), obtener su dirección IP (en este caso, 208.97.175.41).
Resolución inversa de direcciones: Es el mecanismo inverso al anterior. Consiste en, dada una dirección IP, obtener el nombre asociado a la misma.
Resolución de servidores de correo: Dado un nombre de dominio (por ejemplo gmail.com) obtener el servidor a través del cual debe realizarse la entrega del correo electrónico (en este caso, gmail-smtp-in.l.google.com).
Por tratarse de un sistema muy flexible, es utilizado también para muchas otras funciones, tales como la obtención de claves públicas de cifrado asimétrico y la validación de envío de e-mails (a través de mecanismos como SPF).
Terminología básica
Antes de proseguir, es necesario introducir algunos términos básicos para evitar confusiones y ambigüedades. Otros términos más complejos serán tratados más adelante.
Host Name: El nombre de un host es una sola "palabra" (formada por letras, números y guiones). Ejemplos de nombres de host son "www", "blog" y "obelix".
Fully Qualified Host Name (FQHN): Es el "nombre completo" de un host. Está formado por el hostname, seguido de un punto y su correspondiente nombre de dominio. Por ejemplo, "blog.smaldone.com.ar"
Domain Name: El nombre de dominio es una sucesión de nombres concatenados por puntos. Algunos ejemplos son "smaldone.com.ar", "com.ar" y "ar".
Top Level Domains (TLD): Los dominios de nivel superior son aquellos que no pertenecen a otro dominio. Ejemplos de este tipo son "com", "org", "ar" y "es".
Arquitectura del DNS
El sistema DNS funciona principalmente en base al protocolo UDP. Los requerimientos se realizan a través del puerto 53.
El sistema está estructurado en forma de "árbol". Cada nodo del árbol está compuesto por un grupo de servidores que se encargan de resolver un conjunto de dominios (zona de autoridad). Un servidor puede delegar en otro (u otros) la autoridad sobre alguna de sus sub-zonas (esto es, algún subdominio de la zona sobre la que él tiene autoridad). Un subdominio puede verse como una especialización de un dominio de nivel anterior. Por ejemplo, "smaldone.com.ar" es un subdominio de "com.ar", que a su vez lo es del TLD "ar".
El siguiente diagrama ilustra esto a través de un ejemplo:
Los servidores con autoridad sobre los TLD son los llamados "root servers" (o "servidores raíz") del sistema. Estos son fijos, ya que rara vez cambian, siendo actualmente 13.
Tomemos como ejemplo el dominio "com.ar". Este dominio pertenece al TLD "ar".
Los servidores con autoridad sobre el dominio "ar" son:
ns-ar.ripe.netmerapi.switch.chuucp-gw-1.pa.dec.comuucp-gw-2.pa.dec.comns.uu.netns1.retina.arathea.arctina.ar
En tanto que los servidores con autoridad sobre "com.ar" son:
merapi.switch.chrelay1.mecon.gov.arns.uu.netns1.retina.arathea.arctina.ar
Podemos ver que ns.uu.net, ns1.retina.ar, athea.ar y ctina.ar tienen autoridad tanto sobre "com.ar" como sobre "ar".

No hay comentarios: