top of page
  • Foto del escritorThierry PF

Implementación de DNS con NSD - ¡Pongámoslo a prueba!

Actualizado: 16 feb


Hay muchas opciones para implementar DNS (Domain Name System) en una red de datos, en esta ocasión les voy a presentar una forma muy sencilla de hacerlo con NSD (Name Server Deamon) usando Alpine Linux.


A continuación, se muestra los pasos a seguir para poner el servicio en marcha.

 

1-      Instalación de NSD


Primero lo primero …. con el comando sudo apk add nsd, se instala NSD en la distribución de Linux (Alpine)



2 -       Creación el archivo de configuración  


El archivo de configuración es uno de los elementos más importantes de cualquier sistema de servicio DNS, generalmente en NSD es ahí donde se especifica algunos de los parámetros esenciales para el correcto funcionamiento del servicio, tales como la IP del servidor, el puerto, ubicación del archivo de zona, etc.    


En este ejemplo, se especifica la IP del servidor Linux, el puerto donde se espera recibir las solicitudes de DNS, en zonesdir se coloca la ubicación donde se guardará la información de la zona.


En la sección de Zona, el nombre (name) corresponde al nombre del dominio que se quiere implementar en la red, en este caso th.lab, y como último se coloca el nombre del archivo de configuración del dominio (th.lab.zone).



 

3-      Configuración de la zona


Proceso de creación y configuración del archivo de zona del dominio.



El archivo de zona del dominio es fundamental para el servicio de DNS, básicamente es ahí donde se configura todos los DNS records del dominio, lo que es una parte muy esencial para la correcta interpretación de las peticiones de DNS, es esencial a la hora de realizar la traducción (nombres a IP).


Ahora vamos a desmitificar algunos de los parámetros usados a dentro del archivo de zona.


  • La primera línea “; ## th.lab authoritative zone” es básicamente un comentario donde se menciona de lo que se trata el archivo.

  • $ORIGIN, declarado como tipo variable, el ORIGIN corresponde al nombre del dominio (con punto al final), el servidor usará este valor para formar un FQDN (Fully Qualified Domain Name), cuando se especifica un nombre relativo (por ejemplo, www, host, ntp, CE1, CE2) para un DNS Record o para cualquier records con un nombre en blanco o un @.

FQDN = relativo + origin  -->  FQDN = CE1.th.lab  


  • $TTL-          este campo está incluido en las repuestas de DNS, indica por cuanto tiempo un host o cualquier otro sistema DNS puede seguir usando esta información (traducción de nombre a IP) sin ser necesario pedir una actualización.

  • @ IN SOA th.lab. root.th.lab. () SOA (Start Of Authority) básicamente define el inicio del archivo de zona, ahí se especifica alguna información importante para la zona, después de SOA se define el nombre de dominio con un punto al final, justo después se especifica un correo del administrador el dominio reemplazando el @ por. (punto) y punto al final, en este ejemplo se usa root.th.lab. (solo por efecto de demostración) pero aquí se puede especificar cualquier correo valido y para terminar entre paréntesis algunos parámetros de configuración, se pueden dejar con su valor de defecto.

  • En la última sección es donde se ocurre la magia, ahí se especifica los DNS records para el dominio, por ejemplo, un NS records define el actual servidor de nombre de dominio, un A records hace el mapeo entre una dirección IP y un hostname.


Haz clic en este enlace para saber más información acerca de los DNS Records.


4-      Validación de los archivos de configuración

 

Ejecutando el comando nsd-checkconf /etc/nsd/nsd.conf NSD valida que no haya errores en los archivos, en caso de que todo esté bien, es posible que no aparecerá nada en la consola, de lo contrario sería muy importante revisar el archivo donde se especifica el error.



 

5-    Activación del servicio


A continuación, se inicia el servicio de DNS, y se lo configura para que de ahora en adelante se inicia de forma automática en el servidor Alpine.



Pongámoslo a prueba


Listo, ahora el servicio de DNS está en marcha en la red, tiempo de ponerlo a prueba.

 

Les presento parte de la topología con la que estamos trabajando, SERVER-2 es el DNS server (IP= 198.18.135.0/18)




Como se podría observar, hay varios dispositivos incluidos aquí en la topología que ya cuentan con sus respectivos A records en el archivo de zona, ahora vamos a configurar los equipos de red para que realicen sus peticiones de DNS al servidor.


En cisco IOS se puede configurar DNS con los comandos mostrados en la imagen a continuación:



El name-server es la IP del servidor DNS, source-interface (opcional) es la interfaz elegida como origen para las peticiones de DNS y el domain name corresponde al nombre de dominio.


En caso de Ubuntu (SERVER-1) se puede configurar un DNS temporal agregando las siguientes 2 líneas en el archivo /etc/resolv.conf.




Verificación


Desde SERVER-1 se envía ping a CE1, y tal como se esperaba, automáticamente se formó el FQDN ce1.th.lab y solicitó la IP de CE1 al DNS server, quien en este caso checa los DNS records registrados en la zona y devolvió con éxito la información solicitada, y ahora si SERVER-1 empieza a enviar paquetes a la IP de CE1.




El mismo proceso ocurrió con DSW1 (cisco IOS)



Con Wireshark se puede apreciar los mensajes de DNS (query/query response) entre el cliente (DSW1 198.18.189.1) y el servidor.






Gracias por acompañarme hasta aquí, para preguntas o dudas no hesiten en contactarme

¡Hasta la próxima!















55 visualizaciones0 comentarios
  • Facebook
  • Twitter
  • LinkedIn
  • YouTube

©2020 por Thierry-LAB

bottom of page