From a7f4242ce3432f52c9fcdec6317d83c44531c1b1 Mon Sep 17 00:00:00 2001 From: Marius Date: Mon, 10 Aug 2026 23:24:47 +0300 Subject: [PATCH] fix(proxmox): template VM 310 sysprep-uit, VM 300 nu mai e de clonat MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit VM 300 `Win11-Template` nu a fost sysprep-uit: poarta numele ROACENTRAL si SID-ul de masina al VM 201 (S-1-5-21-1850128657-3079265004-705332634). Clonele lui mostenesc acea identitate, iar NTLM intre doua masini cu acelasi SID de masina esueaza — de aici imposibilitatea accesarii share-urilor SMB intre VM 303 si VM 201, in ambele sensuri. VM 300 nu poate fi reparat in loc: e template read-only, iar VM 303 e linked clone din el. Solutia: clona completa 300 -> 310, sysprep acolo, conversie in template. Verificat pe o clona de proba: nume si SID noi la fiecare pornire. - clone-vm300.sh: SOURCE_VMID 300 -> 310 - README-uri: VM 310 marcat ca template de clonare, VM 300 ca "nu clona" - vm302-oracle-test: corectat exemplul care clona in VM 303 (deja ocupat) - docs/handoff-smb-vm303-roacentral.md: probele, capcanele de sysprep, stare Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_01MoFGxftQw92PX4Sdkn94pv --- docs/handoff-smb-vm303-roacentral.md | 151 ++++++++++++++++++ proxmox/README.md | 3 +- proxmox/cluster/README.md | 6 +- .../roa-windows-setup/test/clone-vm300.sh | 15 +- proxmox/vm302-oracle-test/README.md | 10 +- 5 files changed, 175 insertions(+), 10 deletions(-) create mode 100644 docs/handoff-smb-vm303-roacentral.md diff --git a/docs/handoff-smb-vm303-roacentral.md b/docs/handoff-smb-vm303-roacentral.md new file mode 100644 index 0000000..ac41005 --- /dev/null +++ b/docs/handoff-smb-vm303-roacentral.md @@ -0,0 +1,151 @@ +# Handoff — SMB imposibil între VM 303 și VM 201 (SID de mașină duplicat) + +**Data:** 2026-08-10, seara +**Stare:** cauză stabilită prin probe; reparația finală (sysprep) NU e făcută, așteaptă decizia utilizatorului. + +## Simptom raportat + +De pe VM 303 (10.0.20.145) nu se poate accesa `\\10.0.20.122\temp`; „user sau parolă +incorecte" chiar cu credențiale corecte. Identic și în sens invers, de pe .122 către +`\\10.0.20.145\Temp`. + +## Cauza reală + +**Cele două mașini au același SID de mașină:** +`S-1-5-21-1850128657-3079265004-705332634` + +VM 303 e o clonă (prin template-ul VM 300 `Win11-Template`) a instalării de pe VM 201, +pornită fără `sysprep /generalize`. NTLM între două mașini cu SID de mașină identic +eșuează: parola e validată corect, apoi logon-ul e respins. + +Inițial ambele se numeau și `ROACENTRAL` — asta a fost reparată (vezi mai jos), dar +**nu a fost suficientă**. + +### Semnătura în log (Security, event 4625, pe mașina țintă) + +| SubStatus | Semnificație | +|---|---| +| `0xc000006a` | parola chiar e greșită (verificarea a ajuns la SAM) | +| `0x0` | parola e CORECTĂ, logon respins ulterior — semnătura problemei | + +Deci `sub=0x0` = simptomul; `sub=0xc000006a` = doar o parolă greșită banală. + +## Lanțul de probe (toate rulate, nu deduse) + +1. VM-303 → .122 eșuează; .122 → VM-303 eșuează. Simetric. +2. Cont nou `smbtest` pe VM-303, parolă pusă de noi, RID `1002` (se ciocnea cu + `roaupdate` de pe .122) → **eșec**, eroare 86. +3. Cont nou `smbshare` pe VM-303, RID `1005` (fără nicio coliziune de RID) → **eșec**. + ⇒ nu e coliziunea de RID a contului, ci SID-ul de mașină. +4. De pe `LENOVO-AIO-BIRO` (stație terță, alt SID) către `\\10.0.20.145\Temp`, cu + **exact același cont și aceeași parolă** → **SUCCES**. + ⇒ serverul SMB de pe VM-303 e sănătos; problema e a perechii de cloni. + +### Exclus prin verificare, nu prin presupunere + +Parole goale (`LimitBlankPasswordUse=1`, dar niciuna nu e goală); expirare parolă +(`Password expires: Never`); SMB1/semnare/criptare (identice pe ambele: SMB2/3, +signing required, `RejectUnencryptedAccess=True`); politici `RestrictNTLM` (nesetate); +`SeDenyNetworkLogonRight` (doar `Guest`); blocare cont (`Account active: Yes`); +firewall (445 deschis în ambele sensuri); permisiuni share/NTFS pe `.122\temp` +(`Everyone: Full`, `Authenticated Users: Modify`); prefixul de domeniu din user +(`ROACENTRAL\`, `VM-303\`, `10.0.20.122\` — toate se comportă la fel). + +## Ce s-a modificat deja + +**Pe VM 303 (10.0.20.145) — singura mașină atinsă:** + +- Snapshot Proxmox `pre-rename` creat la 22:19 (încă existent, nu a fost șters). +- Redenumit `ROACENTRAL` → `VM-303` (`Rename-Computer`), repornit. Numele cu spațiu + cerut inițial („VM 303") nu e valid în Windows. +- `AutoAdminLogon` setat pe `0` (era `1`, cu `DefaultUserName=romfast` și fără parolă + stocată validă — login automat rupt). +- Conturi de test `smbtest`, `smbshare`, `zzfill1`, `zzfill2` — create pentru probe și + **șterse**. Verificat: au rămas doar Administrator, DefaultAccount, Guest, romfast, + WDAGUtilityAccount. + +**Pe VM 201 (10.0.20.122) — NIMIC modificat.** Doar citiri și `net use` de test, ale +căror mapări au fost șterse. + +## Ce NU e făcut — VM 303 rămâne nereparat (decizie a utilizatorului) + +Utilizatorul a cerut explicit **nicio modificare suplimentară pe VM 303**. Deci VM 303 are +în continuare SID-ul duplicat și **SMB către/dinspre VM 201 nu va funcționa**. + +Ce rămâne, dacă se dorește reparat mai târziu: + +1. `sysprep /generalize /oobe` pe VM 303 — singura metodă suportată de Microsoft (vezi + capcanele de mai jos, sunt aceleași). +2. Reconstruire VM 303 din template-ul curat **VM 310**. + +**Ocolire funcțională, fără sysprep:** VM 201 are **OpenSSH pe portul 22** (verificat +deschis) — transfer de fișiere prin SFTP/SCP, care nu folosește NTLM: +```cmd +scp fisier.txt romfast@10.0.20.122:/C:/temp/ +``` + +## ✅ REPARAT — template curat pentru viitor: VM 310 + +**Cauza la sursă:** template-ul VM 300 `Win11-Template` nu era sysprep-uit — verificat, purta +SID-ul `S-1-5-21-1850128657-3079265004-705332634`, identic cu VM 201. Orice clonă din el +moștenea numele `ROACENTRAL` și acel SID. + +VM 300 **nu poate fi reparat în loc**: e template (read-only) și VM 303 e linked clone din el +(`origin: rpool/data/base-300-disk-0@__base__`). Modificarea bazei ar distruge VM 303. + +**Soluția aplicată:** clonă completă 300 → VM 310, sysprep acolo, conversie în template. + +| | VM 300 (vechi) | VM 310 (nou) | +|---|---|---| +| Nume la clonare | `ROACENTRAL` (fix) | `DESKTOP-xxxxxxx` (aleator, prin OOBE) | +| SID de mașină | fix, al lui VM 201 | nou la fiecare clonă | +| Stare | ⛔ nu clona | ✅ de folosit | + +Verificat efectiv, nu presupus: o clonă de probă (VM 311, ștearsă după test) a pornit cu +`DESKTOP-88DEOL2` și SID `S-1-5-21-2704088831-3630746092-3876790623` — complet diferit. + +### Capcană la sysprep (dacă se repetă operația) + +Prima rulare a eșuat. Două lucruri de rezolvat înainte: + +1. **Reboot CBS în așteptare** — `HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\Component Based Servicing\RebootPending`. Repornește întâi. +2. **Pachete Appx instalate per-utilizator dar neprovizionate** — sysprep se oprește cu + `0x80073cf2`. Log-ul le numește explicit în `C:\Windows\System32\Sysprep\Panther\setuperr.log`. + Aici au fost `Microsoft.Winget.Source`, `Microsoft.StartExperiencesApp`, + `Microsoft.WidgetsPlatformRuntime`; scoase cu `Remove-AppxPackage -AllUsers`. + +`sysprep /generalize /oobe /shutdown` oprește VM-ul **doar dacă reușește** — dacă mașina +rămâne pornită, a eșuat, citește `setuperr.log`. **Nu porni VM-ul după sysprep reușit**: +prima pornire consumă generalizarea. Convertește direct în template. + +### Documentație aliniată + +`proxmox/README.md`, `proxmox/cluster/README.md`, `proxmox/vm302-oracle-test/README.md` și +`proxmox/lxc108-oracle/roa-windows-setup/test/clone-vm300.sh` (`SOURCE_VMID` 300 → 310) +indică acum template-ul nou și marchează VM 300 ca „nu clona". + +VM 300 nu poate fi șters cât timp există VM 303 (linked clone). + +## ⚠️ Verificat și nepericulos (fals alarm ridicat pe parcurs) + +Task-ul `\tasks xml roa` de pe .122 (zilnic 16:00, rulează ca `romfast` cu +`LogonType=Password`, acțiune `D:\ROAUPDATE\TASKS\tasks.exe s xml_roa_auto`) părea că se +va rupe după schimbarea parolei din 10.08 ora 22:02. Utilizatorul a pus la loc aceeași +parolă și a testat task-ul — **funcționează**. Nu necesită intervenție. + +## Cum se accesează mașinile (fără parole) + +```bash +ssh root@10.0.20.201 # cheie SSH deja acceptată +qm guest exec 303 -- powershell.exe -NoProfile -EncodedCommand +qm guest exec 201 -- powershell.exe -NoProfile -EncodedCommand +``` + +Quoting-ul prin `ssh` → `qm guest exec` → `cmd.exe` rupe argumentele; `-EncodedCommand` +cu base64 UTF-16LE e singura variantă care merge de fiecare dată. + +## Curățenie rămasă + +```bash +ssh root@10.0.20.201 "qm delsnapshot 303 pre-rename" # după ce totul e confirmat +``` diff --git a/proxmox/README.md b/proxmox/README.md index 5a25abf..710bd1f 100644 --- a/proxmox/README.md +++ b/proxmox/README.md @@ -439,7 +439,8 @@ ssh root@10.0.20.201 "qm snapshot 302 pre-test --description 'Before ROA test'" |------|------|----|--------------| | **109** | **standby-dr** | **Windows Server** | **`vm109-windows-dr/`** | | **201** | **roacentral** | **Windows 11** | **`vm201-windows/`** | -| 300 | Win11-Template | Windows 11 | `cluster/README.md` | +| **310** | **Win11-Template-Sysprep** | **Windows 11 (template de clonare)** | **`cluster/README.md`** | +| 300 | Win11-Template | Windows 11 | ⛔ nesysprep-uit, nu clona — `docs/handoff-smb-vm303-roacentral.md` | | **302** | **oracle-test-302** | **Windows 11 + Oracle 21c (test ROA)** | **`vm302-oracle-test/`** | --- diff --git a/proxmox/cluster/README.md b/proxmox/cluster/README.md index be8f6d5..9132060 100644 --- a/proxmox/cluster/README.md +++ b/proxmox/cluster/README.md @@ -247,7 +247,8 @@ pct set --rootfs local-zfs:20 |------|------|-----|-----|-----|-----|---------|--------| | 201 | roacentral | pvemini | 10.0.20.122 | 4 cores | 6 GB | 500 GB | running | | 303 | Win11-Adina | pvemini | DHCP | 4 cores | 8 GB | 500 GB | running | -| 300 | Win11-Template | pvemini | - | 2 cores | 4 GB | 500 GB | stopped | +| 310 | Win11-Template-Sysprep | pvemini | - | 2 cores | 4 GB | 500 GB | template ✅ | +| 300 | Win11-Template | pvemini | - | 2 cores | 4 GB | 500 GB | template ⛔ NU CLONA | | 302 | oracle-test-302 | pvemini | - | 4 cores | 4 GB | 500 GB | stopped | | 109 | oracle-dr-windows | pveelite | 10.0.20.37 | 4 cores | 6 GB | 500 GB | stopped | @@ -376,7 +377,8 @@ cat /etc/pve/corosync.conf | VMID | Nume | IP | OS | Rol | |------|------|-----|-----|-----| | 201 | roacentral | DHCP | Windows 11 | Client aplicații | -| 300 | Win11-Template | - | Windows 11 | Template pentru clonare | +| 310 | Win11-Template-Sysprep | - | Windows 11 | ✅ Template pentru clonare (sysprep-uit) | +| 300 | Win11-Template | - | Windows 11 | ⛔ Nesysprep-uit — NU clona, vezi `docs/handoff-smb-vm303-roacentral.md` | ### Accesuri Rapide ```bash diff --git a/proxmox/lxc108-oracle/roa-windows-setup/test/clone-vm300.sh b/proxmox/lxc108-oracle/roa-windows-setup/test/clone-vm300.sh index 34aa52c..cfc09bd 100644 --- a/proxmox/lxc108-oracle/roa-windows-setup/test/clone-vm300.sh +++ b/proxmox/lxc108-oracle/roa-windows-setup/test/clone-vm300.sh @@ -1,6 +1,6 @@ #!/bin/bash # ============================================================================= -# Clone VM 300 (Windows 11 Template) for Oracle Testing +# Clone Windows 11 Template (VM 310) for Oracle Testing # ============================================================================= # # Purpose: Create a test VM for Oracle installation testing @@ -11,11 +11,18 @@ # Examples: # ./clone-vm300.sh # Creates VM 301 named oracle-test-301 # ./clone-vm300.sh 305 # Creates VM 305 named oracle-test-305 -# ./clone-vm300.sh 310 roa-prod # Creates VM 310 named roa-prod +# ./clone-vm300.sh 320 roa-prod # Creates VM 320 named roa-prod +# +# IMPORTANT — sursa e VM 310, NU VM 300: +# VM 300 `Win11-Template` NU e sysprep-uit: poarta numele (ROACENTRAL) si SID-ul +# de masina al VM 201. Clonele din el nu se pot autentifica prin SMB/NTLM nici cu +# VM 201, nici intre ele. Vezi docs/handoff-smb-vm303-roacentral.md. +# VM 310 `Win11-Template-Sysprep` e varianta generalizata; fiecare clona primeste +# SID si nume proprii la prima pornire (trece prin OOBE). # # Prerequisites: # - Run on Proxmox host (pvemini, pve1, or pveelite) -# - VM 300 exists as Windows 11 template +# - VM 310 exists as sysprepped Windows 11 template # - Sufficient storage space (~50GB per clone) # # ============================================================================= @@ -26,7 +33,7 @@ set -e # Configuration # ----------------------------------------------------------------------------- -SOURCE_VMID=300 +SOURCE_VMID=310 TARGET_VMID=${1:-301} TARGET_NAME=${2:-"oracle-test-${TARGET_VMID}"} diff --git a/proxmox/vm302-oracle-test/README.md b/proxmox/vm302-oracle-test/README.md index 5edbaa5..449f7f9 100644 --- a/proxmox/vm302-oracle-test/README.md +++ b/proxmox/vm302-oracle-test/README.md @@ -393,11 +393,11 @@ ssh root@10.0.20.201 "qm delsnapshot 302 pre-test" ## Clone VM for Parallel Testing ```bash -# Clone VM 302 to VM 303 -ssh root@10.0.20.201 "qm clone 302 303 --name oracle-test-303 --full" +# Clone VM 302 to VM 304 (ATENTIE: 303 e ocupat de Win11-Adina) +ssh root@10.0.20.201 "qm clone 302 304 --name oracle-test-304 --full" # Start new VM -ssh root@10.0.20.201 "qm start 303" +ssh root@10.0.20.201 "qm start 304" # Note: Change IP in Windows after boot (Network Settings) ``` @@ -407,6 +407,10 @@ ssh root@10.0.20.201 "qm start 303" ## Notes - VM 302 is cloned from template VM 300 (clean Windows + Oracle XE) +- ⛔ **Pentru clone NOI foloseste template-ul VM 310 `Win11-Template-Sysprep`, nu VM 300.** + VM 300 nu e sysprep-uit: poarta numele si SID-ul de masina al VM 201, iar clonele lui + nu se pot autentifica prin SMB/NTLM cu VM 201 sau intre ele. Detalii si probe in + `docs/handoff-smb-vm303-roacentral.md`. - Oracle XE has 2GB RAM limit - sufficient for testing - DMP files are already in C:\DMPDIR (persisted between tests) - Uninstall script preserves DMP files