Vuoi far partire il PXE anche su IPv6 con Windows Server 2022? In questo articolo trovi una guida pratica e collaudata: perché le classiche opzioni 60/66/67 non esistono in DHCPv6, quali alternative usare e come configurare DHCP, WDS, rete e client UEFI per un boot veloce e affidabile via TFTP o, meglio, via HTTP/HTTPS.
Panoramica del problema
Scenario reale: un amministratore ha installato i ruoli DHCP e Windows Deployment Services (WDS) su Windows Server 2022. In IPv4 tutto funziona grazie alle opzioni DHCP 60/66/67; in IPv6 invece il boot non parte, perché quelle opzioni non sono previste da DHCPv6. La chiave è usare le opzioni definite da RFC 5970, in particolare Opzione 59 – Boot File URL, che indica al client il percorso del file di avvio (TFTP o HTTP/HTTPS).
Come funziona il boot PXE su IPv6 (in breve)
- Il client UEFI effettua una solicitazione DHCPv6, il server risponde con parametri di rete e, se previsto, con le opzioni di network boot definite da RFC 5970.
- La più importante è l’Opzione 59 (Bootfile URL): un URL che può essere
tftp://
,http://
ohttps://
(gli indirizzi IPv6 vanno sempre racchiusi tra parentesi quadre). - Opzione 60 (Bootfile Parameters) permette di passare parametri extra al loader (ad esempio script iPXE o argomenti del kernel).
- Opzione 61 (Client System Architecture) e 62 (NII) servono a distinguere le architetture/driver; spesso non occorre impostarle manualmente se si usa un URL esplicito nell’opzione 59.
Requisiti
- Windows Server 2022 con ruoli DHCP e WDS installati (o WDS in sola modalità Transport + un web server per HTTP boot).
- Una o più reti IPv6 correttamente annunciate (RA) e raggiungibili dai client.
- Switch/Router che inoltrino DHCPv6 (eventuale DHCPv6 relay tra VLAN).
- Client con firmware UEFI e supporto PXE/IPv6 (il BIOS legacy non supporta PXE su IPv6).
Tabella riassuntiva – Soluzione operativa
Passaggio | Dettagli essenziali |
---|---|
DHCPv6 | Creare/scoprire un ambito IPv6. Aggiungere Opzione 59 – Boot File URL con l’indirizzo completo del file di avvio (es. http://[2001:db8::1]/boot/wds/boot.wim o tftp://[2001:db8::1]/boot/boot.ipxe ). (Facoltativa) Opzione 60 – Boot File Parameters per parametri aggiuntivi. |
WDS | Console WDS → Proprietà → scheda DHCP: non forzare l’opzione 60 (vale solo per IPv4). Verificare che WDS ascolti su IPv4 e IPv6 e che risponda a “Tutti i computer”. |
Rete & firewall | Aprire UDP 546/547 (DHCPv6) e le porte TFTP (UDP 69) oppure HTTP/HTTPS (80/443) se si usa l’avvio via HTTP. Assicurarsi che gli switch/router inoltrino correttamente i messaggi DHCPv6 (o configurare un relay). |
Client | Il firmware deve essere UEFI con supporto PXE/IPv6; nessun supporto per BIOS legacy. Aggiornare NIC e firmware per piena compatibilità (PXE UEFI + IPv6 + HTTP boot se previsto). |
Configurazione dettagliata di DHCPv6 (GUI e PowerShell)
Metodo GUI
- Apri DHCP → IPv6 → verifica che esista un Ambito per la tua rete (prefisso, es.
2001:db8:100::/64
). In caso contrario, crealo. - Fai clic destro su Opzioni ambito (o Opzioni server se vuoi impostarlo globalmente) → Configura opzioni.
- Cerca Opzione 59 – Boot File URL. Se presente, selezionala e inserisci l’URL completo:
- Per TFTP:
tftp://[2001:db8::1]/boot/boot.ipxe
oppuretftp://[2001:db8::1]/boot/x64/wdsmgfw.efi
- Per HTTP:
http://[2001:db8::1]/boot/wds/boot.wim
o un percorso a una risorsa statica (IIS, iPXE, ecc.).
[ ]
dentro l’URL. - Per TFTP:
- (Opzionale) Aggiungi Opzione 60 – Boot File Parameters con eventuali parametri (es.
initrd=...
, variabili per script iPXE, flag per HTTP boot). - Applica e chiudi.
Metodo PowerShell
Le cmdlet del modulo DhcpServer
semplificano e rendono ripetibile la configurazione:
# Definisci le opzioni se non presenti
Add-DhcpServerv6OptionDefinition -OptionId 59 -Name "BootFileUrl" -Type String -Description "RFC 5970 Bootfile URL"
Add-DhcpServerv6OptionDefinition -OptionId 60 -Name "BootFileParams" -Type String -Description "RFC 5970 Bootfile Parameters"
Imposta i valori a livello di ambito (usa il tuo prefisso)
$prefix = "2001:db8:100::/64"
Set-DhcpServerv6OptionValue -Prefix $prefix -OptionId 59 -Value "http://[2001:db8::1]/boot/wds/boot.wim"
Set-DhcpServerv6OptionValue -Prefix $prefix -OptionId 60 -Value "imgargs=quiet splash"
Metodo netsh (alternativa)
netsh dhcp server v6 add optiondef 59 BootFileUrl String 1 "RFC 5970 Bootfile URL"
netsh dhcp server v6 add optiondef 60 BootFileParams String 1 "RFC 5970 Bootfile Parameters"
netsh dhcp server v6 set optionvalue 59 prefix=2001:db8:100::/64 string=http://[2001:db8::1]/boot/wds/boot.wim
netsh dhcp server v6 set optionvalue 60 prefix=2001:db8:100::/64 string=imgargs=quiet
Configurazione di WDS per IPv6
- Apri Windows Deployment Services → tasto destro sul server → Proprietà → scheda DHCP.
- Verifica che non sia selezionata l’opzione “Imposta l’opzione 60 DHCP per PXEClient”: vale solo per IPv4.
- In scheda Risposta PXE imposta “Rispondi a tutti i computer (noti e sconosciuti)” o le regole che preferisci.
- Controlla in Interfacce che il servizio stia ascoltando su entrambe le pile IPv4 e IPv6 (di norma è automatico).
- Se prevedi l’avvio via HTTP, assicurati di avere un web server:
- Puoi usare IIS per servire file WIM/EFI/iPXE su
http(s)://<server>/boot/
. - Oppure usa WDS in Transport Server + iPXE (o un altro web server) per erogare i contenuti.
- Puoi usare IIS per servire file WIM/EFI/iPXE su
Rete e firewall: porte e relay
- DHCPv6: UDP 547 (server) / 546 (client). Abilita le regole “DHCPv6-In” nel firewall di Windows.
- TFTP: UDP 69 (negoziazione) + porte effimere per il trasferimento. Abilita le regole “Windows Deployment Services (TFTP-In)”.
- HTTP/HTTPS: TCP 80/443 (consigliato per performance e affidabilità rispetto a TFTP).
- Relay DHCPv6: se i client sono su VLAN diverse dal server, configura un dhcpv6 relay sul router/L3 switch (equivalente concettuale dell’IP Helper di IPv4, ma specifico per v6).
- Multicast/MLD: assicurati che la rete supporti l’inoltro dei messaggi multicast locali (es.
ff02::1:2
per DHCPv6).
Client UEFI: impostazioni chiave
- Abilita Network Stack e PXE/IPv6 nel firmware.
- Preferisci la voce di boot UEFI: IPv6 dell’interfaccia di rete.
- Aggiorna il firmware e i driver della NIC, specie su hardware datato (alcuni aggiornamenti abilitano HTTP boot e correggono problemi con DHCPv6).
- Se usi Secure Boot e HTTPS boot, prepara i certificati e le CA attese dal firmware; in alternativa inizia con HTTP per semplificare i test.
Esempi pratici di Bootfile URL (Opzione 59)
- TFTP + iPXE script:
tftp://[2001:db8::1]/boot/boot.ipxe
- TFTP + loader UEFI WDS:
tftp://[2001:db8::1]/boot/x64/wdsmgfw.efi
- HTTP Boot diretto su WIM (servito da IIS/Transport):
http://[2001:db8::1]/boot/wds/boot.wim
- HTTPS + iPXE (consigliato in produzione con certificati validi):
https://[2001:db8::1]/boot/menu.ipxe
Script iPXE di esempio
#!ipxe
Esempio minimale compatibile IPv6
echo Avvio iPXE su IPv6...
dhcp
set base http://[2001:db8::1]/boot
kernel ${base}/wimboot
initrd ${base}/boot/bcd BCD
initrd ${base}/boot/boot.sdi boot.sdi
initrd ${base}/sources/boot.wim boot.wim
boot
Verifica e diagnostica
Check rapido lato server
# DHCPv6: verifica che l'opzione 59 sia impostata sull'ambito
Get-DhcpServerv6OptionValue -Prefix "2001:db8:100::/64" | Where-Object OptionId -in 59,60
WDS: verifica stato del servizio
Get-Service -Name WDS* | Select-Object Name, Status
Porte firewall essenziali (visualizza)
Get-NetFirewallRule | Where-Object DisplayName -match "DHCPv6|Deployment|TFTP|World Wide Web" |
Select-Object DisplayName, Enabled, Direction
Event Viewer
- Applicazioni e servizi → Microsoft → Windows → DHCPv6-Server: avvisi/errore su opzioni o ambiti.
- Microsoft → Windows → Deployment-Services*: diagnosi WDS (risposte PXE, TFTP/HTTP).
Analisi pacchetti con Wireshark
Sul client o su una SPAN porta, filtra per dhcpv6
. Verifica che nelle risposte Advertise/Reply sia presente l’Option 59 con l’URL corretto. Se usi TFTP, osserva lo scambio successivo (tftp
+ UDP effimeri). Con HTTP, controlla la GET iniziale all’URL indicato.
Best practice e suggerimenti
- Preferisci HTTP/HTTPS a TFTP: trasferimenti più affidabili (finestre TCP, caching, CDN interni) e tempi d’avvio sensibilmente ridotti rispetto al TFTP.
- Segmenta per architettura: puoi usare più ambiti o classi per fornire URL diversi (x64, ARM64, WinPE personalizzati).
- Ambienti multi-subnet: configura un dhcpv6 relay anziché affidarti all’IP Helper (concetto IPv4). Riduce i broadcast/multicast fuori dal segmento e semplifica il controllo.
- UEFI only per IPv6: i client BIOS legacy non faranno mai PXE v6; prevedi coesistenza con IPv4 se devi supportarli.
- Automazione: salva le cmdlet PowerShell in uno script di baseline per riprodurre la configurazione tra ambienti.
- Secure Boot + HTTPS: quando passi in produzione, valuta l’uso di HTTPS e firme dei binari per proteggere la supply chain di boot.
Risoluzione dei problemi: checklist
- Il client non riceve l’URL (Opt 59):
- Conferma che l’ambito giusto (prefisso) abbia l’opzione 59 configurata.
- Se usi relay, verifica l’indirizzo del server DHCPv6 di destinazione.
- Controlla con Wireshark se l’opzione 59 è nel pacchetto Reply.
- Errore “file not found”:
- Controlla il percorso e l’URL scheme (TFTP vs HTTP).
- Se HTTP, verifica i permessi su IIS e la mime-type per
.wim
(IIS gestisce.wim
nativamente nelle versioni recenti; in caso contrario aggiungi un mapping).
- Timeout TFTP:
- Firewall/ACL che bloccano le porte effimere UDP.
- MTU o jumbo frame non coerenti su alcuni uplink.
- Prova HTTP boot per escludere problemi legati a TFTP.
- WDS non risponde ai client:
- Verifica che risponda a “Tutti i computer” o autorizza il MAC/UEFI guid.
- Controlla che DHCP Option 60 in WDS sia disabilitata (non si applica a IPv6).
- UEFI non mostra PXE IPv6:
- Aggiorna BIOS/UEFI e abilita la Network Stack.
- Su alcuni modelli l’HTTP Boot è voce separata: abilitala esplicitamente.
Automazione completa di esempio (PowerShell)
Uno script minimo per impostare opzioni e testare la raggiungibilità:
$prefix = "2001:db8:100::/64"
$bootHttp = "http://[2001:db8::1]/boot/wds/boot.wim"
$bootParam = "imgargs=quiet splash"
Definizioni (idempotenti)
if (-not (Get-DhcpServerv6OptionDefinition -OptionId 59 -ErrorAction SilentlyContinue)) {
Add-DhcpServerv6OptionDefinition -OptionId 59 -Name "BootFileUrl" -Type String
}
if (-not (Get-DhcpServerv6OptionDefinition -OptionId 60 -ErrorAction SilentlyContinue)) {
Add-DhcpServerv6OptionDefinition -OptionId 60 -Name "BootFileParams" -Type String
}
Valori d'ambito
Set-DhcpServerv6OptionValue -Prefix $prefix -OptionId 59 -Value $bootHttp
Set-DhcpServerv6OptionValue -Prefix $prefix -OptionId 60 -Value $bootParam
Test web se usi HTTP
Invoke-WebRequest -Uri $bootHttp -Method Head -UseBasicParsing | Select-Object StatusCode, Headers
Coesistenza IPv4/IPv6 e migrazione
Puoi mantenere il boot PXE IPv4 per i client legacy e abilitare in parallelo il boot IPv6 per i sistemi UEFI recenti. Una strategia tipica:
- IPv4: continua a usare WDS con ProxyDHCP o con le opzioni 60/66/67 dove necessario.
- IPv6: usa Opzione 59 con HTTP/HTTPS o TFTP. Progressivamente sposta i client moderni su HTTP Boot e lascia il TFTP ai casi limite.
- Uniforma i contenuti (WinPE, WIM, script) così da avere una pipeline comune indipendente dal protocollo di trasporto.
Sicurezza: HTTPS, Secure Boot e integrità
- Seleziona HTTPS boot quando possibile: protegge contro man-in-the-middle durante il download del loader/WIM.
- Firma i binari personalizzati e mantieni aggiornati i certificati. Importa in UEFI le CA necessarie secondo le policy della tua organizzazione.
- Limita l’accesso alla share
RemoteInstall
e ai virtual directory IIS che servono i file di boot.
Cosa cambia rispetto a IPv4
- Niente opzioni 66/67 in v6: al loro posto Opzione 59 (URL) e, se serve, 60.
- Nessun broadcast, ma multicast e link-local: verifica MLD/relay.
- UEFI obbligatorio: i client legacy BIOS avviano solo via IPv4.
Risultato ottenuto
Dopo aver aggiunto e popolato l’Opzione 59 nell’ambito DHCPv6, il server ha iniziato a fornire correttamente i file di avvio su IPv6: i client UEFI ricevono l’URL, scaricano il loader via HTTP/TFTP e avviano WinPE o l’immagine prevista. Il PXE boot ora funziona in entrambi i protocolli (IPv4/IPv6), come confermato dal richiedente.
Approfondimenti utili
- RFC 5970 definisce le opzioni DHCPv6 per il network boot: 59 (URL), 60 (parametri), 61 (architettura), 62 (NII), 63 (machine identifier).
- L’avvio via HTTP (supportato da WDS in modalità Transport Server o da iPXE) è sensibilmente più rapido del classico TFTP; basta indicare l’URL HTTP nell’opzione 59.
- In ambienti multi‑subnet conviene configurare un DHCPv6 relay anziché il solo IP‑Helper usato in IPv4.
Checklist finale
- Ambito IPv6 creato e attivo.
- Opzione 59 configurata con un URL
tftp://
,http://
ohttps://
corretto (con[IPv6]
). - Opzione 60 impostata (se servono parametri addizionali).
- WDS in ascolto su IPv6, regole firewall attive.
- Relay DHCPv6 configurato tra le VLAN, se necessario.
- Client UEFI aggiornati con Network Stack IPv6 abilitata.
In sintesi: abilitando Opzione 59 in DHCPv6 e ottimizzando WDS/rete, Windows Server 2022 offre una infrastruttura di boot unificata IPv4/IPv6 affidabile e veloce, ideale per il provisioning automatizzato di PC e server moderni con firmware UEFI.
Di seguito alcune risorse operative pronte da copiare nei tuoi ambienti.
Snippet riutilizzabili
Impostazione rapida via PowerShell
$prefix = "2001:db8:100::/64"
$boot = "http://[2001:db8::1]/boot/menu.ipxe"
if (-not (Get-DhcpServerv6OptionDefinition -OptionId 59 -ErrorAction SilentlyContinue)) {
Add-DhcpServerv6OptionDefinition -OptionId 59 -Name "BootFileUrl" -Type String
}
Set-DhcpServerv6OptionValue -Prefix $prefix -OptionId 59 -Value $boot
Menu iPXE minimale
#!ipxe
:menu
menu Seleziona ambiente di installazione
item winpe Windows PE (Installazione)
item diag Diagnostica hardware
choose target || goto menu
goto ${target}
:winpe
set base http://[2001:db8::1]/boot
kernel ${base}/wimboot
initrd ${base}/boot/bcd BCD
initrd ${base}/boot/boot.sdi boot.sdi
initrd ${base}/sources/boot.wim boot.wim
boot
:diag
chain http://[2001:db8::1]/diag/ipxe/diag.ipxe
Note di hardening
- Se usi HTTPS, abilita TLS 1.2/1.3 e disabilita cipher deboli.
- Proteggi i repository di immagini (WIM/EFI) con ACL e least privilege.
- Monitora i log WDS/DHCPv6 con alert su errori ricorrenti e tempi di download anomali.
Questa guida fornisce istruzioni concrete, testate sul campo, per far funzionare l’avvio PXE su IPv6 in Windows Server 2022. Applicando i passaggi descritti, potrai accelerare il deployment, ridurre i tempi di rete e prepararti a un futuro full‑IPv6.