Bind9

Para implementar esta configuración utilizaremos BIND9 (Berkeley Internet Name Domain), uno de los servidores DNS más utilizados y confiables en entornos de red. BIND9 es un software de código abierto

Pasos Previos

Antes de nada, vamos a configurar una red Nat, en mi caso usare la red 192.168.6.0/24 pero podéis usar la que mas se os adapte

DHCP y IPv6, a vuestro gusto

Consideraciones

  • Es necesario saber que el nombre predeterminado que se suele usar para servidores DNS es ns1, pero yo aproveche una maquina que tenia ya instalada que se llama soterasdns es importante que os fijéis en esto, para que no haya lugar a confusiones.

    El dominio para el DNS es soterasdns.local con lo cual quedaría soteradns.soterasdns.local.

  • Yo configuro el netplan, para que trabaje con la IP estática 192.168.6.100/24, pero vosotros podéis usar la que queráis. Es una buena practica, configurar-la estática.

  • Es esencial, tener conexión a internet desde la máquina.

Instalación y configuración

Actualizamos los repositorios de nuestro sistema, para evitar posibles fallos en instalaciones, actualizaciones y configuraciones de paquetes.

sudo apt update

Antes de empezar con la configuración del servidor DNS, vamos a hacer que la IP de la maquina sea estática. En este caso, como hemos mencionado antes, usaremos la IP 192.168.6.100

sudo nano /etc/netplan/<archivodeconfig>
Configración sencilla con IP 192.168.6.100

Aplicamos los cambioes en el archivo netplan

sudo netplan apply
sudo netplan try

Instalamos el paquete que usaremos para crear y gestionar el servidor DNS, este paquete sera el bind9

sudo apt install bind9 -y

La ruta con los directorios y archivos de configuración del servidor bind9, los encontraremos en el path /etc/bind

Seguido, por seguridad, haremos una copia de archivo que cambiaremos a continuación, esto es una buena practica para que, en caso necesario, se pueda volver al punto de partida.

cd /etc/bind   #Direcorio de configuración principal
sudo cp /etc/bind/named.conf.local /etc/bind/named.conf.local.BKP #Copiamos

Configuramos el archivo named.conf.local, donde especificaremos el tipo de zonas y los directorios donde van a trabajar

/etc/bind/named.conf.local

Con el siguiente comando, comprobaremos si la configuración es correcta y no hay errores de sintaxis

named-checkconf //Si no hay output, el archivo esta bien configurado

Vamos a configurar la zona directa, este archivo lo ubicaremos en el path /etc/bind/zones/db.soterasdns.local Asi que primero vamos a crear el directorio /zones y después aprovecharemos los ficheros default de bind9, para modificarlos a nuestro gusto

Es una buena practica, cambiar el valor de "Serial" cada vez que modifiquemos el archivo, para usarlo como un control de versiones.

mkdir zones                       #Creamos directorio
cp db.local zones/db.haven.local  #Copiamos el default
sudo nano db.haven.local          #Lo modificamos
/etc/bind/zones/db.soterasdns.local

Ahora hacemos lo mismo para la zona inversa, para ello copiaremos el archivo db.127

Es una buena practica, cambiar el valor de "Serial" cada vez que modifiquemos el archivo, para usarlo como un control de versiones.

cp db.127 zones/db.6.168.192  #Copiamos el default
sudo nano db.6.168.192        #Lo modificamos
/etc/bind/zones/db.6.168.192

E igual que hemos hecho antes, vamos a comprobar que los dos archivos de zonas están bien configurados sin errores en la sintaxis

sudo named-checkzone soterasdns.local /etc/bind/zones/db.soterasdns.local  #Directa
sudo named-checkzone 6.168.192.in-addr-arpa /etc/bind/zones/db.6.168.192   #Inversa

Ahora vamos a editar el archivo named.conf.options. Este archivo es muy interesante, ya que nos permite crear reglas ACL para restringir el trafico a nuestro servidor DNS, permitiendo o bloqueando IP's. Además nosotros indicaremos un par de servidores fordwarders, donde se delegara el trabajo de nuestro servidor DNS, en caso necesario.

/etc/bind/named.conf.options

Y como siempre, comprobamos si la sintaxis es correcta, pero en este caso con un comando algo distinto. Si el output esta vacío, la sintaxis es correcta.

named-checkconf

Vamos a hacer una pequeña configuración al archivo /etc/default/named Vamos a añadir -4, esto forzara a que las peticiones sean IPv4 y evitara posibles errores por culpa de las nuevas IPv6.

/etc/default/named

Ahora solo queda resetear y comprobar, el estado del bind9

systemctl restart bind9   #Reseteamos servicio
systemctl status bind9    #Comprobamos el estado

Antes de acabar, vamos a realizar los dos últimos ajustes, para que el servidor funcione correctamente.

Primero, vamos a modificar el enlace simbólico, para que apunte al archivo que nos interesa.

sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
ls -l /etc/resolv.conf  #Comprobamos el enlace

Vamos a comprobar el archivo /etc/resolv.conf, en el caso de que apunte a servidores DNS distintos a los que ves en la foto, edita el archivo para que se vea como la siguiente imagen.

/etc/resolv.conf

Vamos a realizar las comprobaciones necesarias, para ver si la resolucion del DNS, funciona correctamente

Empezaremos comprobando si la resolución en la misma red funciona

nslookup soterasdns

Ahora realizaremos la prueba a un dominio externo, para ver la respuesta. Vemos que funciona perfectamente, pero en este caso nos especifica "Non-Authoritative answer" ya que no tenemos autoridad sobre el DNS google.com

nslookup google.com

Last updated