Curso de servidores linux
¿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
Tipos de servidores DNS
Existen 3 tipos principales:
🔹 1. 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é.
🔹 2. 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.
🔹 3. 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.
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.
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.
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)
¿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)
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
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
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.
Explicación línea por línea
$TTL 300
Tiempo que las respuestas pueden quedarse en caché (5 minutos).
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.
NS
Indica quién es el servidor DNS oficial.
A
Relaciona nombre con IP.
web.lab.local → 192.168.1.50
CNAME
Alias.
www.lab.local → web.lab.local
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.
Reiniciar servicio
1sudo systemctl restart bind9
Firewall
Si usas UFW:
1sudo ufw allow 53/udp 2sudo ufw allow 53/tcp
DNS usa UDP normalmente, pero también TCP.
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
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
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)
¿Qué hemos construido realmente?
Tu Linux Mint ahora es:
- 🔹 DNS autoritativo para
lab.local - 🔹 Servidor web
- 🔹 Proxy inverso
- 🔹 Servidor Node
- 🔹 Base de datos
- 🔹 SSH