Domain Name Service (DNS) es el servicio que resuelve los nombres de dominio asociados a una dirección IP para direccionar las peticiones a un servidor en específico. Se utiliza cuando un nodo (o host) en Internet contacta a otro mediante el nombre de domino de la máquina y no por su dirección IP.
A través de este documento se verán las generalidades del servicio de resolución de nombres, la configuración y mantenimiento de un servicio de nombres con BIND, bajo la plataforma Linux, aunque la mayoría de estos conceptos se pueden aplicar a la cualquier servicio de DNS sobre otras plataformas.
Regularmente, todos los equipos que están en Internet o una Intranet tienen una dirección IP única que las identifica, generalmente dividido en cuatro segmentos u ‘octetos’, cuya representación es, por ejemplo, ‘172.29.183.217′, pero el recordar todas las direcciones en este formato sería sumamente difícil, por lo que utilizamos los nombres de dominio para referenciarlos.
Existen varios productos que realizan esta función y en todas las plataformas, pero el más usado es BIND (Berkeley Internet Name Domain), que es distribuido bajo la GNU GPL.
La estructura básica del DNS es similar a un árbol, donde se tiene una raíz o root, los Dominios de Nivel Principal (Top Level Domains) y los dominios de segundo nivel.
Los nombres de dominio completamente calificados o FQDN (fully qualified domain name) se componen por lo general del nombre del host, un nombre de dominio secundario y un nombre de dominio primario o de nivel máximo (top-level domain), que son secciones organizadas jerárquicamente.
Por ejemplo: ‘www.ejemplo.com’. Leyéndolo de derecha a izquierda tenemos un dominio primario (’COM’), un dominio secundario (’EJEMPLO’) y el nombre del host (’WWW’). Algunos dominios primarios son:
org – Organizaciones no lucrativas.
com – Organizaciones lucrativas.
net – Organizaciones en Internet.
gob – Agencias gubernamentales en latinoamérica.
mx – Sufijo de México.
es – Sufijo de España.
Existen cuatro tipos diferentes de servidores de resolución de nombres:
- Master (maestro o primario). Aloja los registros autoritarios de una zona, responde las peticiones de resolución de nombres como servidor de autoridad y delega copias a los servidores esclavo.
- Slave (esclavo o secundario). Responde a las peticiones de resolución de nombres como servidor de autoridad, pero la información es distribuida por los servidores primarios. Se considera que como medida de seguridad, se requiere al menos uno de estos, preferentemente independiente de la infraestructura del primario (red, energia eléctrica y ubicación geográfica).
- Caching-only (sólo de cache). Responde a las peticiones de resolución de nombres pero no es servidor de autoridad, las respuestas las guarda en memoria por un período determinado.
- Forwarding (de reenvío). Reenvia las peticiones a una lista de servidores de nombres.