martes, 21 de febrero de 2012

Basicos: Configuración de DNS


Con este articulo empiezo una nueva serie de artículos denominados Básicos.
Como todos sabéis, este sitio web está dedicado a la arquitectura informática tanto de infraestructuras como de soluciones y por lo tanto suelo tratar temas de nivel medio/alto.
Desde hace un tiempo colaboro en los foros de la TechNet de Microsoft, donde veo que continuamente aparecen preguntas de carácter básico.
Los artículos de esta serie "básicos" están orientados a responder a esas preguntas sencillas que aunque ya están mas que respondidas por la documentación de Microsoft, algunos administradores siguen sin saber aplicar y requieren de una explicación más sencilla.

Introducción:
Cuando Windows 2000 salió al mercado, el directorio activo fue la mayor novedad y la funcionalidad con mayores repercusiones, desde el principio me di cuenta de que el DNS seria uno de los mayores focos de problemas, dado que la mayoría de los administradores de Windows no habían tenido ninguna relación con este servicio que fuera mas lejos que la resolución de nombres en internet.
En este articulo hablaremos de cómo hay que configurar el DNS en una empresa usando Windows 2003.
Primeros pasos:
Cuando hacemos DCPromo se configura automáticamente un servidor DNS en el mismo servidor en el que hemos lanzado el DCPromo, es común que muchos técnicos instalen a mano el servicio de DNS desde quitar y añadir programas del panel de control antes de lanzar el DCPromo.
En ese caso el DCPromo configurara el servicio para funcionar con el directorio activo.
En posteriores controladores de dominio, siempre deberos de ser nosotros los que instalemos el servicio de DNS, antes de lanzar el dcpromo.
Normalmente las empresas tendrán dos necesidades con respecto al DNS interno:
· Que sea capaz de resolver direcciones de internet para que los usuarios puedan navegar y el correo electrónico funcionar correctamente.
· Que permita el buen funcionamiento del directorio activo y resuelva correctamente los nombres y dominios internos.
El error mas común en las pequeñas empresas es poner como DNS de los puestos a un servidor DNS de internet para que pueda navegar.
Cuando se configura un puesto o un servidor de esta manera, no pasa demasiado tiempo antes de que empiecen a aparecer los problemas, GPOs que no se aplican, puestos que tardan en arrancar, recursos de red que desaparecen, etc.
Para que un puesto funcione bien, todos los DNS que use, tienen que ser controladores de dominio.
¿Qué controladores de dominio se deben usar como DNS?, el primario será el controlador de dominio (DC) más cercano que tenga el puesto, el secundario el siguiente aunque este en otra oficina, de esa forma si un DC deja de funcionar el puesto trabajara con normalidad usando otro DNS de otro DC.
¿por que los puestos y los servidores dependen tanto de los DCs para todo lo relacionado con el directorio activo?, en Windows NT, los puestos y servidores encontraban a los PDC y BDC usando broadcast netbios, esto era un problema por muchas razones que no vienen al caso, con el fin de solucionar este problema, Microsoft acertadamente decidió que los DCs y GCs se localizaran a través del DNS.
Cuando un DC arranca su servicio de Netlogon escribe en el DNS una serie de registros que ayudaran a que los puestos lo localicen y sepan que servicios presta, por esta razón estos registros se denominan "locators"
Puedes ver dichos registros entrando en la consola del DNS y luego en la zona de tu dominio:
Figura, 1. Uno de los registros locator de un servidor DC.
 
Por lo tanto ya conocemos la regla básica del buen funcionamiento del DNS, todas las maquinas tendrán como DNS a los controladores de dominio de su red.
¿Qué DNS tienen que tener configurados los controladores de dominio?, por regla general todo DC se tendrá a sí mismo como DNS primario y al DC más cercano como secundario.
En otros casos se pueden poner como secundarios otros DCs de otros sites, pero esa es una configuración más avanzada que no es el objetivo de este articulo.
Hemos visto que el DCPromo es capaz de configurar nuestro servidor DNS, pero desgraciadamente no realiza el procedimiento completo.
NSlookup es una herramienta de línea de comandos que nos permite interrogar a los servidores DNS, si la ejecutamos se conectara automáticamente al DNS primario que tengamos configurado en la maquina en la que lo corramos.
Figura, 2. Nslookup.

NSlookup nos dice que no puede encontrar el nombre para el servidor con la IP 192.168.0.11, que en nuestro caso es la IP de nuestro DC.
¿Por qué no puedo encontrar el nombre para la IP de mi DC?, cuando DCPromo configura el DNS lo hace para que podamos averiguar que IP tiene un nombre, esto se llama forward resolution, pero para averiguar el nombre que tiene una IP hay que lanzar una reverse resolution.
Para solucionar este problema tendremos que crear una zona de resolución inversa en el servidor de DNS, esta zona de resolución inversa es válida solo para una subred, tendremos que crear una zona por cada subred que tengamos.
En este articulo estamos usando la subred 192.168.0.0 con mascara 255.255.255.0, vamos a crear la zona de resolución inversa para esta red.
Figura, 3. Creando zona de resolución inversa (1)

Figura, 4. Creando zona de resolución inversa (2)

Figura, 5. Creando zona de resolución inversa (3), eligiendo el tipo de zona y si se  almacenara en el AD.

Figura, 6. Creando zona de resolución inversa (4), especificando a que servidores se replicara dentro del Forest.

Figura, 7. Creando zona de resolución inversa (5), indicando la subred de la que se hará cargo la zona.

Figura, 8. Creando zona de resolución inversa (6), especificando si la zona permitirá actualizaciones automáticas de los DHCP y puestos.

Figura, 9. Creando zona de resolución inversa (7), finalizando.

Figura, 10. Creando zona de resolución inversa (8), zona ya creada y con el registro del DC introducido.

¿Cómo se crea un registro PTR?, los PTR son los registros de las zonas de resolución inversa, pulsa sobre la zona con el botón derecho, selecciona "nuevo registro PTR" y rellena el formulario indicando la parte de la IP que no está contenida en la máscara y el nombre completo del servidor al que hará referencia el registro PTR.
Figura, 11. Creación de un registro PTR.

Figura 12. Probando de nuevo con nslookup.

Como podemos ver en la figura 12, el nslookup ya funciona correctamente, gracias a la zona de resolución inversa ya es posible encontrar nombres a partir de IPs, esto tan simple, nos ahorrara múltiples problemas en el futuro.
¿Que pasa con Internet?
Si has configurado todo como te hemos indicado hasta ahora, tu dominio funcionara bien a nivel de DNS, pero tus puestos y servidores no podrán resolver nombres de internet, si tratamos de por ejemplo hacer un ping a http://www.google.com/, no obtendremos respuesta.
Figura , 13. Ping fallido a http://www.google.com/

Para resolver esta situación necesitamos que al menos uno de nuestros DNS sea capaz de resolver direcciones de internet, esto se consigue gracias a los reenviadores o forwarders.
Es importante que comprendamos que los forwarders se configuran para cada servidor DNS, esto significa que :
1) Podemos configurar forwarders en todos nuestros servidores DNS hacia unos controladores de domino concretos que tengan los forwarders hacia internet.
2) Podemos configurar todos nuestros servidores DNS para que tengan como DNS secundarios en las tarjetas de red a los servidores DNS con los forwarders activados (esta solución hace que la resolución sea mas lenta)
3)También podemos configurar forwarders en todos los servidores DNS de nuestra empresa.
La elección es vuestra, aunque a mí me gusta más la opción de configurar forwarders en todos los servidores DNS hacia dos Controladores de dominio concretos que sean los que tengan los forwarders para resolver en internet.
En las empresas pequeñas es común encontrar un solo DC que además sea el único DNS, con lo cual solo hay que configurar un servidor con forwarders.
¿Que dns de internet uso para los reenviadores?, la costumbre es usar los DNS de tu proveedor de internet, otra solución es ver que servidores DNS son mas rápidos y usarlos como reenviadores, ya que esta velocidad puede mejorar el rendimiento de tus consultas en internet.
Puedes ver la lista de DNS de los ISP en http://www.adslzone.net/dns.html o http://www.34t.com/box-docs.asp?doc=886
¿Cómo funcionan los reenviadores?, para contestar a esta pregunta veamos el siguiente diagrama.
Diagrama, 1. Funcionamiento de los reenviadores

Vemos en el diagrama que si un puesto pide resolver una dirección como por ejemplo http://www.google.com/, pasara lo siguiente:
1- El puesto se lo pide al servidor DNS que tenga configurado como primario en la tarjeta de red, ya hemos aprendido que este servidor tiene que ser un DC del dominio en el que este el puesto.
2-El servidor ve que no tiene ninguna zona google.com y por lo tanto usa el reenviador que tenemos configurado para solicitar al servidor DNS que hayamos indicado que le resuelva el registro http://www.google.com/.
3-El servidor DNS de internet resuelve http://www.google.com/ y responde a la solicitud de nuestro DC.
4-El DC cachea la respuesta para poderla responder directamente si algún puesto se la hace de nuevo.
5-El DC responde al puesto con la dirección de http://www.google.com/.
Estupendo, eso es lo que quiero!!!!! ¿Cómo configuro el reenviador?
Es muy sencillo, antes que nada te tienes que asegurar de que tu controlador de dominio sabe llegar a internet y que tu router y tu firewall le están dejando usar el puerto 53 de salida para que pueda acceder al los servidores DNS en internet.
Puedes ver si todo esto se cumple, es tan fácil como usar nslookup para probarlo.
En nuestro caso vamos a probar con un DNS de telefónica (80.58.0.33)
Figura, 14. Probando si el DC puede usar un DNS de internet con NSlookup.

Para conectarnos con un servidor DNS tenemos que usar el comando server dentro de nslookup indicando la ip del servidor.
Después podemos escribir directamente el nombre que queremos resolver.
Si esto no funciona, significa que alguna de las siguientes cosas está fallando:
1) El servidor no sabe cómo llegar a internet, tienes que indicar a tu servidor que use como puerta de enlace predeterminada al dispositivo de tu red que de acceso a internet como por ejemplo un router o un firewall.
2) Tu firewall no está dejando que el servidor salga por el puerto 53 de TCP y de UDP, tienes que configurar una regla en tu firewall que deje salir al DC por el puerto 53 de TCP y UDP.
Para configurar el reenviador o forwarder sigue estos pasos:
Figura, 15. Configurando el reenviador (1)

Figura, 16. Configurando el reenviador (2)

Puedes meter tantos servidores DNS como quieras, también puedes configurar reenviadores para dominios específicos, esta solución se emplea por ejemplo cuando se crean relaciones de confianza o hay varios forest dentro de la misma empresa.
Ahora que ya tenemos configurados los forwarders, nuestro DC ya podrá resolver nombres de internet.
Figura, 17. Probando el forwarder con NSlookup.

Una cosa muy interesante de la que hemos hablado es la cache, la cache permite que los servidores DNS guarden las resoluciones que ya se han hecho y en caso de que se le pida de nuevo a un servidor DNS una consulta que tenga en la cache, el servidor la devolverá directamente de la cache, esto acelera el acceso a internet y es muy interesante para los proxys y los servidores de correo.
Puedes ver la cache haciendo lo siguiente.
Figura, 18. Viendo la cache (1)

Figura, 19. Viendo la cache (2)

¿Entonces como funcionara el DNS si tengo varias oficinas?, si tienes varias oficinas, se pueden dar los siguientes casos:
1) La oficina es pequeña y no cuenta con un DC propio, por lo tanto los puestos tendrás configurados como DNS los DCs de la central y funcionaran como has visto hasta ahora.
2) La oficina tiene bastantes usuarios y cuenta un DC propio, en ese caso, el DC de la delegación se tendrá así mismo como DNS primario y como secundario al de la central, que cuenta con el forwarder, el funcionamiento sería el siguiente:
Diagrama, 2. Resolución en un escenario con DC en delegación.

1- El puesto se lo pide al servidor DNS que tenga configurado como primario en la tarjeta de red, ya hemos aprendido que este servidor tiene que ser un DC del dominio en el que este el puesto, en este caso además es el DC que esta en su delegación.
2-El servidor ve que no tiene ninguna zona google.com y por lo tanto usa el DNS que tiene como secundario para realizar la solicitud al DC en la central, también se puede configurar un forwarder en este servidor para que use al de la central.
3-El servidor DNS de de la central usa su forwarder para hacer la solicitud
4- El DNS de internet resuelve http://www.google.com/ y responde a la solicitud de nuestro DC en la central.
5- El DNS de la central cachea la resolución.
6- El DNS de la central responde al DNS de la delegación con los datos de la resolución.
7-El DC cachea la respuesta para poderla responder directamente si algún puesto se la hace de nuevo.
8-El DC responde al puesto con la dirección de http://www.google.com/.

No hay comentarios:

Publicar un comentario