Una mala respuesta a ping IPv6 o un arranque UEFI que solo funciona si se escribe a mano la URL pueden detener por completo una migración de red. Esta guía exhaustiva muestra, paso a paso, cómo diagnosticar y resolver ambos problemas en Windows Server 2022, desde los paquetes ICMPv6 hasta las opciones DHCPv6 que los firmware UEFI realmente entienden.
El servidor no responde a ping IPv6 en Windows Server 2022
Escenario habitual
El servidor presta simultáneamente servicios DHCPv4 y DHCPv6. El cliente recibe sin problemas su dirección IPv6 global, la gateway y las rutas estáticas, pero al ejecutar ping 2001:db8::100
la respuesta nunca llega. En IPv4, el mismo host responde con normalidad.
Por qué sucede
- Reglas de firewall predeterminadas: Windows Server 2022 instala políticas muy restrictivas; ICMPv6 se filtra de forma predeterminada para las interfaces marcadas como “Pública”.
- Vecindad de enlace interrumpida: Si el Neighbor Advertisement (equivalente ND al ARP en IPv4) no se completa, el eco no se entregará.
- Spoofing protection en tarjetas avanzadas: Algunos NIC añaden funciones de RA Guard o ND Inspection que bloquean ecos salientes entrantes.
- Software de seguridad en el cliente: Hay clientes, especialmente con suites EDR, que bloquean la salida de ICMPv6 Echo Request (Tipo 128).
Diagnóstico paso a paso
- Confirmar la asignación de direcciones
Ejecute en servidor y cliente:ipconfig /all
Compruebe que:- El prefijo global del cliente coincide con el que anuncia el servidor RA.
- Existe una Default Gateway IPv6 única y alcanzable.
- Permitir ICMPv6 en el firewall del servidor
New‑NetFirewallRule -DisplayName "Allow ICMPv6‑In" ` -Protocol ICMPv6 -IcmpType 128 -Action Allow
Verifique la regla:Get‑NetFirewallRule | Where-Object {$_.DisplayName -like "ICMPv6"} | Format-Table DisplayName, Enabled, Direction, Profile
- Comprobar la vecindad de enlace
netsh interface ipv6 show neighbors
Si la dirección global no figura, pruebe un ping a la dirección link‑local del servidor:ping fe80::a00:27ff:fe4a:1%12
(reemplazando%12
por el índice de interfaz que observe enroute print -v6
). - Analizar los paquetes con Wireshark
- Filtre por
icmpv6 && ipv6.dst==2001:db8::100
. - Compruebe si el eco llega al servidor y si este responde.
- Si el cliente ni siquiera envía el Echo Request, el problema está en el host de origen.
- Filtre por
- Revisar protección de ND/RA en switches y NIC
Desactive temporalmente RA Guard o configure listas de excepción.
Resultado práctico
Tras habilitar la regla de firewall entrante y corregir en el cliente una política EDR que bloqueaba el tipo 128, el servidor respondió de inmediato a los pings IPv6, validando que la pila de red y la asignación DHCPv6 eran correctas.
Arranque HTTP mediante DHCP: diferencias entre IPv4 e IPv6
Objetivo
Permitir que puestos UEFI se inicien por HTTP sin intervención manual, tanto en redes IPv4 como IPv6. En IPv4 basta con las clásicas opciones 60/66/67, pero en IPv6 la negociación cambia.
Funcionamiento interno del arranque por red UEFI
Los firmware modernos basados en EDK2 implementan un controlador HttpBoot que se apoya en dos transacciones DHCP:
- Una primera petición con Option 60 Vendor Class = “HTTPClient” para indicarle al servidor su capacidad.
- Un segundo Solicit/Request donde espera recibir Option 59 BootFile‑URL; la URL debe incluir el protocolo (
http
ohttps
) y, en IPv6, la dirección entre corchetes.
Diferencias clave entre pilas DHCPv4 y DHCPv6
Código | Nombre en DHCPv4 | Nombre en DHCPv6 | Uso en HttpBoot |
---|---|---|---|
60 | Vendor Class | 16 Vendor Class | Identifica al cliente como HTTP o PXE |
66 | TFTP Server Name | N/A | Obsoleto para HTTP; no se usa en IPv6 |
67 | Bootfile Name | N/A | Contiene la URL o ruta en IPv4 |
N/A | N/A | 59 Bootfile‑URL | Entrega la URL completa en IPv6 |
Limitaciones de Windows Server 2022
El servicio DHCPv6 integrado reserva los códigos 16 y 59 pero su consola (dhcpmgmt.msc) sólo permite definir opciones genéricas hasta el rango 1‑15 y 17‑31999. El intento de agregar manualmente 16/59 devuelve “La opción ya está en uso por el servidor”. En consecuencia, el cliente UEFI no recibe nunca la URL y muestra el típico mensaje:
Downloading NBP file…
HTTP boot failed.
Estrategias de mitigación
- Sustituir el servidor DHCPv6
Soluciones como ISC Kea, dnsmasq o dispositivos appliance tipo Infoblox permiten definir sin trabas las opciones 16 y 59. - ProxyDHCP + iPXE
Mantenga Windows Server como autoridad de direcciones, pero lance un serviciodnsmasq ‑‑enable‑proxy‑dhcp6
en la VLAN de arranque. Únicamente devolverá Vendor Class y Bootfile‑URL. - Uso de Windows Deployment Services (WDS)
Si el entorno admite arrancar solo por IPv4, WDS maneja automáticamente la fase TFTP/HTTP sin depender de 16/59. - Firmware con soporte de Option 17 Vendor‑Specific
Algunos fabricantes (Dell iDRAC 9.2+, HPE Gen10 iLO5) aceptan que la URL se encapsule en 17; basta enviar un blob JSON:{"bootfile-url":"http://[2001:db8::1]/EFI/Bootx64.efi"}
. - Configuración manual temporal
Para laboratorios pequeños, almacene la URL en el menú de arranque UEFI mientras migra a Kea o ProxyDHCP.
Implementación paso a paso con ISC Kea
"dhcp6": {
"option-def": [
{
"name": "vendor-class",
"code": 16,
"space": "dhcp6",
"type": "string"
},
{
"name": "bootfile-url",
"code": 59,
"space": "dhcp6",
"type": "string"
}
],
"subnet6": [
{
"subnet": "2001:db8:1::/64",
"pools": [ { "pool": "2001:db8:1::100-2001:db8:1::1ff" } ],
"option-data": [
{ "name": "vendor-class", "data": "HTTPClient" },
{ "name": "bootfile-url",
"data": "http://[2001:db8:1::1]/EFI/Bootx64.efi" }
]
}
]
}
Validación del arranque
- Encienda el equipo y abra la consola Kea:
tail ‑f /var/log/kea-dhcp6.log
- Compruebe que el mensaje incluye las opciones 16 y 59.
- Observe en el cliente UEFI que la barra de progreso de descarga muestra
http://[2001:db8:1::1]/EFI/Bootx64.efi
sin intervención.
Recomendaciones finales
- Al usar HTTPS, incluya certificados con CN/SAN en formato IPv6 literal (
[2001:db8::1]
) o defina un DNS AAAA. - Cambie la política de reintentos del firmware a 2‑3 intentos antes de pasar a “Next Boot Option”; evita bucles si el archivo no está disponible.
- Documente la asignación de opciones en el CMDB para facilitar auditorías y futuras migraciones.
Buenas prácticas combinadas para IPv6 y arranque UEFI
- Un solo origen de verdad para direcciones: use el mismo servidor (o clúster) como autoridad DHCPv6 y RA para evitar rutas incoherentes.
- Plantillas Ansible/PowerShell DSC: versione las reglas de firewall y plantillas DHCP; permiten revertir cambios si una actualización acumulativa modifica el comportamiento.
- Monitorización proactiva: exponga métricas de ICMPv6 latencia y éxito del boot HTTP al sistema Prometheus o a Azure Monitor; los picos evidencian fallas antes de que el usuario llame.
- Pruebas de regresión tras parches: Reserve un puerto espejo en switch y un host de captura para reproducir el proceso de arranque completo después de cada ciclo de parches de Windows.
Preguntas frecuentes
¿Puedo usar la misma URL para BIOS Legacy y UEFI?
Sí; iPXE reconoce el User-Agent y redirige a ldlinux.c32
o Bootx64.efi
según la arquitectura.
¿Qué pasa si el cliente soporta Boot using BRSKI (RFC 8995)?
En ese caso necesitará además una Infraestructura MASA; Windows Server no lo implementa, pero Kea permite scripts hook para interceptar la solicitud y delegarla.
¿Es seguro abrir ICMPv6 Echo Request a Internet?
El riesgo es equivalente al de ICMPv4; limite la regla al perfil Domain y a los rangos internos si el servidor tiene doble alojamiento (DMZ y LAN).
Conclusión
Habilitar ICMPv6 en el firewall y entregar correctamente las opciones 16 y 59 de DHCPv6 son los dos pilares para un entorno moderno en Windows Server 2022. Al aplicar las directrices descritas, conseguirá que los ping IPv6 respondan con la misma fiabilidad que los IPv4 y que los equipos UEFI arranquen por HTTP sin pasos manuales, acelerando despliegues y reduciendo el tiempo de resolución de incidencias.