1%% LyX 1.1 created this file. For more info, see http://www.lyx.org/. 2%% Do not edit unless you really know what you are doing. 3\documentclass{article} 4\usepackage[spanish]{babel} 5\usepackage[T1]{fontenc} 6\usepackage[latin1]{inputenc} 7\usepackage{graphicx} 8\setlength\parskip{\medskipamount} 9\setlength\parindent{0pt} 10 11\makeatletter 12 13%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LyX specific LaTeX commands. 14\providecommand{\LyX}{L\kern-.1667em\lower.25em\hbox{Y}\kern-.125emX\@} 15\addto\extrasspanish{\bbl@deactivate{~}} 16 17%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% User specified LaTeX commands. 18\usepackage{hyperlatex} 19\htmltitle{Jorge Leon} 20\htmladdress{\xlink{Georg Lehner}{mailto:Jorge.Lehner@gmx.net} - \xlink{homepage}{/\~{}jorge}} 21\htmldirectory{html} 22\htmlname{dns_intro} 23 24\makeatother 25\begin{document} 26 27\title{Domain Name Service} 28 29 30\date{24 de Febrero del 2002} 31 32 33\author{Georg Lehner} 34 35\maketitle 36\abstract{ 37El servicio primario para el funcionamiento de INTERNET es el Domain 38Name Service. Este documento resume de forma breve su funcionamiento 39y da algunas referencias a otra informaci�n 40} 41 42\section{Qu� es DNS} 43 44Cada computadora conectada a Internet tiene (al menos) un n�mero de 45identificaci�n asociado: su \emph{n�mero IP}. En todo Internet no 46se repite un n�mero en diferentes computadoras. 47 48Cada computadora tiene (generalmente) un nombre. Grupos de computadoras 49est�n organizados en \emph{dominios} lo que permite que diferentes 50computadora tengan el mismo nombre, siempre y cuando se encuentran 51en diferentes dominios. El nombre calificado \emph{(fully qualified 52domain name~--~fqdn}) \emph{}de una computadora es la concatenaci�n 53del nombre con el dominio, mediante un punto '.' de separaci�n, ejemplo: 54puma.felinos.net = computadora puma, dominio felinos.net 55 56Existe una base de datos distribuida en Internet, de la cual se puede 57obtener el n�mero IP de una computadora de la cual se conoce el fqdn 58mediante un \emph{query}; este tipo de query se llama \emph{forward 59resolution} (resoluci�n de nombre directo). Teniendo un n�mero IP 60se puede obtener el fqdn de la computadora correspondiente mediante 61un \emph{reverse query} (resoluci�n inversa). 62 63Es responsabilidad de la administraci�n de un dominio proveer este 64servicio de resoluci�n de nombres para las computadoras conectados. 65Esto involucra dos tareas: instalaci�n de servidores de nombres y 66actualizaci�n constante de los registros de nombres en el dominio 67administrado. 68 69Una buena administraci�n del DNS puede hacer m�s fiable y eficiente 70el funcionamiento del dominio. Muchas veces esto tambi�n involucra 71tareas de configuraci�n de las computadoras clientes del dominio. 72 73 74\section{Una base de datos distribuida} 75 76En el dibujo \ref{domain_fig} apreciamos la vista a dos dominios 77(ficticios) de Internet. Cada computadora tiene un nombre y un n�mero 78IP asignado. Por m�s conveniencia, todas las computadoras en una red 79f�sica utilizan n�meros de un grupo com�n: 12.206.3.{[}0\ldots{}255{]} 80corresponde al dominio felinos.net, 97.3.3.{[}0\ldots{}255{]} a mujeres.org, 81y por ende 198.27.37.{[}0\ldots{}255{]} a ispex.com. 82\begin{figure} 83\label{domain_fig}\resizebox*{0.8\textwidth}{!}{Some missing figure} 84\end{figure} 85En la figura \ref{dns_fig} observamos de forma esquem�tica la agrupaci�n 86de la informaci�n sobre un dominio en una tabla, manejado por una 87computadora, el servidor DNS. 88\begin{figure} 89\label{dns_fig}\resizebox*{0.8\textwidth}{!}{Some other missing figure} 90\end{figure} 91En vez de crear una tabla completa de todos los n�meros de todas las 92computadoras que podr�an estar conectados a Internet y manejar esta 93tabla inmensa en todas las computadoras se manejan tablas de los {}``vecinos 94cercanos'', que de todas formas se requieren m�s frecuentemente. 95Para obtener la informaci�n sobre computadoras remotas se establece 96un sistema de b�squeda jer�rquica explicados m�s adelante. 97 98El n�mero de computadoras en un dominio puede ser grande, y con ello 99la frecuencia de consultas que se hacen al servidor de base de datos 100que maneja la tabla para el dominio. Esto puede causar un retraso 101significativo en el acceso a la red. Para aliviar esta situaci�n, 102se maneja la informaci�n sobre nombres y n�meros IP en uno o varios 103cach�s. El cach� realiza la b�squeda correspondiente a una consulta 104hecha por un cliente y entrega el resultado, pero a la vez guarda 105el resultado localmente en memoria o en el disco duro. Si se repite 106la misma consulta ya no se realiza una b�squeda en las tablas {}``oficiales'', 107sino se entrega el resultado guardado. El problema de un cach� es, 108que su informaci�n puede hacerse obsoleta: una computadora puede desaparecer, 109cambiar su nombre o su n�mero IP. Por esto cada resultado grabado 110contiene un tiempo de expiraci�n (TTL - Time To Live), despu�s del 111cual est� descartado de la memoria del cach�, una subsiguiente consulta 112del dato resulta en una b�squeda en los Servidores DNS y por lo tanto 113(ojal�) en una respuesta aut�ntica. El programa cach� puede ser instalado 114en todas las computadoras (�ptimo), o puede instalarse solo en alguna(s), 115las cuales entonces sirven dentro de un dominio como la fuente de 116informaci�n DNS: son los servidores de nombre del dominio, o \emph{nameserver}. 117 118 119\subsection{Jerarqu�a de la base de datos distribuida} 120 121Una serie de servidores root (por redundancia no es solo uno) manejan 122\emph{delegaciones} de dominios, que son listas de cuales Servidores 123DNS manejan cual dominio. Estos Servidores pueden delegar a su vez 124la resoluci�n de nombres de sub-dominios a Servidores DNS subordinados. 125 126 127\begin{figure} 128\resizebox*{0.8\textwidth}{!}{Another missing figure} \label{root_server} 129\end{figure} 130En la figura \ref{root_server} solamente se muestra la delegaci�n 131de un (1) servidor ra�z (root server) en la parte izquierda arriba, 132todas las flechas s�lidas que indican la delegaci�n a los dominios 133primarios, tienen que duplicarse en cada uno de los servidores ra�z 134(puntos negros conectados con una l�nea punteada). Se puede apreciar 135entonces, que el tiempo de respuesta del DNS se mejora, ya que cualquier 136consulta a los servidores root en promedio toma la v�a de acceso media 137en la red global. 138 139Regresando a la imagen \ref{dns_fig} podemos ver dos v�as que caracterizan 140el sistema DNS: La distribuci�n jer�rquica de los servidores DNS que 141garantiza (te�ricamente) que todos los datos pueden ser encontrados, 142aunque recursivamente (l�neas punteadas), y la jerarqu�a de b�squeda 143de los nameserver (cach�s), que forman {}``ventanas restringidas'' 144pero adaptables a la base de datos completa (l�neas s�lidas). Los 145cach�s son cercanos a la computadora cliente, y pueden ascender de 146un cach� al siguiente hacia {}``arriba''. Si encuentran la respuesta 147en alg�n cach� superior en el camino, no necesitan recurrir al servidor 148root. 149 150 151\section{Escenarios comunes} 152 153La pr�ctica com�n en Internet es configuraci�n minimista, deficiente 154y arcaica, por lo que muchos administradores no est�n en conocimiento 155de la pr�ctica �ptima (best practice). Software popular de clientes 156y servidores DNS se adapta a las pr�cticas deficientes y dificulta 157as� el uso eficiente y la divulgaci�n de la pr�ctica �ptima. 158 159Estoy tratando de resumir en esta secci�n \emph{best} \emph{practice} 160para algunos casos comunes (NO para todas las situaciones), lo que 161no concuerda necesariamente con la experiencia de lectores experimentados 162en Internet. En corto: Lo presentado es solo mi punto de vista, nada 163mas. 164 165T�rminos usados: 166 167\begin{description} 168\item [Cach�~local]un programa que consulta la base de datos DNS a solicitud 169de un programa cliente en la computadora local, le retorna el resultado 170requerido o una respuesta negativa, y memoriza la respuesta durante 171un cierto tiempo para acelerar futuros queries sobre la misma computadora 172\item [Cach�~externo]realiza la misma funci�n como un cach� local, pero 173tambi�n acepta queries de programas clientes en computadoras remotas. 174\item [Servidor~DNS]un programa que maneja una parte de la base de datos 175DNS y que acepta queries de clientes locales o remotos, pero solo 176contesta queries para los cuales tiene un registro disponible. 177\item [Servidor~DNS~local]solo acepta queries desde la computadora local, 178normalmente desde un cache local o externo. 179\item [Servidor~DNS~externo]acepta queries desde computadoras remotas. 180\item [LAN/Red~privada]una red, en la cual se utilizan n�meros IP reservados 181para crear dominios en redes aislados. Estos n�meros no se utilizan 182en Internet, y pueden re-utilizarse en diferentes redes f�sicas. Estas 183redes y los n�meros IP se denominan \emph{redes} \emph{privadas}. 184\end{description} 185 186\subsection{Configuraci�n de computadora cliente} 187 188\begin{description} 189\item [Sistemas~Operativos~Unix]configurar un cach� local 190\item [Otros]utilizan cach�s externos (remotos) 191\end{description} 192En ambos casos se configura uno o m�s n�meros de cach�s o servidores 193remotos (\emph{nameserver}) a los cuales se env�an queries. 194 195En muchos sistemas Unix es com�n seguir tambi�n la segunda pr�ctica. 196 197 198\subsection{LAN sin conexi�n externa} 199 200\label{LAN_sin_conext} 201 202Configuraci�n de un servidor DNS externo en una o mas computadoras 203en la LAN. 204 205Opcional: 206 207Configuraci�n de uno o varios servidores DNS locales y en la misma 208computadora un cache externo, que env�a sus queries al servidor local 209y a los otros caches externos. 210 211 212\subsection{LAN con conexi�n externa} 213 214Es como la configuraci�n opcional en \ref{LAN_sin_conext}. Los cach�s 215externos adem�s de enviar queries a los servidores de la LAN env�an 216queries a cach�s externos. 217 218Este escenario en muchos casos es reducido de tal forma, que todos 219los clientes locales de la LAN utilizan uno o varios cach�s externos. 220 221 222\subsection{Dominio p�blico} 223 224\label{dominio_publico} 225 226Configuraci�n de uno o varios servidores DNS externos. Estos son consultados 227por cach�s de dominios remotos sobre registros del dominio. 228 229Configuraci�n de uno o varios caches externos, estos son consultados 230por computadoras del mismo dominio. 231 232 233\subsection{Dominio p�blico asegurado} 234 235La pr�ctica com�n es, seccionar el dominio en una parte con contacto 236directo al Internet, incluyendo un gateway (pasarela) que contacta 237con una parte {}``interna'' del dominio. El gateway restringe el 238acceso de computadoras de dominios remotos a las computadoras {}``internas'' 239realizando as� la funci�n de un \emph{firewall}. 240 241La configuraci�n del DNS es id�ntico a \ref{dominio_publico}, con 242la salvedad que los servidores y uno o m�s cach�s externos est�n detr�s 243del firewall en la parte {}``interna''. El firewall permite a todos 244los clientes, internos o del Internet remoto acceso a los cach�s externos. 245 246 247\section{Redundancia} 248 249Hay b�sicamente dos razones por los cuales se introducen servidores 250de bases de datos redundantes: 251 252\begin{itemize} 253\item Si uno de ellos falla, uno de los servidores redundantes puede asumir 254el servicio y 255\item Se puede distribuir la carga de solicitudes a dos o m�s servidores 256y de esta manera acelerar el acceso de los clientes a la informaci�n 257requerida. 258\end{itemize} 259La parte negativa de la redundancia es, que hay que mantener copias 260id�nticas de la informaci�n en todo servidor redundante. Este corresponde 261a mayor trabajo administrativo y riesgo adicional de fallas. 262 263La mejor pr�ctica es, utilizar un mecanismo automatizado para la actualiqzaci�n 264de un dominio, e incluir en este la duplicaci�n de los datos en los 265servidores secundarios con cada cambio realizado. 266 267La transferencia de los archivos necesarios debe hacerse con un programa 268que no permite la modificaci�n involuntaria de su contenido - ejemplo: 269ssh. Para minimizar la cantidad de informaci�n transferida se puede 270usar un programa de compresi�n y/o transferencia diferential, ejemplo: 271rsync. En una sola frase: 272 273rsync bajo ssh es actualmente la mejor forma de actualizar datos remotos 274de manera confiable. 275 276Tradicionalmente se realiza esta duplicaci�n mediante {}``transferencias 277de zonas'' (zone transfer) a trav�s de un protocolo que es parte 278del sistema DNS. Este protocolo no es eficiente ni confiable. 279 280 281\section{BIND, djbdns y otro(s)} 282 283El programa {}``oficial'' para el servicio DNS en Internet es BIND 284- Berkeley Internet Name Daemon. BIND combina la funci�n de servidor 285y cach� en un solo programa. En toda la historia de su desarrollo 286se han visto problemas de seguridad y problemas de fiabilidad. 287 288Dan Bernstein es el autor del paquete de programas djbdns, que son 289optimizados en seguridad, velocidad y fiabilidad. djbdns separa las 290tareas de servidor DNS y cach� (nameserver) en diferentes programas. 291La configuraci�n de djbdns es completamente diferente a la de BIND 292y requiere aprendizaje desde cero, una desventaja para administradores 293que conocen este primer programa bien. 294 295Existe por lo menos otra alternativa: maradns que provee tambi�n un 296servidor DNS dise�ado para seguridad. 297 298 299\section{Referencias} 300 301Existe una gran cantidad de literatura en papel y en forma electr�nica 302sobre DNS. Para la documentaci�n oficial de BIND recomiendo visitar 303las p�ginas Web de los servidores sam.uni.edu.ni, magma.com.ni, loghog.uni.edu.ni 304y visitar el directorio doc/bind-doc. 305 306La p�gina Web de Daniel Bernstein, que tiene una excelente y compacta 307discusi�n de \xlink{DNS, BIND y sus problemas se encuentra en }{http://cr.yp.to/djbdns.html} 308junto con mucha otra informaci�n valiosa. 309 310\xlink{Linux-Howtos}{http://www.linuxdoc.org/HOWTO/DNS-HOWTO.html} 311(tambi�n en los servidores arriba mencionados en doc/HOWTO/) 312 313\xlink{http://axs.org/\~{}cp/DNS.html}{http://axs.org/\~{}cp/DNS.html} 314 315\xlink{http://www.dns.net/dnsrd/docs/ }{http://www.dns.net/dnsrd/docs/} 316 317\xlink{http://www.psionic.com/}{http://www.psionic.com/} 318 319 320\section{Copias y Legalidades} 321 322Georg Lehner mantiene los derechos de autor de este documento, bajo 323la Licencia Publica de Documentaci�n. Cabe se�alar, que pr�cticamente 324toda la informaci�n brindada aqu� es extra�da de fuentes externos, 325como los creadores de Internet y las personas que lo siguen desarrollando. 326Newton dec�a {}``Si veo lejos es, porque estoy sentado en los hombros 327de gigantes. 328 329El documento fue elaborado durante una asesor�a para la Universidad 330Nacional de Ingenier�a y el proyecto ICT financiado por SIDA - Suecia, 331y forma parte de la documentaci�n elaborado a fin de proveer informaci�n 332y formaci�n b�sica a todo el equipo de trabajo y al grupo meta involucrado. 333 334Puede bajarlo en formato \xlink{PDF (Acrobat) aqu�}{dns_intro.pdf}, 335o en formato html empacado en \xlink{un archivo zip}{dns_intro.zip}. 336\end{document} 337