Servidor DNS con BIND9: Configuración de Zona Directa
1. Cómo funciona realmente DNS? #
Cuando escribes:
http://web.lab.local
Pasan estas cosas:
-
El navegador necesita una IP, no un nombre.
-
El sistema operativo pregunta: 👉 “¿Qué servidor DNS tengo configurado?”
-
Le hace una consulta tipo:
¿Cuál es la IP de web.lab.local? -
El servidor DNS responde:
web.lab.local → 192.168.1.50 -
Ahora sí, el navegador puede ir a:
http://192.168.1.50
2. Tipos de servidores DNS #
Existen 3 tipos principales:
DNS Recursor (caché) #
Es el que normalmente usas (8.8.8.8, 1.1.1.1). Busca respuestas por internet y las guarda en caché.
DNS Autoritativo #
Es el dueño oficial de un dominio.
Ejemplo:
- Para
lab.local, TU Linux Mint será el que diga la verdad. - Si alguien pregunta por
web.lab.local, tu servidor responde directamente.
DNS raíz y jerárquico #
Internet está organizado así:
.
└── com
└── google.com
Pero en tu práctica trabajaremos con:
lab.local
Que será un dominio interno de laboratorio.
3. Situación actual de tu servidor #
Ya tienes en Linux Mint:
- Nginx (80 → Apache 8080)
- Apache
- Node en 3000
- MariaDB
- SSH
Nada de eso usa el puerto 53.
👉 DNS usa puerto 53 (UDP y TCP) 👉 No hay conflicto con tus otros servicios.
4. PASO 1 - IP fija (MUY IMPORTANTE) #
Un servidor DNS debe tener IP estable.
Si hoy es 192.168.1.50 y mañana cambia a 192.168.1.72, todo deja de funcionar.
Ver tu IP actual #
1ip a
Busca algo como:
inet 192.168.1.50/24
¿Por qué debe ser fija? #
Porque los clientes configurarán como DNS:
192.168.1.50
Si cambia → no resolverán nombres.
5. PASO 2 - Instalar BIND9 #
BIND9 es el servidor DNS clásico en Linux.
1sudo apt update 2sudo apt install bind9 bind9utils bind9-doc dnsutils
¿Qué instala cada cosa? #
bind9→ el servidordnsutils→ herramientas comodigbind9utils→ validación de zonasbind9-doc→ documentación
Comprobar que está activo:
1systemctl status bind9
Debe salir: active (running)
6. Cómo se organiza BIND internamente? #
Configuración principal:
/etc/bind/
Archivos importantes:
named.conf→ archivo principalnamed.conf.local→ donde declaras tus zonasnamed.conf.options→ opciones globalesdb.*→ archivos de zona (registros DNS)
7. PASO 3 - Crear una zona DNS #
Vamos a crear un dominio interno:
lab.local
Esto significa:
👉 Tu servidor será autoridad para todo lo que termine en .lab.local
8. Editar archivo de zonas #
1sudo nano /etc/bind/named.conf.local
Añade:
1zone "lab.local" { 2 type master; 3 file "/etc/bind/db.lab.local"; 4};
¿Qué significa esto? #
zone "lab.local"→ dominio que gestionamostype master→ somos el servidor principalfile→ archivo donde estarán los registros
9. PASO 4 - Crear archivo de zona #
1sudo nano /etc/bind/db.lab.local
Ejemplo completo:
1$TTL 300 2@ IN SOA ns1.lab.local. admin.lab.local. ( 3 2026021101 4 3600 5 1800 6 604800 7 300 ) 8 9@ IN NS ns1.lab.local. 10 11ns1 IN A 192.168.1.50 12 13web IN A 192.168.1.50 14api IN A 192.168.1.50 15db IN A 192.168.1.50 16 17www IN CNAME web.lab.local.
10. Explicación línea por línea #
11. $ 11. TTL 300 #
Tiempo que las respuestas pueden quedarse en caché (5 minutos).
12. 12. SOA #
Start Of Authority.
Contiene:
- servidor principal (
ns1.lab.local.) - email admin (
admin.lab.local.) - número de serie
Serial #
2026021101
Formato recomendado:
AAAAMMDDXX
Si cambias algo → debes subir este número.
13. 13. NS #
Indica quién es el servidor DNS oficial.
14. 14. A #
Relaciona nombre con IP.
web.lab.local → 192.168.1.50
15. 15. CNAME #
Alias.
www.lab.local → web.lab.local
16. Validar configuración #
Muy importante antes de reiniciar:
1sudo named-checkconf 2sudo named-checkzone lab.local /etc/bind/db.lab.local
Si hay errores aquí → no reinicies aún.
17. Reiniciar servicio #
1sudo systemctl restart bind9
18. Firewall #
Si usas UFW:
1sudo ufw allow 53/udp 2sudo ufw allow 53/tcp
DNS usa UDP normalmente, pero también TCP.
19. Probar desde el propio servidor #
1dig @127.0.0.1 web.lab.local
Debe aparecer:
ANSWER SECTION:
web.lab.local. 300 IN A 192.168.1.50
20. Hacer que otros equipos usen tu DNS #
En Windows:
Panel de control → Red → IPv4 → DNS:
Servidor DNS preferido: 192.168.1.50
Probar:
1nslookup web.lab.local
21. Integrarlo con tus servicios actuales #
Ahora puedes usar:
http://web.lab.local→ Nginx → Apachehttp://api.lab.local:3000→ Nodehttp://db.lab.local(solo para pruebas, no expongas MariaDB)
22. Qué hemos construido realmente? #
Tu Linux Mint ahora es:
- 🔹 DNS autoritativo para
lab.local - 🔹 Servidor web
- 🔹 Proxy inverso
- 🔹 Servidor Node
- 🔹 Base de datos
- 🔹 SSH
Resumen del tema
Conceptos clave #
- Servidor de Nombres BIND9: implementación estándar de DNS que opera en el puerto
53(UDP/TCP) en modo autoritativo para dominios locales (ej.lab.local). - Estructura de Zonas (
named.conf.local): definición de zonas maestras (zone "lab.local" { type master; file "..."; };). - Tipos de Registros DNS de Zona Directa:
- SOA (Start of Authority): datos autoritativos, contacto de administración y número de serie (
AAAAMMDDXX). - NS (Name Server): especifica el servidor de nombres oficial de la zona (
ns1.lab.local.). - A (Address Record): resolución directa de nombre FQDN a dirección IPv4.
- CNAME (Canonical Name): alias canónico apuntando a otro registro A.
- SOA (Start of Authority): datos autoritativos, contacto de administración y número de serie (
- Herramientas de Validación y Diagnóstico:
named-checkconf,named-checkzoney consultas DNS condig @IP dominioonslookup.
Qué debes recordar #
La resolución directa en BIND9 traduce nombres a IPs (registros A) mediante zonas maestras validadas con named-checkzone y publicadas en el puerto 53.