DNS con ubuntu server
De la misma forma que configuramos el DHCP, el servicio de DNS irá junto a este. Utilizaremos en esta ocasión el paquete de isc Bind9
Última actualización
De la misma forma que configuramos el DHCP, el servicio de DNS irá junto a este. Utilizaremos en esta ocasión el paquete de isc Bind9
Última actualización
Veremos cómo configurar un servidor DNS primario con zonas directa e inversa para la resolución de nombres en nuestra red local. Configuraremos el uso de forwarders
para las consultas externas y dicho servidor DNS será autoritativo
para nuestra red.
Zona directa: Utilizada para resolver nombres de dominio a direcciones IP. La mayoría de las configuraciones de DNS en entornos de hosting web y servicios de red utilizan zonas directas.
Zona Inversa: Utilizada para realizar la búsqueda inversa y asociar direcciones IP con nombres de dominio. Es especialmente útil en situaciones donde necesitas conocer el nombre de dominio correspondiente a una dirección IP específica.
Empezaremos con una MV Ubuntu server en una red NAT con con la siguiente información:
Actualizamos los repositorios de nuestro sistema:
Una vez hecho esto, procedemos a instalar el paquete Bind9 y sus utilidades:
Podemos comprobar si se ha instalado correctamente con:
Empezamos con la configuración:
El primer fichero a editar sería: /etc/bind/named.conf.local
Aquí será donde definiremos las zonas: directa e inversa, para el dominio alexdns.local haciendo uso de la cláusula zone.
Cada bloque de zona incluirá de que tipo será la zona y el fichero en el que estarán definidas las características, propiedades y entidades del dominio, para cada zona.
Una práctica adecuada sería hacer una copia de seguridad de los archivos de configuración, como es el caso del archivo named.conf.local
para lo cual podemos hacer:
Editamos el siguiente archivo:
El archivo debe contener lo siguiente:
listen-on { }: la dirección donde estará escuchando Bind9, si no sabes con exactitud, utiliza la opción any
.
allow-query { }: desde que redes o ip es posible realizar consultas, normalmente la misma red a la que pertenece el servidor DNS.
forwarders { }: define servidores DNS a los cuales Bind9 reenviará las consultas que el no pueda resolver.
recursion: define la recursión en la búsqueda de registros
Editamos el archivo de configuración para forzar las peticiones IPv4 y evitarnos resoluciones de IPv6. Para ello vamos a:
Y editamos el archivo:
Antes de continuar conviene revisar que no haya problemas:
Si todo rula bien, ahora deberíamos poder hacer ping desde la máquina cliente a un dominio cualquiera y debería funcionar:
Vamos ahora a configurar nuestros propios archivos y registros de zona para el servidor!
Edita el archivo de configuración principal de zonas de BIND9
:
Agrega una sección para tu zona directa y otra para la inversa. Por ejemplo, para el dominio "alexdns.local
":
Donde:
zone "XXXXXX"
: define la zona directa o inversa en notación de dominio o dirección IP inversa para la red 10.0.0.0
.
type master;
: Esto le indica que este servidor DNS es el servidor maestro (master) para esta zona.
file "/etc/bind/zonas/db.XXXXX";
: Especifica la ubicación del archivo de zona que contiene la información de resolución directa o inversa.
Para comprobar que la configuración es la correcta y no hayamos cometido errores en la sintaxis, usamos el comando:
Partiendo de los ficheros de zona predeterminados como es el de db.empty
o db.127
podemos editarlos o crear nuevos:
Al terminar, entramos a editar el archivo de zona directa:
Añade registros de recursos (A, MX, etc.) según tus necesidades. Aquí hay un ejemplo básico:
Este ejemplo configura un servidor DNS para el dominio "alexdns.local" con direcciones IP asociadas a "bindserver.alexdns.local
" .
Puedes verificar que la configuración sea correcta usando la herramienta named-checkzone
:
Si no hay errores, deberías ver un mensaje indicando "zone alexdns.local/IN: loaded serial 1 OK
".
Si deseas configurar la zona inversa para asociar direcciones IP con nombres de dominio, ahora debemos editar el otro archivo copiado anteriormente:
Añade registros de recursos (A, MX, etc.) según tus necesidades. Aquí tienes el ejemplo básico:
Fíjate que en el registro de IP ponemos el numero correspondiente al host de nuestra IP.
Ahora puedes proceder a probar la configuración con named-checkzone
:
Asegúrate de que tu máquina esté configurada para usar el servidor DNS local. Edita tu archivo /etc/resolv.conf
y agrega la siguiente línea:
Reinicia el Servicio BIND9:
Recuerda que para que esto funcione correctamente ahora deberás incluir la IP del servidor como DNS en el cliente.
Para verificar que la configuración funciona correctamente, usa el comando nslookup
para buscar los dominios configurados, por ejemplo:
nslookup client
nslookup bindserver
nslookup client.alexdns.local
nslookup bindserver.alexdns.local
Esto debería resolverse correctamente y mostrar un output parecido a esto:
Gracias a Alina por hacerlo notar y buscar la solución al problema
Como habrás visto arriba, el servidor sigue mostrándonos respuestas no-autoritativas. Esto es debido a que las aplicaciones que hacen uso del resolver de systemd-resolved
escuchan en la interfaz de loopback en la dirección 127.0.0.53
, no a nuestro DNS.
El archivo /etc/resolv.conf
es un enlace simbólico a otro fichero de configuración. Si revisamos sus enlaces:
Veremos que el systemd-resolved
, apunta a un archivo en:
Entonces, modificamos el enlace simbólico haciendo lo siguiente para hacerlo apuntar al fichero adecuado:
Ahora, comprueba haciendo:
Vuelve a probar el nslookup
ahora y verás que la IP es correcta.
Recuerda adaptar los nombres de dominio y las direcciones IP según tu configuración. Después de completar estos pasos, tu máquina Ubuntu Desktop actuará como un servidor DNS local para el dominio que hayas configurado. Puedes agregar entradas adicionales a tu zona directa según sea necesario.
Para editar el archivo de zonas de forma más cómoda puedes usar VSCode con la extensión