Lab 02 – Domain controller Windows Server 2025: Active Directory, DNS e NTP
Dipendenze
Sezione intitolata “Dipendenze”- Lab precedenti: Lab 01 – Architettura del laboratorio.
- Server:
desopve-dc01spento: 4 core, 8 GB di RAM, dischi da 90 GB e 300 GB, due schede di rete, firmware UEFI con Secure Boot (vedi l’hardware del laboratorio). - ISO: Windows Server 2025 Evaluation (
26100.1742…SERVER_EVAL_x64FRE_en-us.iso), su chiavetta USB o sul virtual media della scheda di gestione. - Servizi:
netsvcattivo su172.27.199.250, con proxy HTTP (porta 3128) e NTP. - Indirizzi:
172.27.199.20(rete di gestione) e172.32.199.20(rete cluster/storage). - Credenziali:
<password-lab>per Administrator e per la modalità di ripristino (DSRM) → Appendice B.
Obiettivi
Sezione intitolata “Obiettivi”- Installare Windows Server 2025 con interfaccia grafica.
- Configurare rete, fuso orario e Desktop remoto.
- Creare la foresta Active Directory
proxmox.communitycon il DNS integrato. - Registrare nel DNS tutti i server del laboratorio, con le zone inverse.
- Sincronizzare l’ora del dominio con il server NTP del laboratorio.
- Configurare il proxy HTTP di sistema.
Come funziona
Sezione intitolata “Come funziona”Un cluster Proxmox VE funziona anche senza Active Directory, ma tre servizi del domain controller semplificano tutto il resto del manuale.
- DNS. I nodi si chiamano per nome (
desopve01.proxmox.community), e i certificati dell’interfaccia web, il cluster e lo storage condiviso lavorano meglio con nomi risolvibili in entrambe le direzioni: nome → indirizzo e indirizzo → nome (zone inverse). - Active Directory. Nel percorso D (lab 43) Proxmox VE userà gli utenti e i gruppi del dominio per l’accesso all’interfaccia web.
- Ora esatta. Corosync, Ceph, Kerberos e i certificati sono sensibili agli scarti di orario. Nel laboratorio l’ora segue questa catena:
flowchart LR
INET(("NTP pubblici")) --> SVC["netsvc<br/>ntp.proxmox.community"]
SVC --> DC["desopve-dc01<br/>(PDC emulator)"]
SVC --> PVE["nodi Proxmox VE<br/>(lab 04)"]
DC --> WIN["membri del dominio"]
Il DNS è autoritativo per proxmox.community
Sezione intitolata “Il DNS è autoritativo per proxmox.community”Il dominio del laboratorio è proxmox.community, lo stesso nome del sito pubblico. Il domain controller diventa autoritativo per quella zona: per ogni nome che finisce in proxmox.community risponde solo con i record che conosce.
Un nome che esiste su Internet ma non nella zona interna (ad esempio www.proxmox.community) risulta quindi inesistente per i server del laboratorio. Se ti servono nomi pubblici dello stesso dominio, aggiungili a mano nella zona interna. È la configurazione nota come split DNS: lo stesso nome di dominio ha contenuti diversi dentro e fuori l’azienda.
Niente forwarder DNS
Sezione intitolata “Niente forwarder DNS”Il DNS del domain controller non inoltra le richieste verso Internet: il laboratorio non ha un’uscita diretta. I nomi pubblici (ad esempio deb.debian.org) li risolve il proxy, quando un server chiede una pagina tramite proxy.proxmox.community:3128.
Procedura
Sezione intitolata “Procedura”1. Installare Windows Server 2025
Sezione intitolata “1. Installare Windows Server 2025”-
Avvia il server dalla chiavetta USB (o dal virtual media della scheda di gestione). Alla richiesta Press any key to boot from CD or DVD premi un tasto. Nella prima schermata lascia English (United States) come lingua e formato, poi Next.

-
Scegli il layout di tastiera Italian e premi Next.

-
Seleziona Install Windows Server, spunta I agree everything will be deleted including files, apps, and settings e premi Next.

-
Scegli l’edizione Windows Server 2025 Standard Evaluation (Desktop Experience). L’edizione senza Desktop Experience è la Server Core, senza interfaccia grafica.

-
Accetta i termini di licenza con Accept.

-
Seleziona Disk 0 (90 GB) come destinazione e premi Next. Il disco da 300 GB resta libero: nessun lab lo usa, puoi anche ometterlo.

-
Controlla il riepilogo e premi Install.

-
Attendi la fine dell’installazione: il server si riavvia da solo, anche più volte.

2. Primo accesso
Sezione intitolata “2. Primo accesso”-
Imposta la password di Administrator (
<password-lab>) nei due campi e premi Finish.
-
Accedi come Administrator (Ctrl+Alt+Canc). Alla richiesta sui dati di diagnostica scegli Required only.
-
Si apre Server Manager, la console di gestione del server. Chiudi il riquadro che propone Windows Admin Center e Azure Arc.

3. Rete, Desktop remoto e nome del server
Sezione intitolata “3. Rete, Desktop remoto e nome del server”Esegui questi comandi in una finestra di PowerShell aperta come amministratore (tasto destro sul pulsante Start → Terminal (Admin)).
-
Elenca le schede di rete:
Finestra del terminale Get-NetAdapter | Format-Table Name, InterfaceDescription, Status
Windows assegna alle schede nomi generici, che dipendono dall’hardware: tra poco le rinomineremo secondo il ruolo. Nel lab la prima scheda in ordine di indice è collegata alla rete di gestione, la seconda alla rete cluster/storage. Se nel tuo laboratorio l’ordine è diverso, scambia le due schede nei comandi seguenti.
-
Assegna gli indirizzi statici. La scheda di gestione usa come DNS sé stessa (
127.0.0.1), perché tra poco questo server sarà il DNS del dominio:Finestra del terminale $if = (Get-NetAdapter | Sort-Object ifIndex | Select-Object -First 1).NameNew-NetIPAddress -InterfaceAlias $if -IPAddress 172.27.199.20 -PrefixLength 24 -DefaultGateway 172.27.199.1Set-DnsClientServerAddress -InterfaceAlias $if -ServerAddresses 127.0.0.1$if2 = (Get-NetAdapter | Sort-Object ifIndex | Select-Object -Skip 1 -First 1).NameNew-NetIPAddress -InterfaceAlias $if2 -IPAddress 172.32.199.20 -PrefixLength 24New-NetIPAddressmostra l’indirizzo appena assegnato; lo statoTentativediventaPreferreddopo pochi secondi, quando Windows ha verificato che l’indirizzo non è già in uso.
-
Abilita il Desktop remoto e la relativa regola del firewall:
Finestra del terminale Set-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server" -Name fDenyTSConnections -Value 0Enable-NetFirewallRule -DisplayGroup "Remote Desktop" -
Rinomina il server e riavvialo:
Finestra del terminale Rename-Computer -NewName desopve-dc01 -Restart
Da qui in avanti puoi lavorare in Desktop remoto (mstsc) verso 172.27.199.20 dal PC di amministrazione collegato alla rete di gestione (vedi Postazione di amministrazione), più comodo della console.
-
Imposta il fuso orario italiano. L’installazione in inglese parte dal fuso del Pacifico:
Finestra del terminale Set-TimeZone -Id "W. Europe Standard Time"Get-TimeZone | Format-List Id, DisplayName
-
Rinomina le schede di rete secondo il loro ruolo:
MGMTper la gestione,CLUSTERper la rete cluster/storage. Sulla schedaCLUSTERdisattiva la registrazione nel DNS, così il nome del server risolve solo l’indirizzo di gestione:Finestra del terminale Rename-NetAdapter -Name (Get-NetIPAddress -IPAddress 172.27.199.20).InterfaceAlias -NewName MGMTRename-NetAdapter -Name (Get-NetIPAddress -IPAddress 172.32.199.20).InterfaceAlias -NewName CLUSTERSet-DnsClient -InterfaceAlias CLUSTER -RegisterThisConnectionsAddress $falseVerifica il risultato:
Finestra del terminale Get-NetAdapter | Format-Table Name, InterfaceDescription, Status, LinkSpeed -AutoSizeGet-NetIPConfiguration | Select-Object InterfaceAlias,@{n='IPv4';e={$_.IPv4Address.IPAddress}},@{n='Gateway';e={$_.IPv4DefaultGateway.NextHop}},@{n='DNS';e={$_.DNSServer.ServerAddresses -join ', '}} | Format-Table -AutoSizeGet-DnsClient -InterfaceAlias MGMT, CLUSTER | Format-Table InterfaceAlias, RegisterThisConnectionsAddress -AutoSize
Dare alle schede un nome che dice a cosa servono è una buona abitudine: script e documentazione restano chiari anche quando l’hardware cambia.
4. Installare Active Directory e creare la foresta
Sezione intitolata “4. Installare Active Directory e creare la foresta”-
Installa il ruolo Active Directory Domain Services con gli strumenti di gestione:
Finestra del terminale Install-WindowsFeature -Name AD-Domain-Services -IncludeManagementTools
-
Crea la nuova foresta
proxmox.communitycon il DNS integrato. Il nome NetBIOS (PROXMOX) è il nome breve del dominio, usato ad esempio inPROXMOX\Administrator:Finestra del terminale Install-ADDSForest -DomainName proxmox.community -DomainNetbiosName PROXMOX -InstallDns `-SafeModeAdministratorPassword (Read-Host -AsSecureString -Prompt "Password DSRM") -ForceAlla richiesta Password DSRM digita
<password-lab>. È la password della modalità di ripristino dei servizi directory, l’account locale usato per riparare Active Directory quando il servizio non si avvia: in produzione va custodita con cura. -
La promozione verifica i prerequisiti, crea le partizioni della directory e configura il DNS. Al termine il server si riavvia da solo.

-
Dopo il riavvio accedi come
PROXMOX\Administrator. Il primo accesso richiede qualche minuto (Please wait for the Group Policy Client). In Server Manager compaiono i ruoli AD DS e DNS.
-
Verifica dominio, foresta e domain controller:
Finestra del terminale Get-ADDomain | Format-List Name, DNSRoot, NetBIOSName, DomainMode, PDCEmulatorGet-ADForest | Format-List Name, ForestMode, SchemaMasterGet-ADDomainController | Format-List HostName, IPv4Address, Site, IsGlobalCatalog
Il livello funzionale è Windows2025Domain / Windows2025Forest, il valore predefinito per una foresta nuova su Windows Server 2025.
5. Preparare il DNS del laboratorio
Sezione intitolata “5. Preparare il DNS del laboratorio”-
Crea le zone inverse per le due reti del laboratorio, integrate in Active Directory e replicate in tutta la foresta:
Finestra del terminale Add-DnsServerPrimaryZone -NetworkId "172.27.199.0/24" -ReplicationScope ForestAdd-DnsServerPrimaryZone -NetworkId "172.32.199.0/24" -ReplicationScope ForestGet-DnsServerZone | Format-Table ZoneName, ZoneType, IsDsIntegrated, IsReverseLookupZone -AutoSize
-
Registra tutti i server del laboratorio.
-CreatePtrcrea anche il record inverso (PTR).proxyentpsono alias (CNAME) dinetsvc: se un giorno il servizio si sposta, basta cambiare l’alias:Finestra del terminale $z = 'proxmox.community'Add-DnsServerResourceRecordA -ZoneName $z -Name desopve01 -IPv4Address 172.27.199.21 -CreatePtrAdd-DnsServerResourceRecordA -ZoneName $z -Name desopve02 -IPv4Address 172.27.199.22 -CreatePtrAdd-DnsServerResourceRecordA -ZoneName $z -Name desopve03 -IPv4Address 172.27.199.23 -CreatePtrAdd-DnsServerResourceRecordA -ZoneName $z -Name desopve04 -IPv4Address 172.27.199.24 -CreatePtrAdd-DnsServerResourceRecordA -ZoneName $z -Name desonas -IPv4Address 172.27.199.10 -CreatePtrAdd-DnsServerResourceRecordA -ZoneName $z -Name netsvc -IPv4Address 172.27.199.250 -CreatePtrAdd-DnsServerResourceRecordA -ZoneName $z -Name esxi8 -IPv4Address 172.27.199.30 -CreatePtrAdd-DnsServerResourceRecordCName -ZoneName $z -Name proxy -HostNameAlias netsvc.proxmox.communityAdd-DnsServerResourceRecordCName -ZoneName $z -Name ntp -HostNameAlias netsvc.proxmox.communityipconfig /registerdnsipconfig /registerdnsregistra di nuovo il domain controller stesso, così nasce anche il suo record inverso nella zona appena creata. Controlla i record:Finestra del terminale Get-DnsServerResourceRecord -ZoneName $z | Where-Object RecordType -in 'A','CNAME' |Format-Table HostName, RecordType,@{n='Dato';e={ if ($_.RecordType -eq 'A') { $_.RecordData.IPv4Address } else { $_.RecordData.HostNameAlias } }} -AutoSize
-
Registra anche il router del laboratorio e i server introdotti nei percorsi successivi (Proxmox Backup Server, Proxmox Datacenter Manager e le VM del server ESXi di origine del lab 50). Il router ha un indirizzo su entrambe le reti: il record A punta all’indirizzo di gestione, mentre per
172.32.199.1basta il record inverso:Finestra del terminale Add-DnsServerResourceRecordA -ZoneName $z -Name rtr-core -IPv4Address 172.27.199.1 -CreatePtrAdd-DnsServerResourceRecordPtr -ZoneName 199.32.172.in-addr.arpa -Name 1 -PtrDomainName rtr-core.proxmox.communityAdd-DnsServerResourceRecordA -ZoneName $z -Name desopbs01 -IPv4Address 172.27.199.40 -CreatePtrAdd-DnsServerResourceRecordA -ZoneName $z -Name desopdm01 -IPv4Address 172.27.199.41 -CreatePtrAdd-DnsServerResourceRecordA -ZoneName $z -Name linux-src01 -IPv4Address 172.27.199.31 -CreatePtrAdd-DnsServerResourceRecordA -ZoneName $z -Name win-src01 -IPv4Address 172.27.199.32 -CreatePtr
-
Il server DNS registra il nome del domain controller per ogni indirizzo su cui è in ascolto, compreso
172.32.199.20della schedaCLUSTER: la registrazione disattivata al passo 3.6 non basta. Un client potrebbe così ricevere172.32.199.20come indirizzo del DC e non raggiungerlo. Cerca i record che puntano alla rete cluster:Finestra del terminale Get-DnsServerResourceRecord -ZoneName proxmox.community -RRType A |Where-Object { $_.RecordData.IPv4Address -like '172.32.*' }Se compare
desopve-dc01con172.32.199.20, limita l’ascolto del DNS al solo indirizzo di gestione (in DNS Manager è Properties → Interfaces → Only the following IP addresses) e riavvia il servizio. Appena cambiano gli indirizzi di ascolto, il server DNS toglie da solo il record della rete cluster:Finestra del terminale $s = Get-DnsServerSetting -All$s.ListeningIPAddress = @('172.27.199.20')Set-DnsServerSetting -InputObject $sRestart-Service DNSGet-DnsServerResourceRecord -ZoneName proxmox.community -RRType A -Name desopve-dc01 |Format-Table HostName, RecordType, @{n='IPv4Address';e={$_.RecordData.IPv4Address}} -AutoSizeOutput HostName RecordType IPv4Address-------- ---------- -----------desopve-dc01 A 172.27.199.20La ricerca di prima, ripetuta, non restituisce più nulla. Lo stesso risultato si vede risolvendo il nome:
Finestra del terminale Resolve-DnsName desopve-dc01.proxmox.community -DnsOnly | Format-Table Name, Type, IPAddress -AutoSize
Nel Lab 25, con IPv6, all’elenco degli indirizzi di ascolto si aggiunge
fd27:199::20. -
Gli stessi record si vedono anche in forma grafica in DNS Manager (
dnsmgmt.msc) → Forward Lookup Zones →proxmox.community.
6. Sincronizzare l’ora
Sezione intitolata “6. Sincronizzare l’ora”Il primo domain controller della foresta ha il ruolo di PDC emulator ed è la fonte dell’ora per tutto il dominio. Configuralo per sincronizzarsi con il server NTP del laboratorio:
w32tm /config /manualpeerlist:"ntp.proxmox.community,0x8" /syncfromflags:manual /reliable:yes /updateRestart-Service w32timew32tm /resync /forcew32tm /query /statusGet-Date0x8 indica di interrogare il server in modalità client, /reliable:yes annuncia il DC come fonte affidabile per i membri del dominio.

Subito dopo il riavvio del servizio w32tm /resync può rispondere no time data was available: il servizio non ha ancora ricevuto la prima risposta. Conta w32tm /query /status: Source deve essere ntp.proxmox.community,0x8, Last Successful Sync Time recente e ReferenceId con l’indirizzo 172.27.199.250.
7. Configurare il proxy di sistema
Sezione intitolata “7. Configurare il proxy di sistema”I servizi di Windows che scaricano dati (ad esempio gli aggiornamenti dei certificati radice) usano il proxy WinHTTP, distinto da quello del browser. Impostalo e verifica che il proxy risponda:
netsh winhttp set proxy proxy-server="proxy.proxmox.community:3128" bypass-list="*.proxmox.community;172.27.199.*;172.32.199.*;<local>"netsh winhttp show proxy(Invoke-WebRequest -Uri http://deb.debian.org/debian/ -Proxy http://proxy.proxmox.community:3128 -UseBasicParsing).StatusCodeLa bypass-list fa sì che il traffico verso i server del laboratorio non passi dal proxy.

Verifica e test
Sezione intitolata “Verifica e test”Dal domain controller:
Resolve-DnsName desopve01.proxmox.community | Format-Table Name, Type, IPAddress -AutoSizeResolve-DnsName 172.27.199.21 | Format-Table Name, Type, NameHost -AutoSizeResolve-DnsName proxy.proxmox.community | Format-Table Name, Type, NameHost, IPAddress -AutoSizeResolve-DnsName www.proxmox.community -ErrorAction SilentlyContinue -ErrorVariable e | Out-Null; $e[0].Exception.Messagew32tm /query /source
Risultati attesi:
-
desopve01.proxmox.community→172.27.199.21, e172.27.199.21→desopve01.proxmox.community. -
proxy.proxmox.communityè un alias dinetsvc.proxmox.community→172.27.199.250. -
www.proxmox.community→ DNS name does not exist: è l’effetto della zona autoritativa descritto in Come funziona. - La fonte dell’ora è
ntp.proxmox.community,0x8.
Stato finale del lab
Sezione intitolata “Stato finale del lab”desopve-dc01.proxmox.community(172.27.199.20) è domain controller della forestaproxmox.community(NetBIOSPROXMOX), con DNS integrato in ascolto solo sull’indirizzo di gestione.- Zone diretta e inverse popolate con tutti i server del laboratorio; alias
proxyentpversonetsvc. - Ora sincronizzata con
ntp.proxmox.community; proxy WinHTTP configurato. - Desktop remoto attivo.
Cosa hai imparato
Sezione intitolata “Cosa hai imparato”- Come installare Windows Server 2025 e promuoverlo a domain controller da PowerShell.
- Perché DNS diretto e inverso e ora esatta sono prerequisiti di un cluster.
- Cosa significa avere un DNS autoritativo per un dominio che esiste anche su Internet (split DNS).
- Come un server raggiunge Internet tramite proxy, senza DNS pubblico e senza un gateway verso Internet.