5. SERVICIO DE DNS
Como ejemplo vamos a suponer que queremos dar un servicio de traducción de nombres en una red que está detrás de un router con funcionalidad NAT, al estilo de los que se distribuyen con las líneas ADSL. Vamos a suponer que en esa red existen 3 máquinas: ns.dominio.com con dirección IP 172.26.0.2 (que alberga este servidor de DNS), www.dominio.com con dirección IP 172.26.0.4 (que alberga un servidor web) y mailhost.dominio.com con dirección IP 172.26.0.5 (que alberga un servidor de correo electrónico). Cabe decir también que vamos a suponer que la IP pública del router ADSL es 10.0.0.1 (hagamos un esfuerzo y pensemos que es una dirección pública válida).
Como es lógico, las direcciones privadas de la red no tienen ningún sentido vistas desde Internet. Desde Internet la única dirección que va a verse es 10.0.0.1. Por ello vamos a tener que configurar el servidor de manera que si la consulta llega desde dentro de nuestra red, las dirección IP de respuesta sean las direcciones privadas 172.26.0.x; y si la consulta llega desde fuera, responderemos a dichas peticiones con la única dirección IP pública que tenemos: 10.0.0.1. Es lo que habitualmente se llaman vistas, áreas, sectores...etc.
Lo primero que debemos hacer es crear el esqueleto del servicio. Para ello podemos utilizar la herramienta tinydns-conf de similar uso a dnscache-conf:
shell#> tinydns-conf tinydns djbdnslog /etc/tinydns 172.26.0.2
Ahora ya sólo nos queda configurar las entradas para que el servidor de DNS empiece a realizar las traducciones. Para ello debemos situarnos en el directorio /etc/tinydns/root y allí vamos a introducir la información editando el archivo data.
Primero vamos a crear dos zonas: una que se corresponderá con nuestra red y otra que se corresponderá con el resto de direcciones IP. Las zonas se deben nombrar con dos letras, de manera que deberíamos introducir dos líneas como estas al archivo data.
%IN:172.26.0---%EX//------Ahora ya tendríamos que introducir los registros necesarios para realizar la traducción de nombres. Para esto, en tinydns el formato general de las líneas a introducir es un carácter inicial que define el tipo de entrada o entradas que se van a introducir más una serie de opciones. Me explico mejor con unos ejemplos:
.nombre_dominio:ip:nombre_maquina:tiempo_de_vida:fechado:zona
Puede observarse como esta línea empieza con el carácter “.” y va a introducir tres registros DNS:
Una entrada SOA para nombre_maquina.nombre_dominio como servidor primario del dominio y con hostmaster@nombre_dominio como dirección de contacto.
Una entrada NS para nombre_maquina.nombre_dominio como servidor DNS del dominio.
Una entrada A que apunta nombre_maquina a la dirección ip especificada.
&nombre_dominio:ip:nombre_maquina:tiempo_de_vida:fechado:zona
Ahora la línea comienza con el caracter “&” y va a introducir lo mismo que la línea anteriormente explicada con la excepcion de la entrada SOA.
Znombre_dominio:nombre_maquina:contacto:num_serie:refresco:reintento:expiracion:
tiempo_minimo:tiempo_de_vida:fechado:zona
Esta línea introduce únicamente una entrada SOA y podemos controlar mejor los parámetros de la zona.
@nombre_dominio:ip:nombre_maquina:prioridad:tiempo_de_vida:fechado:zona
Esta línea introduce 2 registros DNS:------Una entrada MX que indica que el correo destinado a nombre_dominio se envía a nombre_maquina.
Una entrada A que hace apuntar nombre_maquina a la dirección ip especificada.
=nombre_maquina:ip:tiempo_de_vida:fechado:zona
Esta línea introduce dos registos DNS:------Una entrada A que apunta nombre_maquina a ip.
Una entrada PTR que apunte ip a nombre_maquina
+nombre_maquina:ip:tiempo_de_vida:fechado:zona
Esta línea realiza la misma función que la anteriormente explicada con la excepción de la entrada PTR.
^nombre_maquina:ip:tiempo_de_vida:fechado:zona
Esta línea introduce una entrada PTR que apunta ip a nombre_maquina
Cnombre_maquina:otro_nombre_maquina:tiempo_de_vida:fechado:zona
Esta línea introduce una entrada CNAME realizando un alias entre nombre_maquina y otro_nombre_maquina
Una vez conocidas las líneas de configuración posibles podemos aplicarlo al caso teórico que se ha planteo. Para ello editamos de nuevo el archivo data e introducimos la información siguiente:
%IN:172.26.0---%EX//---//.dominio.com:172.26.0.2:ns.dominio.com:::IN---.dominio.com:10.0.0.1:ns.dominio.com:::EX---.0.26.172.in-addr.arpa:172.26.0.2:ns.dominio.com:::IN---.0.0.10.in-addr.arpa:10.0.0.1:ns.dominio.com:::EX---@dominio.com:172.26.0.5:mailhost.dominio.com::::IN---@dominio.com:10.0.0.1:mailhost.dominio.com::::EX---=www.dominio.com:172.26.0.4::IN---+www.dominio.com:10.0.0.1::EX//------Ahora ya podríamos levantar el servicio de traducción de nombres con las siguientes órdenes:
shell#> ln -s /etc/tinydns /service
Si intentásemos ahora traducir uno de los nombres que hemos especificado desde dentro de nuestra red, obtendríamos un error. ¿Por qué? Simplemente porque nuestro resolvedor-caché de DNS buscaría donde resolver ese nombre de dominio y obtendría como respuesta que el servidor de DNS se encuentra en 10.0.0.1 (nuestra dirección IP pública) de manera que le preguntaría a nuestro router y este no le haría algún caso. Por ello debemos decirle a nuestro resolvedor que ese servidor de DNS se encuentra dentro de nuestra red en una ip determinada. Para ello nos situamos en el directorio /etc/dnscache/root/servers e introducimos las siguientes órdenes:
shell#> echo 172.26.0.2 > dominio.com
shell#> echo 172.26.0.2 > 0.26.172.in-addr.arpa
shell#> svc -d /service/dnscache
shell#> svc -u /service/dnscache
Con esto ya tendríamos nuestro servicio de DNS funcionado por completo. O mejor dicho casi, ya que tinydns únicamente escucha en el puerto 53 UDP, no TCP. Las consultas DNS se resuelven por TCP únicamente en dos casos:
1.Cuando la respuesta supera los 512 bytes (algo muy poco común y que debe evitarse siempre).
2.Cuando se van a realizar transferencias de zonas completas (algo muy inseguro y por la tanto poco recomendable).
Como puede verse son casos excepcionales que raramente se dará en el público al que va destinado este documento. Por lo tanto no se explicará, sólo quería dejar constancia de este hecho.
Autor y licencia de 'Servidor DNS: DJBDNS - SERVICIO DE DNS'
FreeBSD Extraído de: http://www.bandaancha.st/documentos.php?docid=66
Esta obra está bajo una licencia de Creative Commons.
|
|
BandaAncha.st coloca sus contenidos, artículos y documentos bajo Licencia Creative Commons. Esta modalidad de licencia, jurídicamente válida, permite copiar y distribuir los documentos y contenidos del sitio web con dos únicos requisitos obligatorios: se debe citar en los créditos la fuente (autor original y URI), y las distribuciones ulteriores deben adscribirse a una licencia similar. |
|
|
|
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
|
|
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.
|
|
Wikis relacionados con 'Servidor DNS: DJBDNS - SERVICIO DE DNS'
Ante todo quiero decir que esto no va ser un documento riguroso. El objetivo es...
Más »
Partiendo del cine mudo como documento histórico y subrayando el valor artístico de la música...
Más »
En muchos foros y cosas similares he visto muchas consultas sobre cómo montar servidores de...
Más »
Conceptos como dirección IP, DNS, hosting, que le permitirán entender cómo poner las páginas que...
Más »
Las instituciones gubernamentales poseen un rol importante en el servicio al ciudadano. Por lo tanto,...
Más »
¿Estás seguro de que deseas eliminar este capítulo?