Infraestructura de red profesional basada en software libre: Samba 4 AD DC (controlador de dominio) sobre Ubuntu Server y virtualización de clientes con KVM/QEMU + libvirt, con conectividad directa de capa 2 mediante un bridge.
Alternativa de código abierto a Windows Server para centralizar identidades, DNS y administración jerárquica por Unidades Organizativas (OU).
| Archivo | Descripción |
|---|---|
config.sh |
Configuración central (dominio, contraseñas, rutas, red). |
lib.sh |
Funciones comunes (logs, bridge, VNC, comprobaciones). |
dominio.sh |
Configura y provisiona el Samba AD DC. |
create_vm.sh |
Crea el bridge y una VM desde una ISO de instalación. |
clonar.sh |
Clona una VM plantilla con virt-clone. |
crear_cliente.sh |
Despliega un cliente desde un disco base ya preparado. |
crear_usuarios.sh |
Alta rápida de usuarios en una OU. |
gestion_usuarios.sh |
Crea una OU (si hace falta) y da de alta un usuario. |
import_iso.sh |
Extrae kernel/initrd de una ISO para arranque PXE. |
instruciones |
Guía de orden de ejecución y resolución de problemas. |
presentacion.html |
Presentación del proyecto. |
Todos los scripts leen sus variables desde config.sh. Para no editar el archivo,
puedes exportar variables antes de ejecutar:
sudo ADMIN_PASS='OtraClave!' REALM=MIEMPRESA.LOCAL ./dominio.sh
Variables principales: REALM, DOMAIN, ADMIN_PASS, DNS_FORWARDER,
BRIDGE_IFACE, BRIDGE_BACKEND, VERIFY_CONNECTIVITY, STORAGE_DIR, VM_RAM,
VM_VCPUS, VM_DISK_GB, SERVER_IP.
⚠️ Seguridad: cambia
ADMIN_PASSantes de usar en producción. No la dejes en texto plano en un repositorio compartido.
# 1. Provisionar el controlador de dominio (crea el bridge y el AD DC)
sudo ./dominio.sh br0
# 2. Crear la VM maestra/plantilla desde una ISO
sudo ./create_vm.sh
# 3. Clonar la plantilla tantas veces como clientes necesites
sudo ./clonar.sh Windows10_Base Cliente01
# 4. Gestión de identidades
sudo ./crear_usuarios.sh
sudo ./gestion_usuarios.sh
dominio.sh:
/etc/hosts.samba, krb5, winbind, samba-ad-provision, etc.dns forwarder./etc/resolv.conf a 127.0.0.1.samba-ad-dc.tecnolobato y el usuario usuario_test si no existen.La creación del bridge es segura e idempotente (ensure_bridge en lib.sh):
br0 ya existe y tiene IP, se reutiliza sin tocar nada.nmcli (persistente, sin pelear
con NM ni perder la conexión); si no, usa configuración manual conservando la
IP/MAC y la ruta por defecto.BRIDGE_BACKEND=auto|nmcli|manual y verificación con
VERIFY_CONNECTIVITY=1|0. Modo desatendido con ASSUME_YES=1.| Script | Uso |
|---|---|
create_vm.sh |
Crea bridge + VM nueva desde ISO. |
clonar.sh |
Clona una plantilla (pausa/reanuda la original si corre). |
crear_cliente.sh |
Copia un disco base y arranca el cliente (--import). |
En todos los casos el script muestra la URL VNC real asignada dinámicamente
(--graphics vnc,port=-1).
# Añadir usuario
sudo samba-tool user create nombre 'Contraseña123!' --userou="OU=tecnolobato"
# Borrar usuario
sudo samba-tool user delete nombre
# Añadir a administradores
sudo samba-tool group addmembers "Domain Admins" nombre
# Crear / eliminar OU
sudo samba-tool ou create "OU=Alumnos,${BASE_DN}"
sudo samba-tool ou delete "OU=Alumnos,${BASE_DN}"
ensure_bridge
verifica la conectividad y revierte si falla. Si necesitas forzar el backend,
usa BRIDGE_BACKEND=nmcli (o manual) y revisa nmcli connection show.samba-tool no encontrado: ejecuta primero dominio.sh.virsh list) y usa el
puerto que muestra el script.SERVER_IP y usa reservas DHCP para que los accesos
VNC no se rompan.Se implementa una alternativa libre a Windows Server con Samba 4 AD DC. La virtualización KVM/QEMU despliega los clientes y un bridge de red otorga conectividad de capa 2 a cada VM. La infraestructura centraliza seguridad, identidades, resolución de nombres (DNS) y administración jerárquica mediante OU, todo gestionado desde la terminal de Linux.