Cómo configurar el servidor DNS en Debian

Cómo configurar el servidor DNS en Debian

Que es DNS?

DNS o el sistema de nombres de dominio es el sistema que traduce el nombre de un dominio en su dirección IP correspondiente. Por ejemplo, cuando escribes www.ejemplo.com en su navegador, se asigna a la dirección IP de un servidor web en particular en Internet. Esto facilita a las personas recordar servidores, aplicaciones o cualquier otro dispositivo conectado a Internet sin tener que memorizar sus direcciones IP.

DNS es un sistema jerárquico de bases de datos distribuidas. Tiene una estructura similar a un árbol con nodos dispuestos en capas llamadas dominios. Cada dominio apunta al nodo de algún nivel inferior a sí mismo. En DNS, estos dominios se definen como subdominios, y cada uno reside en su propio servidor DNS, ya sea DNS maestro o DNS primario, que contiene los registros para todas las direcciones IP y nombres de host dentro de su zona de dominio.

Puede haber múltiples servidores DNS secundarios que contienen una copia actualizada de la información contenida en sus servidores DNS maestros correspondientes. Además de resolver consultas utilizando estos datos reflejados, los servidores DNS secundarios también proporcionan tolerancia a fallas en caso de que el maestro principal disminuya respondiendo consultas mismas mientras esperaba respuestas del maestro principal.

Las consultas son procesadas por los servidores DNS recursivos basados ​​en la información en su caché combinada con los detalles del servidor de nombres recursivos especificados en /etc/resolv.archivo conf. El sistema de nombres de dominio es un elemento crítico de la arquitectura de Internet, y es esencial para las computadoras de red en lo que llamamos hoy "Internet".

Los parámetros de configuración de DNS se pueden editar utilizando el "excavar"Herramienta o edición de los archivos de zona directamente. No es aconsejable editar archivos de zona ya que un error podría resultar en que el sitio web sea inaccesible, aunque esto sería un hecho raro. Si no está seguro de lo que está haciendo, use DIG siempre que sea posible. Algunos paquetes de dominio de nombre de Internet Bind o Berkeley vienen con "dnsutils" y "anfitrión", Que se utilizan para consultar servidores DNS e imprimir los resultados. También hay una utilidad NSLookup disponible en la mayoría de los sistemas UNIX que se pueden utilizar para fines similares. Sin embargo, "excavar" suele ser más confiable que ambas herramientas.

¿Cómo funciona el DNS??

DNS funciona como un sistema jerárquico, comenzando en la raíz del dominio. Por ejemplo, si escribe www.ejemplo.comunicarse En su navegador, le pide a su servidor DNS local esta información. Cuando no lo tiene, ya que no es autorizado para ese dominio, reenvía la consulta a uno de sus servidores DNS recursivos aguas arriba. Estos servidores verificarán su caché primero antes de contactar a todos los servidores de nombres autorizados directamente responsables del dominio "Ejemplo" hasta que descubran qué DNS tiene estos datos y los envíe de regreso a la computadora del cliente con una dirección IP para ese dominio.

Como puede ver, cada dominio o subdominio tiene su propio servidor de nombres autorizados, y es responsable de resolver consultas solo para ese subdominio. Por lo tanto, un servidor DNS debe tener toda la información para responder cualquier consulta sobre un dominio en particular. Así que si "ejemplo.comunicarse"No es el dominio principal de sus servidores DNS locales, entonces no podrá resolver consultas para www.ejemplo.com sin reenviarlo arriba primero.

Nota: Siempre que sea posible, configure diferentes servidores de nombres para cada subdominio, ya que cada uno requiere un mantenimiento separado y procedimientos administrativos. De hecho, así es como se diseñó DNS al principio cuando los protocolos TCP/IP se lanzaron en 1983 antes de la invención del sistema de nombres de dominio. Esto se hizo más tarde después de la creación de servicios de registro internic en 1992. Los subdominios se introdujeron como una extensión del protocolo DNS, y estaba destinado solo a fines administrativos.

Cada vez que un servidor DNS recibe una consulta de un cliente, verifica primero el caché para ver si todos los registros necesarios están presentes en él. Si no se encuentra ningún registro o no están lo suficientemente frescos, entonces hace las siguientes consultas recursivas:

Si es una consulta de Internet (IN), entonces resuelve los nombres de host que comienzan en la raíz del dominio y trabajan hacia abajo a través de cada dominio de los padres hasta alcanzar los servidores autorizados para esa zona. Se llama "Comenzando en la parte superior", Y generalmente se hace primero ya que los servidores de nombres responsables de los TLD (.comunicarse, .neto, etc.) tienen velocidades de conexión más rápidas con un mayor ancho de banda que las de los dominios de segundo nivel, E.gramo., "ejemplo". Al hacerlo, su servidor DNS local tiene en cuenta si puede confiar o no la respuesta de sus servidores DNS aguas arriba. Si no tiene acceso a /etc /hosts o /etc /resolv.Los servidores de archivo y DNS utilizados por su ISP están almacenando en caché sus respuestas, entonces es probable que se registre la mayor parte de su tráfico de red. Por lo tanto, esto podría representar una amenaza de seguridad, y si no, solicitará servidores recursivos directamente para esos datos. Se llama "Comenzando en la parte inferior"Dado que los servidores de nombres responsables de los dominios de segundo nivel tienen velocidades de conexión más lentas con un ancho de banda más pequeño que los de los dominios de nivel superior.

Todo este proceso se repite iterativamente hasta que ya sea:

  1. Un servidor de nombres no autorizado responde a una consulta, diciendo que no conoce la información solicitada.
  2. Un servidor de nombres encuentra lo que cree que es una respuesta autorizada para la consulta y la devuelve a la computadora del cliente.
  3. El número de iteraciones preconfiguradas en el nombre de la memoria caché del resolutor expira.

Este tutorial lo guiará a través de cómo configurar su propio servidor DNS interno en Debian. Utilizamos el software de servidor de nombre de bind (bind9) para hacerlo.

Que es bind9?

Bind (dominio de nombre de Internet de Berkeley) es una implementación del Protocolo DNS. En Atar 9, Se han realizado varios números de mejoras principales, incluido el soporte de IPv6, una configuración y control mucho más flexible, un mejor rendimiento del almacenamiento en caché, Soporte EDNS0 para respuestas UDP más grandes y una mejor gestión sobre direcciones IP asignadas dinámicamente.

UNIR es el software de servidor de nombres más utilizado en Internet. Admite una serie de diferentes protocolos de servicio de nombres de dominio, incluidos Bind4 (el dominio original de Nombre de Internet de Berkeley, versión 4), Bind8 (el sucesor histórico de Bind4) y los servicios DNS para IPv6 a través de dos implementaciones separadas: una basada en el demonio, y otro llamado lwres (Resolvente de peso ligero).

Atar 9.5 es la versión estable actual de Bind, y está disponible para descargar tanto en forma y forma binaria desde el Consorcio de software de Internet.

Requisitos previos

Antes de comenzar con el proceso de instalación del servidor DNS en Debian, debe preguntarse ","¿Realmente necesito un servidor DNS??"

Este artículo se centra solo en IPv4, por lo que si está interesado en usar DNS para IPv6, Se debe hacer más trabajo. Esta guía ya no lo ayudará en temas, como agregar registros AAAA manualmente, etc.

Se necesita una nueva instalación de Debian Server para probar los pasos de esta guía. Algunos de los comandos utilizados aquí pueden ser diferentes para su caso, y esas diferencias se señalarán cuando corresponda.

Esta guía asume que tiene un trabajo Red IPv4 y conocimiento para configurar correctamente las direcciones IP estáticas en las computadoras del cliente.

A usuario de sudo y un firewall ya debe configurarse en su sistema.

Empezando

Actualización de su sistema

El proceso de instalación es bastante sencillo, pero veamos en detalle. Primero, debe asegurarse de que su sistema tenga todos los paquetes necesarios instalados y actualizados, utilizando el siguiente comando:

sudo apt-get actualización && sudo apt-get actualización -y

La bandera -y responderá automáticamente sí a todas las confirmaciones que se pueden pedir.

El comando de actualización de apt-get actualizará las listas de paquetes del servidor. Al usar el comando de actualización apt-get, todos los paquetes instalados en él se actualizarán.

Esto tomará algún tiempo dependiendo de la velocidad de conexión de su red y la cantidad de actualizaciones que se instalarán.

Salida de muestra:

Instalación de Bind9

Ahora que su sistema está actualizado, puede continuar con la instalación de un Servidor DNS - Bind. Esto se hará instalando varios paquetes nuevos:

sudo apt install bind9 bind9Utils bind9-doc

El comando anterior se instalará Bind9 y los dos paquetes auxiliares que contienen los archivos requeridos para el funcionamiento adecuado del servidor DNS.

El Bind9 es el software del servidor DNS.

Los bind9Utils son utilidades para administrar Configuración de enlace y se nombran el comando utilizado para controlar UNIR Desde la línea de comando.

Nota: bind9-doc es un paquete de documentación para Atar software.

Salida de muestra:

Instalación del servidor DNS

Después de completar la instalación, puede verificar para asegurarse de que todos los paquetes se hayan instalado correctamente ejecutando el siguiente comando:

nombrado -v

El comando anterior mostrará la versión instalada de BIND y sus dependencias.

Salida de muestra:

Bind comienza automáticamente cuando lo instala. Verifica su estado con el comando SystemCTL, como sigue:

sudo systemctl status bind9

El comando anterior le dará una vista más detallada de las funciones de enlace en su servidor, como tiempo activo, número de zonas, etc.

Obtendrá algo similar a la siguiente salida:

Salida de muestra:


Si alguna vez desea iniciar, detener o reiniciar BIND, simplemente ejecute los comandos a continuación:

SUDO Service Bind9 Inicio
SUDO Service Bind9 Stop
SUDO Service Bind9 reiniciar

El servidor de enlace se ejecutará como usuario de enlace y grupo de forma predeterminada. Esto lo hace razonablemente seguro ya que cualquier cambio en los archivos de zona solo está permitido para este usuario. El servidor de enlace escucha de forma predeterminada en el puerto 53 para consultas DNS. Puedes cambiar este puerto en el llamado.archivo conf Si te gusta. Ejecute el siguiente comando para ver en qué puerto está escuchando su servidor de enlace:

sudo netstat -lnptu | Grep nombrado

Salida de muestra:

El comando anterior muestra que el demonio nombrado se inicia actualmente y escucha en el puerto 53 UDP. Use esta información para verificar si está utilizando el número de puerto correcto.

Si su servidor no está utilizando el puerto 53, puede solucionar esto editando /etc/bind/nombrado.confusión.local y cambiar el número de puerto a lo que quieras. También puede cambiar el nombre del archivo de registro del servidor editando /etc/bind/nombrado.confusión.zonas predeterminadas y agregar declaraciones de registro en la Directiva de opciones.

Configuración de Bind9

Ahora que tienes Bind9 instalado En su servidor, es hora de comenzar a configurarlo.

El directorio de configuración para UNIR está ubicado debajo /etc/bing. Hay algunos archivos importantes en este directorio:

El archivo llamado 'llamado.confusión'es el archivo de configuración principal, que tiene muchos comentarios para aclarar cada sección.

El siguiente archivo de configuración que editaremos se encuentra en /etc/bind/nombrado.confusión.local. Este archivo contiene toda su información de red sobre el servidor y las zonas que desea resolver localmente (de los servidores de nombres).

El llamado.confusión.zonas predeterminadas está ubicado en /etc/bind/nombrado.confusión.zonas predeterminadas. Este archivo contiene información del servidor para las zonas utilizadas por Bind cuando no se le dice explícitamente que use una zona diferente. En otras palabras, zonas que están habilitadas.

Entonces, sigamos adelante y comencemos con una configuración básica.

Salida de muestra:

Por defecto, Bind está configurado para servir solo al localhost. Esto significa que cualquier solicitud que salga de fuera de su servidor será rechazada por Bind a menos que la tenga configurado correctamente.

Si intentaba acceder a un sitio web alojado, por ejemplo, el "154.54.55.Dirección IP de 56 ", lo que sucedería? La respuesta es simple: todas las solicitudes no serían respuesta porque no se especificó ninguna configuración para el "154.54.55.Dirección IP de 56 "en Bind9, y el demonio" nombrado "se negó a atender cualquier solicitud de DNS desde fuera de su interfaz de red.

Primero, estableceremos el servidor DNS para escuchar todas las direcciones IP para enviar solicitudes al servidor DNS desde varios lugares: desde el servidor, desde una red diferente o cuando está utilizando Internet.

Deje hacerlo editando el nombrado.confusión.Archivo de configuración de opciones:

CD /ETC /BIND
sudo nano nombrado.confusión.opción
Reemplacemos escuchar 127.0.0.1;;
por
escuchar-on any;;
escuchar-on-v6 any;

Guarde y cierre el archivo cuando haya terminado. Luego reinicie el demonio bind9 con el comando a continuación:

SUDO Service Bind9 reiniciar

Ahora, hemos habilitado Bind9 para escuchar en todas las interfaces.

Salida de muestra:

Creación de zonas de búsqueda hacia adelante (dominio -> IP)

Las zonas de búsqueda hacia adelante son el tipo de archivos de zona más común. Mapsan un nombre de dominio a una dirección IP y se utilizan para resolver los nombres de dominio a las direcciones IP para correo electrónico, páginas web, etc. El siguiente paso es crear un archivo de zona de búsqueda de reenvío.

Editaremos el "/etc/bind/nombrado.confusión.localArchivo para declarar una zona de reenvío. Para el único propósito de este tutorial, declararemos un dominio llamado "Linuxhint.comunicarse"Y apuntarlo a la dirección IP pública del servidor que se utiliza explícitamente para alojar sitios web externos en Linuxhint.dominio.

Nota: Se debe establecer una dirección IP válida de acceso a Internet en su servidor si planea resolver dominios externos desde su red.

Ahora, editaremos el "/etc/bind/nombrado.confusión.local"Archivo para declarar una zona de búsqueda de reenvío:

sudo nano nombrado.confusión.local

Agregue lo siguiente al final del archivo:

Zona "Linuxhint.com "
tipo maestro;
archivo "/etc/bind/db.Linuxhint.com ";
// Permitir transferir xxx.xxx.xxx.xxx;; // servidor DNS secundario del hoster
;

En este contexto:

Tipo "maestro". Este es un archivo de zona de dominio maestro. El parámetro de tipo se puede configurar en "esclavo"Si está alojando una zona de avance o inversa de solo autoridad y no desea permitir actualizaciones dinámicas.

El "/etc/bind/db.dominio.comunicarse"Es un archivo que contiene los registros para el dominio"Linuxhint.comunicarse"Con un camino completo.

Permitir transferir xxx.xxx.xxx.xxx;. Se requiere permitir la transferencia de zona al servidor DNS secundario del Hoster porque si su proveedor de alojamiento no le permite hacerlo, no puede actualizarlo en línea con el comando "RNDC Recargar"En Localhost. xxx.xxx.xxx.xxx; Dirección IP del servidor DNS secundario (servidores de nombres) que es alojado por su proveedor de alojamiento.

Guarde y cierre el archivo cuando haya terminado.

Salida de muestra:


Ahora, vamos a crear un archivo para cada zona declarada anteriormente:

sudo nano db.Linuxhint.comunicarse

Uplpe el archivo con lo siguiente:

;
; Enlace el archivo de datos para la interfaz de bucle de bucle local
;
$ TTL 604800
@ En SOA NS1.Linuxhint.local. raíz.Linuxhint.local. (
2; De serie
604800; Actualizar
86400; Rever
2419200; Expirar
604800); Caché negativo TTL
;
; Comentario por debajo de tres líneas
;@ In ns localhost.
;@ En un 127.0.0.1
;@ En aaaa :: 1
; Información del servidor de nombre
@ En ns ns1.Linuxhint.local.
; Dirección IP del servidor de nombres
NS1 en un 192.168.0.10
; Intercambiador de correo
Linuxhint.local. En mx 10 correo.Linuxhint.local.
; A - grabar el nombre de host en la dirección IP
www en un 192.168.0.100
Envíe un correo electrónico a un 192.168.0.150
; Registro cname
ftp en cname www.Linuxhint.local.

En este archivo, reemplace los valores LinuxHint con su nombre de dominio, seguido de un punto (.) Esto es necesario, y este no es un error.

Reemplazar “192.168.0 ”con su dirección IP pública, seguido de un punto (.) Esto se requiere para que el servidor sea accesible desde Internet.

Recuerde guardar y cerrar el archivo cuando haya terminado.

Creación de zonas de búsqueda inversa (IP -> Dominio)

Las zonas de búsqueda inversa se utilizan para asignar una dirección IP en un nombre de dominio y generalmente son necesarios para enviar correo electrónico. El siguiente paso es crear un archivo de zona inversa.

El nombre de la zona inversa consiste en la ID de red (invertida) seguido de ".in-addr.arpa".

Por ejemplo:

Si el servidor tiene una dirección IP "20.30.40.50", Su ID de red será"20.30.40", Y el nombre de la zona inversa será"40.30.20.in-addr.arpa".

Si el servidor tiene una dirección IP "191.169.10.50", Su ID de red será"191.169.10", Y el nombre de la zona inversa será"10.169.191.in-addr.arpa".

Ahora, editaremos el "/etc/bind/nombrado.confusión.localArchivo para declarar una zona inversa:

sudo nano/etc/bind/nombrado.confusión.local

Luego, agregue lo siguiente al archivo:

zona "40.30.20.in-addr.arpa "
tipo maestro;
notificar no;
archivo "/etc/bind/db.10 ";
;

Luego, crearemos un archivo para la zona declarada anteriormente:

sudo nano db.10

Luego poca el archivo con el siguiente:

;
; Atar el archivo de datos inverso para la interfaz de bucle de bucle local
;
$ TTL 604800
@ En Soa Linuxhint.local. raíz.Linuxhint.local. (
2; De serie
604800; Actualizar
86400; Rever
2419200; Expirar
604800); Caché negativo TTL
;
;@ In ns localhost.
; 1.0.0 en PTR localhost.
; Información del servidor de nombre
@ En ns ns1.Linuxhint.local.
; Reverso de búsqueda para el servidor de nombres
10 en PTR NS1.Linuxhint.local.
; PTR registrar la dirección IP al nombre de host
100 en PTR www.Linuxhint.local.
150 en correo PTR.Linuxhint.local.
# Fin del documento

Verificación de sintaxis de configuración de enlace

Ahora, verificaremos la sintaxis de configuración en cada archivo para obtener errores. Para hacer esto, tendremos una consulta nombrada con el siguiente comando:

sudo llamado checkconf

Si no hay errores, este comando volverá al shell en blanco:

Salida de muestra:

Conclusión

DNS es uno de los servicios más importantes en un servidor. Todo el mundo lo usa. Todos lo necesitan y, al final, no desea que sus máquinas se pierdan en la red porque no pueden encontrarse entre sí. Este artículo proporciona una guía sobre la configuración de su servidor DNS interno en Debian utilizando el software de servidor de nombre de Bind (Bind9). Para obtener más información, consulte los otros artículos que se encuentran en Linuxhint.comunicarse.