Files
dtic-DIIAA/docs/ambito/dtic-DASUTEN/P2601.09_DASUTEN-sin-DC.md
T

12 KiB

Plan: DASUTEN sin Domain Controller (Modo Workgroup)

Grupo de Trabajo: DASUTEN

Código: P2601.09
Fecha: 27 de marzo de 2026
Autor: Sistema ADN
Versión: 2.2
Estado: 🚧 EN EJECUCIÓN (Fase 2 completada, Fase 3 pendiente — Creación VM PC Cliente)

📋 Resumen Ejecutivo

Evaluar si el sistema DASUTEN puede operar sin la dependencia de un Domain Controller (AD DS), utilizando únicamente un SQL Server y una PC cliente en modo Workgroup. Esto simplifica significativamente la infraestructura y elimina los problemas de red asociados al dominio.

Motivación

Los intentos previos (P2601.06 a P2601.08) demostraron que la topología con DC introduce complejidad de red que entra en conflicto con el router del ISP de la oficina DASUTEN. Al eliminar la dependencia del DC, se reducen los puntos de falla y se simplifica la conectividad.

Decisiones clave

  • VMs existentes preservadas: dasu-srvv-dc (VM 100), dasu-srvv-sql (VM 101) y dasu-pcv (VM 102) fueron apagadas y deshabilitadas del autostart. Pueden reactivarse si se decide retornar al enfoque con DC.
  • Enfoque nuevo: VMs limpias en modo Workgroup, sin Active Directory.
  • Red provista por ISP: Tanto srv-dasu como las VMs (dasu-sql2, dasu-pcv2) y la PC física (dasu-pc) obtienen IP directa del router del ISP. No se usa red privada 10.0.100.x.

🌐 Topología de Red

Internet
   │
Router ISP (192.168.1.1 — gateway confirmado)
   │
   ├── srv-dasu     → DHCP del ISP: 192.168.1.13 (vmbr0 bridge sobre enp33s0)
   │    ├── dasu-sql2  (VM 103) → DHCP del ISP: 192.168.1.14 ✅ VM creada
   │    └── dasu-pcv2  (VM 104) → DHCP del ISP: 192.168.1.15 ✅ VM creada
   │
   └── dasu-pc      → DHCP del ISP (PC física cliente)

Nota: Todas las máquinas están en la misma red plana del ISP. No hay subnetting privado ni gateway interno. Esto elimina los problemas de routing que existían con el enfoque anterior.

🎯 Objetivo

Crear dos VMs nuevas (SQL Server + PC cliente) en srv-dasu, instalar el sistema DASUTEN sobre SQL Server, y verificar que la PC cliente puede operar el sistema sin estar unida a un dominio, usando la red del ISP.

📅 Fases de Implementación

FASE 1: Preparación del Entorno en srv-dasu (completada 2026-03-27)

  • 1.1: Verificar estado de srv-dasu: conectividad Tailscale (100.112.46.104, activo), RAM 15 GB total / 10 GB libres / 12 GB disponibles, disco 94 GB / 30 GB disponibles (68%).
  • 1.2: Confirmar que las VMs originales (100, 101, 102) están apagadas (todas stopped).
  • 1.3: Definir IDs y configuración de las nuevas VMs:
    • VM 103: SQL Server (Windows Server 2022 Core) → DHCP del ISP
    • VM 104: PC cliente (Windows 10 LTSC) → DHCP del ISP
  • 1.4: Verificar ISOs disponibles : Windows_Server_2022_Core_Eval_x64.iso, Windows_10_enterprise_ltsc_2021_x64_dvd_es-es_*.iso, SW_DVD9_SQL_Svr_Enterprise_Edtn_2019*.ISO, virtio-win.iso.
  • 1.5: Verificar configuración bridge vmbr0 HALLAZGO CRÍTICO: vmbr0 configurado como estático 10.0.100.1/24 (red privada anterior). Requiere reconfiguración a DHCP del ISP antes de crear las VMs.
  • 1.6: (agregado) Reconfigurar vmbr0: bridge sobre enp33s0 con DHCP del ISP . IP asignada: 192.168.1.13/24, gateway 192.168.1.1. Backup en /etc/network/interfaces.bak.20260327-182319. Aplicado con ifreload -a — Tailscale se reconectó automáticamente.

Resuelto: vmbr0 reconfigurado exitosamente. Las VMs conectadas a vmbr0 ahora obtienen DHCP directo del ISP.

FASE 2: Creación de VM SQL Server (sin dominio) (completada 2026-03-28)

  • 2.1: Crear VM 103 en Proxmox (4 GB RAM, 2 vCPU, 60 GB disco SATA, vmbr0, SeaBIOS, i440fx). MAC: BC:24:11:8D:EC:46.
  • 2.2: Instalar Windows Server 2022 Core . Instalado vía consola noVNC. Drivers VirtIO instalados vía pnputil /add-driver D:\*.inf /subdirs /install. Red operativa (DHCP ISP). Credencial Admin guardada en candados (dasu-sql2:Administrator). Backup vzdump realizado (modo stop, zstd, 3.28 GB).
  • 2.3: Configurar red: DHCP del ISP . IP actual asignada: 192.168.1.14/24, gateway 192.168.1.1.
  • 2.4: Configurar hostname (dasu-sql2) y modo Workgroup (WORKGROUP).
  • 2.5: Instalar y habilitar OpenSSH Server (puerto 7022) . Shell por defecto: PowerShell.
  • 2.6: Instalar Tailscale VPN . Cuenta pcdasu0@frlr.utn.edu.ar. IP Tailscale: (Pendiente login). ⚠️ Server Core interfiere con el popup GUI en la instalación normal, requiere comando CLI manual para URL interactiva.
  • 2.7: Instalar SQL Server 2019 . Instalado vía bypass del relay w-zombi (limitación por encoding base64 de W-ZOMBI y escapes booleanos de PowerShell estricto en Server Core). Locale cambiado a es-ES.
  • 2.8: Configurar autenticación mixta SQL . LoginMode=2 (registro), SA habilitado con password, firewall TCP 1433 abierto. Login SA verificado con sqlcmd.
  • 2.9: Verificar conectividad SQL . TCP 1433 accesible desde srv-dasu (192.168.1.13) a dasu-sql2 (192.168.1.19). Login SA verificado localmente.

FASE 3: Creación de VM PC Cliente (sin dominio)

  • 3.1: Crear VM 104 en Proxmox (4 GB RAM, 2 vCPU, 50 GB disco SATA, vmbr0, SeaBIOS, i440fx) . Instalador de Win 10 LTS montado en IDE2, VirtIO en IDE0. Red: e1000.
  • 3.2: Instalar Windows 10 LTSC .
  • 3.3: Configurar red: DHCP del ISP (gateway del ISP). Anotar IP asignada. IP: 192.168.1.15.
  • 3.4: Configurar hostname (dasu-pcv2) y modo Workgroup .
  • 3.5: Instalar OpenSSH Server (puerto 7022) Instalado silente vía QEMU Guest Agent.
  • 3.6: Instalar Tailscale VPN (cuenta pcdasu0@frlr.utn.edu.ar). Anotar IP Tailscale asignada. IP: 100.98.225.100
  • 3.7: Instalar herramientas cliente SQL (SSMS o sqlcmd) si es necesario.
  • 3.8: Verificar conectividad hacia dasu-sql2 (ping + test TCP 1433).
  • 3.9: Instalar qemu-guest-agent en VM dasu-pcv2 para backups desatendidos (ACPI shutdown) .

FASE 4: Instalación del Sistema DASUTEN

  • 4.1: Obtener backup/script de la base de datos DASUTEN del sistema actual. (Descargado localmente archivo de 604MB y confirmado acceso vía SMB al crudo .bak)
  • 4.2: Restaurar/crear la base de datos DASUTEN en dasu-sql2. Automatización implementada: Creada la extensión nativa ADN adn/tools/run dasuten db:migrar (Ruby) que realiza la descarga SMB, extracción y restauración vía SQLCMD de manera eficiente, segura y reutilizable, eliminando el uso de scripts temporales de shell.
  • 4.3: Instalar la aplicación cliente DASUTEN en dasu-pcv2.
  • 4.4: Configurar la conexión de la aplicación al SQL Server usando autenticación SQL (no Windows Integrated).
  • 4.5: Verificar que la aplicación conecta y opera correctamente.

FASE 5: Validación con PC física

  • 5.1: Instalar la aplicación cliente DASUTEN en dasu-pc (PC física de la oficina).
  • 5.2: Configurar conexión al SQL Server (dasu-sql2) por IP.
  • 5.3: Ejecutar pruebas funcionales del sistema DASUTEN (consultas, altas, reportes).
  • 5.4: Documentar qué funcionalidades dependen del DC (si alguna) y cuáles operan sin él.
  • 5.5: Evaluar rendimiento y estabilidad.
  • 5.6: Decisión: ¿Se puede prescindir del DC para esta implementación?
    • → Adoptar este enfoque como definitivo, descartar VMs con DC.
    • NO → Reactivar VMs originales y retomar enfoque con DC.

🔄 Diferencias clave vs enfoque anterior

Aspecto Con DC (P2601.06-08) Sin DC (P2601.09)
Red Privada 10.0.100.x (gw interno) DHCP del ISP (gw del ISP)
Autenticación SQL Windows Integrated (Kerberos) SQL Auth (mixta)
Usuarios Active Directory Usuarios locales Windows
DNS AD DNS (10.0.100.10) DNS del ISP (automático)
Complejidad de red Alta (DC + DNS + dominio + routing) Mínima (red plana ISP)
Puntos de falla DC, SQL, red dominio, routing Solo SQL
VMs necesarias 3 (DC + SQL + PC) 2 (SQL + PC)

⚠️ Consideraciones de red ISP

  • Las IPs asignadas por DHCP del ISP pueden cambiar. Se recomienda reservar IPs en el router del ISP o documentar las IPs asignadas para referencia rápida.
  • Todas las máquinas se ven entre sí directamente (misma LAN del ISP), lo cual simplifica la comunicación pero requiere que el firewall de Windows permita el tráfico SQL (puerto 1433).
  • El acceso remoto a srv-dasu sigue siendo por Tailscale (independiente de la red local ISP).

📊 Recursos

Recurso Valor real
RAM total srv-dasu 15 GB
RAM disponible 12 GB (10 GB libres + 3 GB cache) — VM 103 aún no consume (recién creada)
RAM para nuevas VMs 8 GB (SQL 4GB + PC 4GB) → queda ~4 GB para host
Disco total 94 GB (30 GB disponibles, 68% uso) — thin provisioned
ISOs Win Server 2022 Core, Win 10 LTSC, SQL 2019, virtio-win
Bridge vmbr0 DHCP ISP sobre enp33s0 — IP: 192.168.1.13/24
Gateway 192.168.1.1 (router ISP confirmado)

8. Lecciones Aprendidas y Troubleshooting

  • New-NetFirewallRule -Enabled en entornos PS puros: Al inyectar comandos de PowerShell a Server Core de forma automatizada (WS2022), debe pasarse el string 'True' y no la variable booleana $True, ya que la Cmdletization falla la conversión estricta al vuelo.
  • Escape JSON en W-ZOMBI de PowerShell: Grandes scripts en línea que se parsean a través de cmd.json destrozan la interpretación si hay fallas en la conexión. Para Server Core sin GUI, fue más seguro bypassear W-ZOMBI subiendo el PowerShell directo sobre un HTTP en Python temporal (/tmp/s.ps1).
  • QEMU-GA y Nombres de Unidad Aleatorios: En entornos con múltiples CDs montados (OS + Drivers VirtIO + CD Extra), Windows Server asigna letras impredecibles (no siempre D:). El path del Agent MSI debe resolverse programáticamente usando Get-WmiObject Win32_CDROMDrive.
  • Usuario Administrador localizado: Al instalar Server Core desde la ISO es-es, el administrador por defecto se renombra literalmente a Administrador en español. Esto es crítico porque intentos de conexión desatendida vía SSH con sshpass o secuencias usando Administrator devolverán "Permission denied", ocultando que el servidor SSH en realidad sí estaba escuchando en el puerto.
  • Compresión Nativa de BACKUP SQL vs RAR: Actualmente el sistema de origen encapsula los .bak dentro de un .rar gigante (ej. bksysdasuten.rar). SQL Server no sabe leer .rar ni ZIP nativamente para operaciones RESTORE DATABASE. Ya que Linux tiene herramientas como unar que facilitan la extracción en RAM, es factible este paso intermedio. Sin embargo, la solución definitiva y óptima ("menos es más") para el origen de datos es generar el archivo .bak instruyendo a SQL Server que lo comprima nativamente con la opción WITH COMPRESSION. Un .bak comprimido es un 80% más pequeño, y SQL Server destino lo levanta sin pasos intermedios de extracción, evitando problemas de almacenamiento temporal e I/O innecesarios en el nodo de linux (srv-dasu) al copiar el archivo directo al Windows (dasu-sql2).

🔗 Referencias