Cómo configurar un servidor DNS con bind9 en Ubuntu desde cero

Juan Otálora
Juan Otálora
Scrum Master y estudiante de Ingeniería Informática en la UM
Bind es un software de DNS más usado en todo el mundo. Fue especialmente creado para servidores Unix y es comúnmente utilizado en estos sistemas.
Share on whatsapp
Share on twitter
Share on linkedin
Foto: Pixabay
Share on whatsapp
Share on twitter
Share on linkedin

Un servidor DNS tiene una función bastante sencilla de explicar. Pero antes de nada, tenemos que entender que los servidores donde se encuentran la mayoría de páginas y servicios web, sólo son localizables a través de una dirección IP, la cual tiene un aspecto parecido a esto: 46.765.19.34. Obviamente nadie utiliza estas direcciones para entrar a una web, si no que utilizamos nombres de dominio que podemos adquirir por un precio anual, como es el caso de google.es o marca.com. Pero, ¿cómo sabe nuestro navegador cuál es la dirección IP de google.es? Bueno, aquí es donde entran en juego los servidores DNS:

Un servidor DNS es un servicio que traduce nombres de dominio como google.es en direcciones IP como 172.217.168.163. Y esto es lo que vamos a hacer hoy, instalar bind9, un software que permite a nuestro servidor ofrecer el servicio DNS para alguno de nuestros dominios.

Cómo instalar y configurar bind9 en Ubuntu

En mi caso, yo voy a configurar bind9 para el dominio juanoa.com que se localiza en una hipotética máquina 192.168.2.12, pero vosotros podéis hacerlo para cualquiera de vuestros dominios.

Paso 1. Instalar bind9 en Ubuntu

Bien vamos con el primer paso que es bastante sencillo si ya habéis instalado algún programa en Ubuntu. Para instalar bind9 usaremos el siguiente comando:

sudo apt-get install bind9

Una vez descargados todos los ficheros, se nos habrá creado una carpeta dentro de /etc/ denominada bind. Aquí es donde se localizan todos los archivos que vamos a tener que modificar y añadir, por lo que para continuar, nos desplazaremos a dicha carpeta:

cd /etc/bind/

Aquí deberíamos ver los siguientes archivos:

Paso 2. Añadir zona al fichero de zonas

Como hemos visto en la imagen anterior, disponemos de un gran número de ficheros que podemos modificar para añadir configuraciones o eliminar algunas existentes. Mi recomendación, es que solamente modifiquéis los archivos que entendáis como funcionan o por lo menos, los que yo os muestre.

El primer archivo que modificaremos será el archivo de zonas. Estando dentro de la carpeta bind:

sudo nano named.conf.local

En este fichero deberéis añadir todas las zonas que queréis que vuestro servidor DNS maneje. Para que os hagáis una idea, cada zona podría corresponder a un dominio que queráis tratar:

Es importante que establezcáis el type master, a no ser que estéis configurando un DNS esclavo, aunque eso lo podríamos tratar en otro artículo. A continuación, escribiremos la localización de un fichero que será donde añadiremos todos los registros asociados a la zona. Este archivo aun no está creado, pero lo añadiremos a continuación.

Paso 3. Crear el archivo de zonas en la carpeta de bind

Como hemos visto en la imagen anterior, hemos establecido la ruta de un archivo que todavía no existe. Se trata de la base de datos donde se van a localizar todos los registros de nuestra zona. Es importante que el nombre que demos a este nuevo fichero sea el mismo que hemos declarado el el archivo de zonas anterior:

sudo touch db.juanoa.com.zone

El comando touch sirve para crear archivos de cualquier tipo y en nuestro caso lo hemos usado para crear este:

Paso 4. Añadir registros al fichero de una zona

Bien, ahora que ya tenemos el archivo de nuestra zona creado, vamos a configurar todos los registros que irán en su interior. Lo primero que haremos será abrirlo con un editor:

sudo nano db.juanoa.com.zone

Los archivos mínimos que deberemos incluir son los siguientes:

  • Registro SOA. Información general sobre el servidor DNS como nombres o tiempos de expiración, refresco, etc.
  • Registro NS. Dominio donde se localiza el equipo que comunica la información del DNS de un dominio. En nuestro caso, será el propio servidor donde hemos instalado bind9 (192.168.2.12).
  • Registro A. Tanto del nameserver como del dominio principal de nuestra web (www.juanoa.com). Ambos estarán localizados también en la misma máquina que bind9 (192.168.2.12).

Nuestro fichero de zona quedaría de la siguiente forma:

Es muy común dotar a los nameserver de un subdominio propio, el cual suele empezar por nsX, donde X es el número de servidor DNS que lo identifica. Por si no lo sabíais, pueden haber varios servidor DNS asociados a un mismo dominio por si uno de ellos falla.

Este subdominio ns1.juanoa.com tiene que ir asociado a una dirección IP y eso es lo que hacemos en el apartado nameservers – Registro A.

Por último, el registro para la página web principal del dominio: www.juanoa.com, el cual va dirigido a la misma dirección que el resto. Ya tendremos que ser nosotros quien configuremos un servidor Apache o NGINX para procesar las peticiones HTTP.

Paso 5. Añadir otros registros al fichero de zonas para el correo electrónico

Vamos a ver ahora que tendríamos que hacer en nuestro servidor DNS si quisiésemos configurar el correo electrónico de nuestro dominio juanoa.com para poder enviar correos electrónicos desde direcciones como juan@juanoa.com. En el mismo fichero de antes, vamos a añadir los siguientes registros:

  • Registro MX. Sirve para que otros servidores encuentren nuestra estafeta de correo electrónico.
  • Registros A: crearemos varios registros para traducir nombres de dominio como el del registro MX y para a posteriori configurar servicios como POP3 o IMAP.

El resultado de nuestro fichero modificado es el siguiente:

Bien, ya podemos cerrar nuestro fichero pulsando la convinación de teclas Ctrl+X y pulsando seguidamente las teclas Y y Enter para confirmar los cambios.

Para aplicar los cambios, reiniciaremos el servicio:

sudo /etc/init.d/bind restart

Paso 6. Comprobar que todo funcione correctamente

Toca el turno de comprobar que todo funciona de forma correcta y para eso bind nos proporciona una serie de herramientas que verifican la gramática y la sintaxis de nuestros fichero recién modificados. El primero de ellos, comprueba la sintaxis del fichero de zonas y el de configuración, aunque este último no lo hemos tocado:

sudo named-checkconf

El siguiente comando lo usaremos para comprobar que el fichero de la zona que hemos creado sea correcto sintácticamente:

sudo named-checkzone db.juanoa.com.zone juanoa.com

Si aun así tenéis problemas, podéis comprobar el estado del servicio usando el siguiente comando:

sudo service bind9 status

¿Sigues sin poder solucionarlo? ¿Tienes problemas para configurar bind9? Deja en los comentarios cualquier duda que tengas y la intentaré responde lo antes posible ??.

🔥 Otro artículo

Deja una respuesta

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