Administración del servidor

Instalar, configurar y mantener el servidor DNS de Linux

El DNS (Sistema de nombres de dominio) es un sistema de nombres para computadoras, el servicio que hace eso se llama servidor DNS, el cual traduce una dirección IP a una dirección legible por humanos. Este proceso es la columna vertebral de Internet y un servicio muy importante en para tu servidor, por lo que, a partir de ese punto, discutiremos acerca del servidor DNS o específicamente el servidor DNS de Linux, cómo instalarlo, configurarlo y hacerle mantenimiento.

 


 

El archivo /etc/hosts

Sin la necesidad de un servidor DNS, cada sistema tendrá que mantener su propia copia de la tabla de los nombres de host y sus direcciones IP.

En los sistemas Linux, esta tabla es el archivo /etc/hosts.

Entonces, incluso si no tienes un servidor DNS o el servidor DNS no está disponible, este archivo puede traducir las direcciones IP a nombres utilizando el archivo /etc/hosts.

Eso significa que el sistema consultará este archivo primero antes de ir al servidor DNS y, si encuentras el dominio, lo traducirás sin ir a ningún servidor DNS.

Intenta editar /etc/hosts y escribe lo siguiente:

127.0.0.1              google.com

Luego ve a tu navegador y escriba google.com y ve los resultados. Si tienes instalado un servidor Apache en tu sistema y tu servidor local se está ejecutando, mostrará la página de índice del servidor local en lugar de la página de google.

Linux DNS Server

Puedes traducir google.com a cualquier otra dirección IP de cualquier sitio y ver el resultado para asegurarte.

Entonces, lo qué está haciendo este archivo es traducir direcciones IP a nombres, pero para la red conectada en que está conectado el servidor. ¿Qué sucedería entonces con las redes externas y cómo se pueden mantener todos estos registros para todos los sistemas?

¿Todos gestionarán su propio archivo / etc / hosts y lo actualizarán ellos mismos? Por supuesto no.

 

Nombres de dominio

Cuando visitas un sitio web, escribes el FQDN (nombre de dominio completo) o el nombre de dominio de esta manera: likegeeks.com o www.google.com

Cada dominio consta de componentes de dominio, el punto separa estos componentes.

El texto com es el componente de dominio de nivel superior y google es el componente de dominio de segundo nivel y www es el componente de dominio de tercer nivel

En realidad, cuando visitas cualquier sitio web, el navegador agrega silenciosamente un punto al final, pero no visible para, por lo que el dominio real seria www.google.com. Observa el punto después de .com, este punto se llama dominio raíz.

¿Pero, por qué se agrega este dominio raíz o el punto?

Debido a que este punto es servido por los servidores de nombres raíz. Al momento de este post, hay 13 servidores de nombres de raíz en el mundo, puedes pensar en ellos como el cerebro de Internet, si se APAGAN el mundo estará sin Internet.

¿Y por qué 13?

Porque tal vez un terremoto o un desastre natural ocurra en un lugar del mundo puede destruir un servidor raíz para que los demás sirvan hasta que el servidor dañado vuelva a estar en línea.

Esos servidores de nombre raíz se nombran así: a.root-server.net, b.root-server.net, y así sucesivamente.

 

Nombres de dominio de nivel superior (TLD)

Nosotros vi un componente de dominio de nivel superior, el dominio com.

Los dominios de nivel superior (TLD) se dividen en categorías basadas en aspectos geográficos o funcionales.

Hay más de 800 dominios de nivel superior en la web al momento de escribir esta publicación.

Las categorías de dominios de nivel superior son:

  • Dominios de nivel superior genérico como (.org, .com, .net. Edu y así sucesivamente).
  • Dominios de nivel superior de código de país como (.us, .ca, etc.) correspondientes a los códigos de país para los Estados Unidos y Canadá, respectivamente.
  • Los nuevos dominios de nivel superior de marcas como (.Linux, .Microsoft, .CompanyNamey así sucesivamente).
  • Dominios de nivel superior de infraestructuracomo dominio

 



Subdominios

Cuando visitas un sitio web como mail.google.com, el correo aquí es un subdominio de google.com.

Solo los servidores de nombres de mail.google.com conocen todos los hosts que existen debajo de él, por lo que google responde si hay un subdominio de correo o no, los servidores de nombres raíz no tienen ni idea de eso.

 

Tipos de servidores DNS

Hay tres tipos de servidores DNS:

  • Servidores DNS primarios: Contienen los archivos de configuración del dominio y responden a las consultas DNS.
  • Servidor DNS secundario: funcionan como una copia de seguridad y distribución de carga.Los servidores primarios conocen la existencia de los servidores de nombres secundarios y les envían actualizaciones.
  • Almacenamiento en caché del servidor DNS: lo único que hacen es almacenar en caché las respuestas DNS para que no tengas que volver a preguntar al servidor DNS principal o secundario.Puedes hacer que tu sistema funcione fácilmente como un servidor de almacenamiento en caché, como veremos más adelante en esta publicación.

 

Configurando el servidor DNS de Linux

Hay muchos paquetes en Linux que implementan la funcionalidad DNS, pero nos enfocaremos en el servidor DNS BIND. Este se usa en la mayoría de los servidores DNS de todo el mundo.

Si utilizas una distribución basada en Red Hat como CentOS, puede instalar el paquete así:

$ dnf -y install bind

O en sistemas basados en Debian como Ubuntu:

$ apt-get install bind9

Una vez completada la instalación, puede iniciar el servicio y habilitarlo para que se ejecute en el momento del inicio.

 


Configurando BIND

La configuración del servicio se encuentra en el archivo /etc/named.conf.

Hay algunas sentencias que BIND utiliza en un archivo como:

options                  utilizado para la configuración global de BIND.

logging                 qué se puede registrar y qué se puede ignorar. Te recomiendo que revises el servidor syslog de Linux.

zone                       define la zona DNS.

include                  para incluir otro archivo en named.conf.

Desde la sentencia opciones, puedes ver que el directorio de trabajo para BIND es el directorio  /var/named .

La declaración de zona le permite definir una zona DNS.

Como el dominio google.com que también tiene subdominios como mail.google.com y analytics.google.com y otros subdominios.

Cada uno de estos tres (el dominio y los subdominios) tiene una zona definida por sentencia zone.

 

Definiendo una zona primaria

Sabemos por los tipos de servidor DNS que hay servidores DNS primarios, secundarios y de caché.

Los primarios y secundarios se consideran igualmente autoritativos en sus respuestas, a diferencia del servidor de almacenamiento en caché.

Para definir una zona primaria en el archivo  /etc/named.conf  puedes utilizar la siguiente sintaxis:

El archivo que contiene la información de la zona se encuentra en el directorio /var/named, ya que este es el directorio de trabajo que conocemos de las opciones.

Ten en cuenta que el software del servidor o el panel de alojamiento crea automáticamente este archivo con este nombre, de modo que si tu dominio es example.org, el archivo será /var/named/example.org.db.

El tipo es master, lo que significa que esta es una zona primaria.

 

Definición de una zona secundaria

Es igual que la definición de una zona primaria con pocos cambios.

En las zonas secundarias, el dominio es el mismo que en las primarias y el tipo slave aquí significa que esta es una zona secundaria, la opción de masters para enumerar las direcciones IP del servidor de nombres primarios y finalmente, el archivo es la ruta de acceso de los archivos de zona primarios.

 

Definición de una zona de almacenamiento en caché

Es necesario, pero no obligatorio tener una zona de almacenamiento en caché, de manera que disminuyas las consultas al servidor DNS.

Para definir una zona de almacenamiento en caché, necesitas definir tres secciones de zona, la primera es la siguiente:

La primera línea contiene un punto que son los servidores de nombres raíz. El tipo hint; significa una entrada en la zona de caché y el archivo ” root.hints ” ; especifica el archivo que contiene los servidores raíz (el servidor de nombre de raíz 13). Puedes obtener el último servidor de nombres raíz de http://www.internic.net/zones/named.root

La segunda zona es definida en el archivo /etc/named.rfc1912.zones e incluida en /etc/named.conf a través de la directiva include que ya está incluida por defecto.

La tercera zona define la búsqueda inversa para el localhost.

Poner estas tres zonas en /etc/named.conf hará que tu sistema funcione como un servidor DNS de almacenamiento en caché. Ahora debes escribir el contenido de los archivos a los que se hace referencia como likegeeks.com.db, localhost.db y 127.0.0.rev

Estos archivos contienen los tipos de registros DNS para cada zona con algunas opciones. Entonces, ¿qué son esos tipos de registros DNS y cómo están escritos?

 


Tipos de registros DNS

Los archivos de la base de datos consisten en tipos de registros como SOA, NS, A, PTR, MX, CNAME y TXT.

Empecemos entonces con cada tipo de registro y veamos cómo está escrito.

SOA: inicio del registro de autoridad

El registro SOA describe las entradas DNS del sitio con el siguiente formato:

La primera línea comienza con el dominio example.com. y termina con un punto. Es lo mismo que la definición de zona en el archivo /etc/named.conf .

Ten en cuenta que los archivos de configuración de DNS son extremadamente exigentes.

La palabra IN significa registro de Internet.

La palabra SOA significa registro de inicio de autoridad.

El ns1. example.com. es el servidor de nombres de dominio.

mail.host.com. es el correo electrónico del administrador de dominio. Puedes observar que no hay signo @ y se reemplaza con un punto, y hay un punto final.

La línea 2 es el número de serie que se utiliza para informar al servidor de nombres la hora de actualización del archivo, por lo que, si realizas un cambio en los datos de la zona, debes incrementar este número. El número de serie tiene el formato YYYYMMDDxx donde xx comienza 00.

La línea 3 es la frecuencia de actualización en segundos. Indica la frecuencia con que los servidores DNS secundarios deben consultar el servidor principal para buscar actualizaciones.

La línea 4 es la tasa de reintento en segundos. Este es el tiempo que demora el servidor DNS secundario después de intentar conectarse al servidor DNS primario y no puede alcanzarlo. El número especificado de intentos de segundos.

La línea 5 es la directiva de vencimiento. Si el servidor secundario no puede conectarse al servidor primario para una actualización, debe descartar el valor después de la cantidad especificada de segundos.

La línea 6 dice que los servidores de almacenamiento en caché no pueden conectarse al servidor DNS primario, esperan antes de que caduque una entrada, esta línea define el tiempo de espera.

NS: registros del servidor de nombres

Puedes utilizar los registros del servidor NS para especificar los servidores de nombres para una zona.

Puedes escribir registros NS de esta manera:

No es necesario tener 2 registros NS, pero se prefiere tener servidores de nombres de respaldo.

A y AAAA: Registros de direcciones

El registro A mapea el nombre un host a una dirección IP:

support IN          A             192.168.1.5

Si tienes un host en support.example.com en la dirección 192.168.1.5, puedes escribir la sintaxis como en el ejemplo anterior.

Nota: el host está escrito sin un punto.

PTR: registros de puntero

El registro PTR es para hacer la resolución de nombre inversa, les da una dirección IP y devuelve el nombre de host.

Esto es lo contrario de lo que hace el registro A.

192.168.1.5        IN            PTR        support.example.com.

Aquí tecleamos el nombre de host completo con punto y final.

MX: Registros de intercambio de correo

El registro MX habla de los archivos del servidor de correo.

example.com.   IN           MX         10           mail

El dominio termina con un punto, el número 10 es la importancia del servidor de correo, si tiene varios servidores de correo, el número menor es el menos importante.

CNAME: Registros de nombres canónicos

Los registros CNAME son como accesos directos para nombres de host.

Supongamos que tienes un sitio que tiene un nombre de host de lo que sea –bignameis.example.com y dado que el sistema es un servidor web, se puede crear un alias de registro www o CNAME para el host.

Puedes crear un registro CNAME para crear el nombre www.example.com:

La primera línea le dice al servidor DNS acerca de la ubicación del alias, la segunda línea crea el alias que apunta a www.

Registros TXT

Puedes poner cualquier texto en los registros TXT, como tu información de contacto o cualquier otra información que desees que las personas conozcan cuando consulten tu servidor DNS.

Además, puede utilizar el registro RP para poner la información de contacto:

example.com.   IN           TXT         " YOUR INFO GOES HERE"

Also, you can use the RP record to put the contact information.

example.com.   IN           RP           mail.example.com.         example.com.

 

Valor TTL del DNS

En /etc/named.conf en la parte superior hay una entrada $TTL.

Esta entrada informa a BIND sobre el tiempo de vida de cada registro individual.

Toma un valor en segundos como 14400 segundos (4 horas), por lo que los servidores DNS almacenarán en caché su zona hasta cuatro horas y luego consultarán al servidor DNS nuevamente.

Puedes bajar el valor, pero el valor predeterminado correcto. A menos que sepas lo que estás haciendo.

 

Captura de errores de configuración

Cuando escribes tus archivos de zona, tal vez olvida un punto o espacio o cualquier otro error.

Puedes diagnosticar errores del servidor DNS de Linux desde el log. El servicio BIND a través de mensajes de error en /var/log/messages almacena errores, puedes utilizar el comando tail para ver el registro de errores en tiempo real usando la opción -f.

$tail -f /var/log/messages

Por lo tanto, cuando escribes un archivo de zona o modifica /etc/named.config y reinicias tu servicio, puedes identificar fácilmente el error en el registro.

 


Comando Host

Después de haber agregado o modificado tus registros con éxito, puedes utilizar el comando hosts para ver si tu host se resolvió correctamente.

Si le das un hostname, responderá con las direcciones IP correspondientes.

$ host example.com

Además, puedes realizar búsquedas inversas.

$ host 192.168.1.5

Puedes revisar la publicación comando host y dig

 

Comando Whois

El comando whois se usa para obtener los detalles del propietario del dominio.

Además, las direcciones de correo electrónico del propietario y los números de teléfono de contacto.

$ whois example.com

 

El comando rndc

La herramienta rndc se puede utilizar para administrar el servidor de nombres de forma segura.

Puedes verificar el estado del servidor DNS de Linux de esta manera:

$ rndc status

Además, si realizas un cambio en cualquiera de los archivos de zona, puede volver a cargar el servicio sin reiniciar el servicio nombrado.

$ rndc reload example.com

Aquí recargamos el archivo de zona example.com.

Puedes volver a cargar todas las zonas así:

$ rndc reload

O tal vez agregar nuevas zonas o cambiar la configuración del servicio, luego puedes volver a cargar la configuración de esta manera:

$ rndc reconfig

 

Resolver del DNS de Linux

Hemos visto cómo funciona un servidor DNS de Linux y cómo configurarlo. La otra parte es el cliente que se está comunicando con el servidor DNS.

El cliente es el resolver, puedes verificar el archivo de configuración /etc/resolv.conf

En las distribuciones basadas en Debian, puedes verificar el directorio /etc/resolvconf/resolv.conf.d/.

El archivo /etc/resolv.conf contiene los servidores DNS locales que usa el sistema.

La primera línea es usada para el dominio de búsqueda predeterminado, y la segunda línea indica la dirección IP del servidor de nombres.

Puede utilizar tu propio servidor DNS una vez que ejecutes tu servicio BIND, simplemente escríbelo en el archivo resolv.conf .

Trabajar con el servidor DNS de Linux es bastante fácil. Espero que la publicación te sea útil y fácil.

Gracias.

Mokhtar Ebrahim
Estoy trabajando como administrador de sistemas Linux desde 2010. Soy responsable de mantener, proteger y solucionar problemas de servidores Linux para múltiples clientes de todo el mundo. Me encanta escribir guiones de shell y Python para automatizar mi trabajo.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *