Unify Windows client bootstrap and discover network paths

This commit is contained in:
2026-09-10 08:13:46 -06:00
parent 74235ec6f8
commit 7f8a9eed4e
14 changed files with 634 additions and 219 deletions
+52 -17
View File
@@ -1,14 +1,15 @@
# Enrolamiento obligatorio de clientes SGU
Para una instalación limpia se selecciona primero el ZIP correspondiente:
Para Windows 10 y Windows 11 se usa un solo paquete:
- `sgu-windows10-legacy-client-bootstrap-VERSION.zip` para Windows 10;
- `sgu-windows11-client-bootstrap-VERSION.zip` para Windows 11.
- `sgu-windows-client-bootstrap-VERSION.zip` (x64, Pro, Enterprise o Education).
Ambos conservan el punto de entrada directo:
Extraer el ZIP y hacer doble clic en `Start-SguClientEnrollment.cmd`. Aceptar
UAC, introducir la IP del controlador y la cuenta del dominio con su contraseña.
También se puede indicar el servidor desde consola:
```bat
Start-SguClientEnrollment.cmd 192.168.50.10 192.168.50.11
Start-SguClientEnrollment.cmd 192.168.50.10
```
Este comando realiza el intercambio de certificados descrito abajo sin mover
@@ -16,19 +17,52 @@ una clave privada y luego ejecuta la transacción proveedor-primero. Las
instrucciones completas están en
[`bootstrap-recovery.md`](bootstrap-recovery.md).
El primer argumento es la IP fija del controlador; el segundo es una IP fija y
única para el cliente en la misma subred. Si el segundo se omite y la NIC
privada no tiene una IP válida, se solicita en pantalla. El bootstrap prefiere
la única NIC activa sin puerta de enlace para no reemplazar el adaptador de
Internet. Ante cualquier error conserva la ventana y escribe el diagnóstico en
El único dato de red necesario es la IPv4 del controlador. El bootstrap prueba
WinRM desde las direcciones de las interfaces conectadas, incluyendo túneles
VPN, empezando por la ruta elegida por Windows. Si ésta falla, prueba las demás
rutas disponibles. Cliente y servidor pueden estar en subredes distintas.
Si la red todavía está inicializando, reintenta el descubrimiento durante
20 segundos antes de informar el último diagnóstico.
Conserva DHCP, direcciones y puertas de enlace. Sólo si Windows elige otra
interfaz agrega una ruta persistente `/32` hacia ese servidor por la interfaz
comprobada; no modifica la ruta de Internet. Ante cualquier error conserva la
ventana y escribe el diagnóstico en
`C:\ProgramData\SGU\Bootstrap\Client\latest-error.log`.
El manifiesto contiene el perfil `Windows10Legacy` o `Windows11Modern` y el
bootstrap rechaza un ZIP que no corresponda al build instalado. El paquete de
Windows 11 conserva además `Start-SguAzureClientEnrollment.cmd` y el instalador
P2S de equipo; el legado de Windows 10 se limita al transporte directo del
laboratorio. Credential Provider, mTLS, cuenta `alumno`, RustDesk, monitorización
y autorreparación siguen saliendo de la misma base de código.
El dominio DNS, NetBIOS y contenedor de equipos se descubren en la sesión
autenticada. Usa `OU=Laboratorio` si existe en la raíz del dominio y, en caso
contrario, el contenedor de equipos configurado en AD. Los parámetros
`-DomainName`, `-DomainNetbios` y `-ComputerOuDn` permiten validarlos o elegirlos
explícitamente. Para otra cuenta, editar el usuario sugerido como
`DOMINIO\usuario` o `usuario@dominio`. No se guardan contraseñas.
El DNS se configura mediante una regla NRPT para el dominio descubierto,
conservando los servidores DNS de los adaptadores y la resolución de Internet.
Las políticas DNS/VPN corporativas deben permitir resolver ese dominio.
El servidor necesita el bootstrap SGU (AD/DNS, WinRM, Auth Broker y RustDesk):
este paquete no es un enrolador genérico de Microsoft Entra ID ni instala SGU
en un directorio ajeno automáticamente. Se comprueban TCP 53, 88, 135, 389, 445,
5985 y 8443; la unión también requiere DNS/Kerberos por UDP y RPC dinámico
según la configuración de AD. Estas pruebas no sustituyen la unión real.
Una VPN de cualquier proveedor ya conectada utiliza el mismo lanzador. Para
instalar la VPN Azure IKEv2 se incluyen `Start-SguAzureClientEnrollment.cmd` e
`Install-SguAzureP2sClient.ps1` en el mismo ZIP para ambos Windows; la primera
instalación requiere perfil y certificados. La conectividad antes del inicio
de sesión depende de la VPN y sus políticas, no se puede deducir de la IP del DC.
Una interfaz con sólo APIPA (`169.254.x.x`), sin DHCP o sin ruta necesita que
el administrador configure la red o conecte la VPN. El bootstrap no inventa una
IP libre ni una puerta de enlace. Para una LAN estática se mantienen los
parámetros avanzados `-ClientIPv4Address`, `-ClientPrefixLength` y
`-NetworkInterfaceAlias`; la IP y la interfaz deben indicarse juntas.
El manifiesto usa `CompatibilityProfile: Auto`. No hay restricciones de VPN
por Windows 10/11; los nombres antiguos de perfil se aceptan como parámetros
obsoletos. Se valida x64, edición con unión a AD y Windows 10 desde 1607 o
Windows 11 (el runtime incluido es .NET 10; usar una edición/build compatible
con su ciclo de soporte). Credential Provider, mTLS, cuenta `alumno`, RustDesk,
monitorización y autorreparación conservan la misma implementación.
El flujo administrado instala y valida el Credential Provider **antes** de
ejecutar `Add-Computer`. La pertenencia al dominio es el último cambio; si falta
@@ -91,7 +125,8 @@ Orden de la transacción:
2. registra COM, configura SGU como proveedor predeterminado y oculta el
último usuario que cerró sesión;
3. crea o actualiza la cuenta local estándar `alumno` con la contraseña
`ingenieria`, la habilita y garantiza que no pertenezca a Administradores;
inicial `ingenieria` sólo al crearla; si ya existe conserva su contraseña,
la habilita y garantiza que no pertenezca a Administradores;
4. instala el guard de autorreparación;
5. exige health mTLS del broker y ejecuta las comprobaciones locales;
6. configura DNS del dominio;