La idea de esta práctica es ver como se integra Apache con dos dominios virtuales y un DNS, para eso, vamos a configurar dos máquinas virtuales, una con apache y la otra con dns.
Ubuntu Apache: 10.0.0.10/24
Ubuntu DNS: 10.0.0.20/24
Ambos los usaremos con un puente y una red interna.
PARTE 1: Configuración del Ubuntu Server con Apache
Lo primero que haremos como siempre es configurar la red del servidor, para ello editamos la configuración de netplan:
sudonano/etc/netplan/00-installer-config.yaml
Configuramos una IP estática (ejemplo):
network:version:2ethernets:enp0s3:dhcp4:trueenp0s8:# Verifica el nombre de tu interfaz con 'ip a'addresses:-10.0.0.10/24
Aplica los cambios:
Instalación y configuración de Apache
Como ya hemos visto anteriormente, actualizamos el sistema e instalamos Apache:
Verifica que Apache esté funcionando:
Creación de virtual hosts
Vamos a crear dos virtualhosts en apache:
www.miweb.local
blog.miweb.local
Por lo que crearemos sus respectivas carpetas:
Puedes probar con codigo propio pero, sino te dejo un codigo de ejempo a continuación:
www.miweb.local
Crea:
Y añade este contenido:
blog.miweb.local
Crea:
Y añade este contenido:
En ambos casos deberemos establecer permisos correctos para el usuario www-data :
Creación de los VirtualHosts
Como ya hemos comentado antes, vamos a crear dos vhosts en el sites-available, empezando por:
Añade:
Y ahora el otro:
Añade:
Ahora nos toca deshabilitar el sitio por defecto y habilitar los nuevos:
Asegurate por último que Apache está escuchando:
PARTE 2: Configuración Ubuntu Server con Bind9
Instalación y configuración de BIND
En la segunda máquina de DNS vamos con las siguientes configuraciones según la guía que tengo en la otra página pero siendo coherente con las IPs. Sino simplemente:
Podemos comprobar si se ha instalado correctamente con:
Para la configuración editaremos el named.conf y luego las zonas directas e inversa, para esta practica usaremos el dominio midns.local en este servidor para diferenciarlo de miweb.local :
a) Configuración principal de named.conf:
Reemplaza o añade:
b) Configuramos archivos de zona:
Edita el archivo de configuración principal de zonas de BIND9:
Agrega una sección para tus zonas directa y otra para la inversa. Por ejemplo, para el dominio "midns.local":
c) Crear zona directa de dns:
Añade:
d) Crear zona directa de web:
Para este archivo vigila por que el SOA sigue siendo dns.midns.local mientras que los registros A apuntaran a miweb.local
En el registro de SOA se ha puesto como root.miweb.local :
El primer campo (dns.midns.local.) es el servidor maestro (MNAME) de la zona miweb.local. Es el nombre del servidor DNS que tiene la copia maestra de la zona.
El segundo campo (root.miweb.local.) es el correo del responsable (RNAME) de la zona, con el @ sustituido por un punto (sería algo como root@miweb.local).
Si lo prefieres lo puedes sustituir por un hostmaster.miweb.local
Añade:
e) Crear zona inversa:
Añade:
2.4 Verificar configuración y reiniciar
Modificamos el resolv en AMBOS servidores para que fuerce las consultas por nuestro DNS:
Revisamos que esté todo bien escrito y funcional:
PARTE 3: Pruebas y Verificación
3.1 Desde el servidor DNS
Prueba la resolución local:
3.2 Desde el servidor web
Prueba la resolución DNS:
Prueba acceso web por nombre:
3.3 Desde tu máquina cliente conectada a la misma red interna:
Configura temporalmente el DNS de tu adaptador de red para usar 192.168.100.20 y accede desde un navegador:
Troubleshooting
Firewall en Ubuntu
Logs útiles de Ubuntu (Apache):
Cosas para mirarse:
Balanceo: Añade otro servidor Apache y configura DNS round-robin
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Mi Blog</title>
<style>
body {
font-family: 'Georgia', serif;
background: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);
color: #333;
margin: 0;
padding: 20px;
}
.container {
max-width: 800px;
margin: 50px auto;
background: white;
padding: 40px;
border-radius: 15px;
box-shadow: 0 10px 40px rgba(0,0,0,0.2);
}
h1 {
color: #f5576c;
border-bottom: 3px solid #f093fb;
padding-bottom: 10px;
}
.post {
margin: 30px 0;
padding: 20px;
background: #f9f9f9;
border-left: 5px solid #f5576c;
border-radius: 5px;
}
.post h2 {
color: #f5576c;
margin-top: 0;
}
.meta {
color: #888;
font-size: 0.9em;
font-style: italic;
}
.back-link {
display: inline-block;
margin-top: 20px;
color: #f5576c;
text-decoration: none;
font-weight: bold;
}
</style>
</head>
<body>
<div class="container">
<h1>📝 Blog de miweb.local</h1>
<div class="post">
<h2>Primera entrada del blog</h2>
<p class="meta">10 de diciembre de 2024</p>
<p>¡Bienvenido a mi blog! Este es el primer post de ejemplo donde puedo compartir contenido, tutoriales y experiencias sobre servidores web, DNS y configuraciones de red.</p>
<p>Este sitio está alojado en <strong>blog.miweb.local</strong> y es completamente independiente del sitio principal.</p>
</div>
<div class="post">
<h2>Configuración de VirtualHosts</h2>
<p class="meta">10 de diciembre de 2024</p>
<p>Los VirtualHosts en Apache permiten alojar múltiples sitios web en un mismo servidor. Cada dominio puede tener su propio directorio, configuración y contenido totalmente diferente.</p>
<p>Gracias a la configuración DNS con Bind9, podemos acceder a cada sitio por su nombre de dominio local.</p>
</div>
<hr>
<p><strong>Información del servidor:</strong></p>
<ul>
<li>Dominio: blog.miweb.local</li>
<li>Servidor Web: Apache en Ubuntu Server</li>
<li>Servidor DNS: BIND en Ubuntu Server</li>
<li>IP: 10.0.0.10</li>
</ul>
<a href="http://www.miweb.local" class="back-link">← Volver a www.miweb.local</a>
</div>
</body>
</html>
zone "midns.local" IN {
type master;
file "/etc/bind/zones/db.midns.local";
};
zone "miweb.local" IN {
type master;
file "/etc/bind/zones/db.miweb.local";
};
zone "0.0.10.in-addr.arpa" IN {
type master;
file "/etc/bind/zones/db.0.0.10";
};
$TTL 86400
@ IN SOA dns.midns.local. root.midns.local. (
19122025 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
86400 ) ; Negative Cache TTL
;Servidor de nombres
@ IN NS dns.midns.local.
;Registros A a DNS
;@ IN A 10.0.0.20
dns IN A 10.0.0.20
nano /etc/bind/zones/db.midns.local
$TTL 86400
@ IN SOA dns.midns.local. root.miweb.local. (
19122025 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
86400 ) ; Negative Cache TTL
@ IN NS dns.midns.local.
;Registros A de web
@ IN A 10.0.0.10
www IN A 10.0.0.10
blog IN A 10.0.0.10
nano /etc/bind/zones/db.0.0.10
$TTL 604800
@ IN SOA dns.midns.local. root.midns.local. (
19122025 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache
@ IN NS dns.midns.local.
; PTR servidor DNS
20 IN PTR dns.midns.local.
; PTR servidor apache
10 IN PTR miweb.local.
sudo nano /etc/resolv.conf
##y le añades la siguiente linea:
nameservers 10.0.0.20