Está en la página 1de 12

Cmo funciona el DNS

Publicado por Javier el 5 de diciembre de 2006 Siguiendo con la serie de artculos sobre redes y TCP/IP hoy realizaremos una breve introduccin al Sistema de Nombres de Dominio (DNS, por Domain Name System). El DNS se utiliza principalmente para la resolucin de nombres, esto es, decidir qu direccin IP pertenece a determinado nombre completo de host. Tambin puede descargar este tutorial en otros formatos (HTML sin decoraciones y PDF).

Usos del DNS


El DNS se utiliza para distintos propsitos. Los ms comunes son:

Resolucin de nombres: Dado el nombre completo de un host (por ejemplo blog.smaldone.com.ar), obtener su direccin IP (en este caso, 208.97.175.41). Resolucin inversa de direcciones: Es el mecanismo inverso al anterior. Consiste en, dada una direccin IP, obtener el nombre asociado a la misma. Resolucin de servidores de correo: Dado un nombre de dominio (por ejemplo gmail.com) obtener el servidor a travs del cual debe realizarse la entrega del correo electrnico (en este caso, gmail-smtp-in.l.google.com).

Por tratarse de un sistema muy flexible, es utilizado tambin para muchas otras funciones, tales como la obtencin de claves pblicas de cifrado asimtrico y la validacin de envo de e-mails (a travs de mecanismos como SPF).

Terminologa bsica
Antes de proseguir, es necesario introducir algunos trminos bsicos para evitar confusiones y ambigedades. Otros trminos ms complejos sern tratados ms adelante.

Host Name: El nombre de un host es una sola palabra (formada por letras, nmeros 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 sucesin 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 travs 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, algn subdominio de la zona sobre la que l tiene autoridad). Un subdominio puede verse como una especializacin 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 travs de un ejemplo:

Los servidores con autoridad sobre los TLD son los llamados root servers (o servidores raz) 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.net merapi.switch.ch uucp-gw-1.pa.dec.com uucp-gw-2.pa.dec.com ns.uu.net ns1.retina.ar athea.ar ctina.ar

En tanto que los servidores con autoridad sobre com.ar son:


merapi.switch.ch relay1.mecon.gov.ar ns.uu.net ns1.retina.ar

athea.ar ctina.ar

Podemos ver que ns.uu.net, ns1.retina.ar, athea.ar y ctina.ar tienen autoridad tanto sobre com.ar como sobre ar.

El proceso de resolucin de nombres


Cuando una aplicacin (cliente) necesita resolver un FQHN enva un requerimiento al servidor de nombres configurado en el sistema (normalmente, el provisto por el ISP). A partir de entonces se desencadena el proceso de resolucin del nombre:
1. El servidor de nombres inicial consulta a uno de los servidores raz (cuya

2. 3. 4. 5. 6. 7.

direccin IP debe conocer previamente). Este devuelve el nombre del servidor a quien se le ha delegado la sub-zona. El servidor inicial interroga al nuevo servidor. El proceso se repite nuevamente a partir del punto 2 si es que se trata de una subzona delegada. Al obtener el nombre del servidor con autoridad sobre la zona en cuestin, el servidor inicial lo interroga. El servidor resuelve el nombre correspondiente, si este existe. El servidor inicial informa al cliente el nombre resuelto.

Ilustremos esto con un ejemplo concreto. Supongamos que el navegador necesita resolver el nombre blog.smaldone.com.ar.
1. El sistema tiene configurado el servidor de nombres 200.49.156.3 (perteneciente

2. 3.

4. 5. 6. 7. 8.

al proveedor argentino Fibertel). Por lo tanto enva a ste el requerimiento de resolver blog.smaldone.com.ar. El servidor de 200.49.156.3 enva la consulta root server 198.41.0.4. 198.41.0.4 le informa que el servidor con autoridad sobre ar es athea.ar, cuya direccin IP es 200.16.98.2. (En realidad, informa la lista de todos los servidores con tal autoridad, pero para simplificar el ejemplo tomaremos solamente uno.) 200.49.156.3 enva nuevamente el requerimiento a athea.ar (el cual, recordemos, tambin tiene autoridad sobre com.ar). athea.ar responde que la autoridad sobre smaldone.com.ar la tiene ns1.mydomain.com cuya direccin IP es 64.94.117.213. 200.49.156.3 enva ahora la consulta a ns1.mydomain.com. ns1.mydomain.com informa que la direccin IP de blog.smaldone.com.ar es 208.97.175.41. Finalmente, 200.49.156.3 devuelve este resultado a la aplicacin que origin la consulta.

Mecanismos de cach
Cada vez que un servidor de nombres enva una respuesta, lo hace adjuntando el tiempo de validez de la misma (TTL o tiempo de vida). Esto posibilita que el receptor, antes la necesidad de volver a resolver la misma consulta, pueda utilizar la informacin previamente obtenida en vez de realizar un nuevo requerimiento.

Esta es la razn por la cual los cambios realizados en el DNS no se propagan instantneamente a travs del sistema. Dependiendo de la naturaleza de los mismos (y de la configuracin de cada servidor), la propagacin puede tardar desde algunos minutos hasta varios das.

Correo electrnico y resolucin de nombres


Normalmente los usuarios de correo electrnico redactan su mensajes usando un cliente de correo y envindolo a travs de un servidor SMTP provisto por su ISP o a travs de un sistema de correo va web (webmail). En cualquier caso, una vez que el mensaje es recibido por el servidor, debe ser entregado al destinatario. Aqu interviene el sistema DNS:
1. El servidor del emisor solicita al DNS (de acuerdo al mecanismo analizado

anteriormente), la entrada MX del dominio del receptor del mensaje. MX significa mail exchanger, esto es, el nombre del servidor (o los servidores) encargado de recibir los mensajes destinados a determinado dominio. 2. El DNS devuelve el FQHN y la direccin IP del mail exchanger. 3. El servidor del emisor se conecta al puerto 25, mediante TCP, del servidor del destinatario y entrega el mensaje segn el protocolo SMTP. 4. El proceso podr continuar si el servidor receptor del mensaje no es el ltimo de la cadena. Existen servidores que actan como puertas de enlace o gateways de correo electrnico, y que se encargan de recibir los mensajes de determinados dominios para luego enviarlos a otros servidores.

Tipos de registro en un servidor de nombres


Un servidor de nombres puede almacenar distinta informacin. Para ello, en cada zona de autoridad dispondr de entradas de distinto tipo. Entre los ms importantes se encuentran:

A (Address): Este registro se utiliza para traducir nombres de hosts del dominio en cuestin a direcciones IP. CNAME (Canonical Name): El nombre cannico es un alias para un host determinado. (No define una direccin IP, sino un nuevo nombre.) NS (Name Server): Especifica el servidor (o servidores) de nombres para un dominio. MX (Mail Exchange): Define el servidor encargado de recibir el correo electrnico para el dominio. PTR (Pointer): Especifica un registro inverso, a la inversa del registro A, permitiendo la traduccin de direcciones IP a nombres. TXT (Text): Permite asociar informacin adicional a un dominio. Esto se utiliza para otros fines, como el almacenamiento de claves de cifrado, DomainKeys o Sender Policy Framework.

Bind, el servidor de nombres


Prcticamente el nico software utilizado en los servidores de nombres de Internet es bind (Berkeley Internet Name Domain), creado originalmente en la Universidad de California, y actualmente propiedad del Internet Systems Consortium.

Este programa, distribuido bajo una licencia libre, es utilizado en prcticamente todos los sistemas Unix del mundo. Esto ha sido considerado un problema de seguridad, al punto que se ha propuesto la migracin de algunos root servers a otro sistema, ya que la aparicin de algn problema de seguridad en bind podra implicar la cada de todo el DNS de Internet.

Uso del DNS en una red local


Ya en redes de tamao medio (quizs ms de 5 equipos) es conveniente la utilizacin de DNS. Esto nada tiene que ver con el DNS de Internet (aunque el servidor local puede estar vinculado a este sistema). Bsicamente, es conveniente montar un servidor local de DNS por los siguientes motivos:

Agilizar el acceso a Internet: Al tener un servidor de nombres en nuestra propia red local (que acceda al DNS de nuestro proveedor o directamente a los root servers) se agiliza el mecanismo de resolucin de nombres, manteniendo en cach los nombres recientemente usados en la red y disminuyendo el trfico hacia/desde Internet. Simplificar la administracin de la red local: Al contar con un DNS propio (ya sea uno o varios servidores de nombres) es posible definir zonas locales (no vlidas ni accesibles desde Internet) para asignar nombres a cada uno de los hosts de la LAN. De esta forma es posible, por ejemplo, referirnos a la impresora de red como hplaser.mired.local en vez de 192.168.0.2 y a nuestro servidor de correo interno como smtp.mired.local en vez de 192.168.0.3. (Pensemos, por ejemplo, que ocurrira con las configuraciones de las aplicaciones si un da decidimos cambiar el esquema de direcciones IP de nuestra red.)

Problemas del DNS


El principal problema que presenta el DNS es que, al estar basado en UDP (protocolo de transporte que no garantiza la recepcin de la informacin enviada), tanto las consultas como las respuestas pueden perderse (por ejemplo, a causa de congestionamiento en algn enlace de la red). Es comn apreciar cmo, en el caso de servidores y redes no muy bien configuradas, la resolucin de nombres se resiente sensiblemente ante cualquier anomala (saturacin de trfico o del servidor de nombres local). Otro inconveniente, que ya hemos hecho notar, es la lentitud de la propagacin de las modificaciones en el sistema, producto de la propia arquitectura del mismo. Pero quizs el mayor problema no sea inherente al sistema mismo, sino a la psima configuracin de los servidores de muchos ISP. Fibertel, el proveedor que utilizo, es un notable ejemplo de esta falencia. Una buena solucin a esta situacin es ejecutar un servidor de nombres en alguna PC de la red local, de forma tal que se comunique directamente con los root servers (evitando de esta forma pasar a travs de los servidores de nombres de nuestro proveedor).

Herramientas para aprender ms

En sistemas Unix el comando dig (ver man dig) permite realizar requerimientos a mano para poder investigar un poco ms sobre el funcionamiento del DNS y, cmo no, tambin para detectar y solucionar problemas en la red. Los usuarios de sistemas Windows disponen del comando nslookup (aunque no tan potente como dig), para el mismo propsito.

Domain Name System


Domain Name System (DNS) Familia: Funcin: Puertos: Familia de protocolos de Internet Resolucin de nombres de dominio 53/UDP, 53/TCP

Ubicacin en la pila de protocolos Aplicacin Transporte Red Estndares: DNS TCP o UDP IP (IPv4, IPv6) RFC 1034 (1987) RFC 1035 (1987)

Domain Name System o DNS (en espaol: sistema de nombres de dominio) es un sistema de nomenclatura jerrquica para computadoras, servicios o cualquier recurso conectado a Internet o a una red privada. Este sistema asocia informacin variada con nombres de dominios asignado a cada uno de los participantes. Su funcin ms importante, es traducir (resolver) nombres inteligibles para los humanos en identificadores binarios asociados con los equipos conectados a la red, esto con el propsito de poder localizar y direccionar estos equipos mundialmente. El servidor DNS utiliza una base de datos distribuida y jerrquica que almacena informacin asociada a nombres de dominio en redes como Internet. Aunque como base de datos el DNS es capaz de asociar diferentes tipos de informacin a cada nombre, los usos ms comunes son la asignacin de nombres de dominio a direcciones IP y la localizacin de los servidores de correo electrnico de cada dominio. La asignacin de nombres a direcciones IP es ciertamente la funcin ms conocida de los protocolos DNS. Por ejemplo, si la direccin IP del sitio FTP de prox.mx es 200.64.128.4,

la mayora de la gente llega a este equipo especificando ftp.prox.mx y no la direccin IP. Adems de ser ms fcil de recordar, el nombre es ms fiable. La direccin numrica podra cambiar por muchas razones, sin que tenga que cambiar el nombre. Inicialmente, el DNS naci de la necesidad de recordar fcilmente los nombres de todos los servidores conectados a Internet. En un inicio, SRI (ahora SRI International) alojaba un archivo llamado HOSTS que contena todos los nombres de dominio conocidos (tcnicamente, este archivo existe[cita requerida] - la mayora de los sistemas operativos actuales pueden ser configurados para revisar su archivo hosts[cita requerida]). El crecimiento explosivo de la red caus que el sistema de nombres centralizado en el archivo hosts no resultara prctico y en 1983, Jesus Botello "SysWarn" public los RFCs 882 y 883 definiendo lo que hoy en da ha evolucionado hacia el DNS moderno. (Estos RFCs han quedado obsoletos por la publicacin en 1987 de los RFCs 1034 y 1035).

Contenido

1 Componentes 2 Entendiendo las partes de un nombre de dominio 3 DNS en el mundo real 4 Jerarqua DNS 5 Tipos de servidores DNS 6 Tipos de resolucin de nombres de dominio 7 Tipos de registros DNS 8 Vase tambin 9 Enlaces externos

Componentes
Para la operacin prctica del sistema DNS se utilizan tres componentes principales:

Los Clientes DNS: Un programa cliente DNS que se ejecuta en la computadora del usuario y que genera peticiones DNS de resolucin de nombres a un servidor DNS (Por ejemplo: Qu direccin IP corresponde a nombre.dominio?); Los Servidores DNS: Que contestan las peticiones de los clientes. Los servidores recursivos tienen la capacidad de reenviar la peticin a otro servidor si no disponen de la direccin solicitada. Y las Zonas de autoridad, porciones del espacio de nombres de dominio que almacenan los datos. Cada zona de autoridad abarca al menos un dominio y posiblemente sus subdominios, si estos ltimos no son delegados a otras zonas de autoridad.

Entendiendo las partes de un nombre de dominio


Un nombre de dominio usualmente consiste en dos o ms partes (tcnicamente etiquetas), separadas por puntos cuando se las escribe en forma de texto. Por ejemplo, www.mohamedali.org o www.wikipedia.es

A la etiqueta ubicada ms a la derecha se le llama dominio de nivel superior (en ingls top level domain). Como org en www.ejemplo.org o es en www.wikipedia.es Cada etiqueta a la izquierda especifica una subdivisin o subdominio. Ntese que "subdominio" expresa dependencia relativa, no dependencia absoluta. En teora, esta subdivisin puede tener hasta 127 niveles, y cada etiqueta puede contener hasta 63 caracteres, pero restringidos a que la longitud total del nombre del dominio no exceda los 255 caracteres, aunque en la prctica los dominios son casi siempre mucho ms cortos. Finalmente, la parte ms a la izquierda del dominio suele expresar el nombre de la mquina (en ingls hostname). El resto del nombre de dominio simplemente especifica la manera de crear una ruta lgica a la informacin requerida. Por ejemplo, el dominio es.wikipedia.org tendra el nombre de la mquina "es", aunque en este caso no se refiere a una mquina fsica en particular.

El DNS consiste en un conjunto jerrquico de servidores DNS. Cada dominio o subdominio tiene una o ms zonas de autoridad que publican la informacin acerca del dominio y los nombres de servicios de cualquier dominio incluido. La jerarqua de las zonas de autoridad coincide con la jerarqua de los dominios. Al inicio de esa jerarqua se encuentra los servidores raz: los servidores que responden cuando se busca resolver un dominio de primer y segundo nivel.

DNS en el mundo real


Los usuarios generalmente no se comunican directamente con el servidor DNS: la resolucin de nombres se hace de forma transparente por las aplicaciones del cliente (por ejemplo, navegadores, clientes de correo y otras aplicaciones que usan Internet). Al realizar una peticin que requiere una bsqueda de DNS, la peticin se enva al servidor DNS local del sistema operativo. El sistema operativo, antes de establecer alguna comunicacin, comprueba si la respuesta se encuentra en la memoria cach. En el caso de que no se encuentre, la peticin se enviar a uno o ms servidores DNS. La mayora de usuarios domsticos utilizan como servidor DNS el proporcionado por el proveedor de servicios de Internet. La direccin de estos servidores puede ser configurada de forma manual o automtica mediante DHCP. En otros casos, los administradores de red tienen configurados sus propios servidores DNS.

En cualquier caso, los servidores DNS que reciben la peticin, buscan en primer lugar si disponen de la respuesta en la memoria cach. Si es as, sirven la respuesta; en caso contrario, iniciaran la bsqueda de manera recursiva. Una vez encontrada la respuesta, el servidor DNS guardar el resultado en su memoria cach para futuros usos y devuelve el resultado.

Jerarqua DNS

El espacio de nombres de dominio tiene una estructura arborescente. Las hojas y los nodos del rbol se utilizan como etiquetas de los medios. Un nombre de dominio completo de un objeto consiste en la concatenacin de todas las etiquetas de un camino. Las etiquetas son cadenas alfanumricas (con '-' como nico smbolo permitido), deben contar con al menos un carcter y un mximo de 63 caracteres de longitud, y deber comenzar con una letra (y no con '-') (ver la RFC 1035, seccin "2.3.1. Preferencia nombre de la sintaxis "). Las etiquetas individuales estn separadas por puntos. Un nombre de dominio termina con un punto (aunque este ltimo punto generalmente se omite, ya que es puramente formal). Un FQDN correcto (tambin llamado Fully Qualified Domain Name), es por ejemplo este: www.example.com. (Incluyendo el punto al final)

Un nombre de dominio debe incluir todos los puntos y tiene una longitud mxima de 255 caracteres. Un nombre de dominio se escribe siempre de derecha a izquierda. El punto en el extremo derecho de un nombre de dominio separa la etiqueta de la raz de la jerarqua (en ingls, root). Este primer nivel es tambin conocido como dominio de nivel superior (TLD - Top Level Domain). Los objetos de un dominio DNS (por ejemplo, el nombre del equipo) se registran en un archivo de zona, ubicado en uno o ms servidores de nombres.

Tipos de servidores DNS


Preferidos: Guardan los datos de un espacio de nombres en sus ficheros Alternativos: Obtienen los datos de los servidores primarios a travs de una transferencia de zona. Locales o cach: Funcionan con el mismo software, pero no contienen la base de datos para la resolucin de nombres. Cuando se les realiza una consulta, estos a su vez consultan a los servidores secundarios, almacenando la respuesta en su base de datos para agilizar la repeticin de estas peticiones en el futuro continuo o libre.

Tipos de resolucin de nombres de dominio


Existen dos tipos de consultas que un cliente puede hacer a un servidor DNS:

Iterativa

Las resoluciones iterativas consisten en la respuesta completa que el servidor de nombres pueda dar. El servidor de nombres consulta sus datos locales (incluyendo su cach) buscando los datos solicitados. El servidor encargado de hacer la resolucin realiza iterativamente preguntas a a los diferentes DNS de la jerarqua asociada al nombre que se desea resolver, hasta descender en ella hasta la mquina que contiene la zona autoritativa para el nombre que se desea resolver.

Recursiva

En las resoluciones recursivas, el servidor no tiene la informacin en sus datos locales, por lo que busca y se pone en contacto con un servidor DNS raz, y en caso de ser necesario repite el mismo proceso bsico (consultar a un servidor remoto y seguir a la siguiente referencia) hasta que obtiene la mejor respuesta a la pregunta. Cuando existe ms de un servidor autoritario para una zona, Bind utiliza el menor valor en la mtrica RTT (round-trip time) para seleccionar el servidor. El RTT es una medida para determinar cunto tarda un servidor en responder una consulta. El proceso de resolucin normal se da de la siguiente manera:
1. El servidor A recibe una consulta recursiva desde el cliente DNS.

2. 3. 4. 5. 6. 7. 8.

El El El El El El El

servidor A enva una consulta recursiva a B. servidor B refiere a A otro servidor de nombres, incluyendo a C. servidor A enva una consulta recursiva a C. servidor C refiere a A otro servidor de nombres, incluyendo a D. servidor A enva una consulta recursiva a D. servidor D responde. servidor A regresa la respuesta al resolver.

Tipos de registros DNS


A = Address (Direccin) Este registro se usa para traducir nombres de servidores de alojamiento a direcciones IPv4. AAAA = Address (Direccin) Este registro se usa en IPv6 para traducir nombres de hosts a direcciones IPv6. CNAME = Canonical Name (Nombre Cannico) Se usa para crear nombres de servidores de alojamiento adicionales, o alias, para los servidores de alojamiento de un dominio. Es usado cuando se estn corriendo mltiples servicios (como ftp y servidor web) en un servidor con una sola direccin ip. Cada servicio tiene su propia entrada de DNS (como ftp.ejemplo.com. y www.ejemplo.com.). esto tambin es usado cuando corres mltiples servidores http, con diferente nombres, sobre el mismo host. Se escribe primero el alias y luego el nombre real. Ej. Ejemplo1 IN CNAME ejemplo2 NS = Name Server (Servidor de Nombres) Define la asociacin que existe entre un nombre de dominio y los servidores de nombres que almacenan la informacin de dicho dominio. Cada dominio se puede asociar a una cantidad cualquiera de servidores de nombres. MX (registro) = Mail Exchange (Registro de Intercambio de Correo) Asocia un nombre de dominio a una lista de servidores de intercambio de correo para ese dominio. Tiene un balanceo de carga y prioridad para el uso de uno o mas servicios de correo. PTR = Pointer (Indicador) Tambin conocido como 'registro inverso', funciona a la inversa del registro A, traduciendo IPs en nombres de dominio. Se usa en el archivo de configuracion del Dns reversiva. SOA = Start of authority (Autoridad de la zona) Proporciona informacin sobre el servidor DNS primario de la zona. HINFO = Host INFOrmation (Informacin del sistema informtico) Descripcin del host, permite que la gente conozca el tipo de mquina y sistema operativo al que corresponde un dominio. TXT = TeXT - ( Informacin textual) Permite a los dominios identificarse de modos arbitrarios. LOC = LOCalizacin - Permite indicar las coordenadas del dominio. WKS - Generalizacin del registro MX para indicar los servicios que ofrece el dominio. Obsoleto en favor de SRV. SRV = SeRVicios - Permite indicar los servicios que ofrece el dominio. RFC 2782. Excepto Mx y Ns. Hay que incorporar el nombre del servicio, protocolo, dominio completo, prioridad del servicio, peso, puerto y el equipo completo. Esta es la sintaxis correspondiente:

Servicio.Protocolo.Dominio-completo IN SRV Prioridad.Peso.Puerto.Equipo-Completo

SPF = Sender Policy Framework - Ayuda a combatir el Spam. En este registro se especifica cual o cuales hosts estn autorizados a enviar

correo desde el dominio dado. El servidor que recibe, consulta el SPF para comparar la IP desde la cual le llega, con los datos de este registro.

También podría gustarte