Configuración manual de la depuración del kernel de red KDNET

Herramientas de depuración para Windows admiten la depuración de kernel a través de una red. En este artículo se describe cómo configurar la depuración de red manualmente.

Importante

La configuración manual de una depuración de red es un proceso complejo y propenso a errores. Para configurar la depuración de red automáticamente, consulte Configuración automática de la depuración del kernel de red KDNET. Se recomienda encarecidamente usar la utilidad KDNET para todos los usuarios del depurador.

El equipo que ejecuta el depurador se denomina equipo host y el equipo que se depura se denomina equipo de destino. El equipo host debe ejecutar Windows 7 o posterior y el equipo de destino debe ejecutar Windows 8 o posterior.

La depuración a través de una red tiene las siguientes ventajas en comparación con la depuración mediante otros tipos de conectividad.

  • El equipo host y de destino pueden estar en cualquier lugar de la red local.
  • Es fácil depurar muchos equipos de destino desde un equipo host.
  • Dados dos equipos, es probable que ambos tengan adaptadores Ethernet. Es menos probable que ambos tengan puertos serie o 1394 puertos.
  • La depuración de red es más rápida que la depuración de puertos serie.

Adaptadores de red compatibles

El equipo host puede usar cualquier adaptador de red, pero el equipo de destino debe usar un adaptador de red compatible con las herramientas de depuración para Windows. Para obtener una lista de los adaptadores de red compatibles, consulte NIC Ethernet compatibles para la depuración de kernel de red en Windows 10 y NIC Ethernet compatibles para la depuración de kernel de red en Windows 8.1.

Instalación de las herramientas de depuración para Windows

Confirme que las herramientas de depuración para Windows estén instaladas en el sistema host. Para obtener información sobre cómo descargar e instalar las herramientas del depurador, consulte Herramientas de depuración para Windows.

Determinación de la dirección IP del equipo host

Use uno de los procedimientos siguientes para determinar la dirección IP del equipo host.

  1. En el equipo host, abra un símbolo del sistema e introduzca el comando siguiente:

    ipconfig
    

    Anote la dirección IPv4 del adaptador de red que quiere usar para la depuración.

  2. En el equipo de destino, abra un símbolo del sistema y escriba el siguiente comando, donde YourIPAddress es la dirección IP del equipo host:

    ping -4 <YourIPAddress>
    

Elección de un puerto para la depuración de red

Elija un número de puerto para la depuración tanto en el equipo host como en los equipos de destino. Puede elegir cualquier número entre 49152 y 65535. El intervalo recomendado es 50000 - 50039. El puerto que elija se abre para el acceso exclusivo del depurador que se ejecuta en el equipo host. Tenga cuidado de elegir un número de puerto que no use ninguna otra aplicación que se ejecute en el equipo host.

Nota:

El intervalo de números de puerto que se pueden usar para la depuración de red podría estar limitado por la directiva de red de su empresa. No hay forma de indicar desde el equipo host cuáles son las limitaciones. Para determinar si la directiva de su empresa limita el intervalo de puertos que se pueden usar para la depuración de red, consulte con los administradores de red.

Si conecta varios equipos de destino a un único equipo host, cada conexión debe tener un número de puerto único. Por ejemplo, si conecta 100 equipos de destino a un único equipo host, puede asignar el puerto 50000 a la primera conexión, el puerto 50001 a la segunda conexión, etc.

Nota:

 Un equipo host diferente podría usar el mismo intervalo de puertos (50000 a 50099) para conectarse a otros 100 equipos de destino.

Configuración del equipo de destino

  1. Compruebe que el equipo de destino tiene un adaptador de red compatible. Para más información, vea:

  2. Conecte el adaptador compatible a un concentrador o conmutador de red mediante un cable de red adecuado.

Importante

Antes de usar BCDEdit para cambiar la información de arranque, es posible que deba suspender temporalmente las características de seguridad de Windows, como BitLocker y Arranque seguro, en el equipo de prueba. Vuelva a habilitar estas características de seguridad cuando finalicen las pruebas y administre correctamente el equipo de prueba cuando se deshabiliten las características de seguridad.

  1. En un símbolo del sistema con privilegios elevados, escriba los siguientes comandos, donde w.x.y.z es la dirección IP del equipo host y n es un número de puerto de su elección:

    bcdedit /debug on
    
    bcdedit /dbgsettings net hostip:w.x.y.z port:n
    
  2. BCDEdit muestra una clave generada automáticamente. Copie la clave y almacénela en un dispositivo de almacenamiento extraíble, como una unidad flash USB. Necesitará la clave al iniciar una sesión de depuración en el equipo host.

  3. Use el Administrador de dispositivos para determinar los números de bus, dispositivo y función PCI para el adaptador que desea usar para la depuración. Estos valores se muestran en el Administrador de dispositivos, en Ubicación en la pestaña General. A continuación, en un símbolo del sistema con privilegios elevados, escriba el siguiente comando, donde b, d y f son el número de bus, el número de dispositivo y el número de función del adaptador:

    bcdedit /set "{dbgsettings}" busparams b.d.f
    
  4. El equipo de destino se reiniciará después de que se adjunte un depurador de kernel.

Nota:

Si tiene previsto instalar el rol de Hyper-V en el equipo de destino, consulte Configuración de la depuración de red de un host de máquina virtual.

Precaución Si el equipo de destino está en una estación de acoplamiento y tiene habilitada la depuración de red para un adaptador de red que forma parte de la estación de acoplamiento, no quite el equipo de la estación de acoplamiento. Si necesita quitar el equipo de destino de la estación de acoplamiento, deshabilite primero la depuración del kernel. Para deshabilitar la depuración de kernel en el equipo de destino, abra un símbolo del sistema como administrador y escriba el comando bcdedit /debug off. Reinicie el equipo de destino.

Iniciar la sesión de depuración

Confirme que el adaptador de red del equipo host está conectado a un concentrador de red o un conmutador mediante un cable de red adecuado.

En el equipo host, abra WinDbg. En el menú Archivo, seleccione Depuración de kernel. En el cuadro de diálogo Depuración de kernel, abra la pestaña Net. Escriba el número de puerto y la clave. Seleccione Aceptar.

También puede iniciar una sesión con WinDbg abriendo un símbolo del sistema y escribiendo el siguiente comando, donde n es el número de puerto y MyKey es la clave generada automáticamente por BCDEdit al configurar el equipo de destino:

windbg -k net:port=<n>,key=<MyKey>

Si se le pide que permita que WinDbg acceda al puerto a través del firewall, permita que WinDbg acceda al puerto para los tres tipos de red diferentes.

Uso de KD

En el equipo host, abra un símbolo del sistema. Escriba el siguiente comando, donde n es el número de puerto y MyKey es la clave generada automáticamente por BCDEdit al configurar el equipo de destino:

kd -k net:port=<n>,key=<MyKey>

Si se le pide que permita que WinDbg acceda al puerto a través del firewall, permita que WinDbg acceda al puerto para los tres tipos de red diferentes.

Reinicio del equipo de destino

Una vez que el depurador esté conectado y a la espera de conectarse, reinicie el equipo de destino. Una manera de reiniciar el equipo es usar este comando desde el símbolo del sistema de un administrador:

shutdown -r -t 0

Cuando se reinicia el destino, el depurador del sistema operativo host debe conectarse.

Después de conectarse al destino en el host, pulse interrumpir en el depurador y podrá iniciar la depuración.

Permitir el depurador a través del firewall

Al intentar establecer por primera vez una conexión de depuración de red, es posible que se le pida que permita el acceso a la aplicación de depuración (WinDbg o KD) a través del firewall. Las versiones de cliente de Windows muestran el símbolo del sistema, pero las versiones de servidor de Windows no muestran el mensaje. Debe responder al mensaje activando las casillas de los tres tipos de red: dominio, privado y público.

Si no recibe el mensaje o si no activa las casillas cuando el mensaje estaba disponible, debe usar el Panel de control para permitir el acceso a través del firewall en el equipo host donde se ejecuta el depurador. Abra Panel de control> Sistema y seguridad y seleccione Permitir una aplicación a través del Firewall de Windows.

  • (WinDbg) En la lista de aplicaciones, busque el proceso del motor de WinDbg (tcp) (todos).

  • (WinDbg clásico) En la lista de aplicaciones, busque Depurador simbólico de GUI de Windows y Depurador de kernel de Windows.

Use las casillas para permitir esas aplicaciones a través del firewall. Reinicie la aplicación de depuración (WinDbg o KD).

Clave de cifrado

Para mantener el equipo de destino seguro, los paquetes que viajan entre el equipo host y de destino deben cifrarse. Debe usar una clave de cifrado generada automáticamente (proporcionada por BCDEdit al configurar el equipo de destino). Se recomienda usar una clave de cifrado generada automáticamente, ya que es más segura y proporciona un valor único que se usa para establecer la conexión a un destino específico.

La depuración de red usa una clave de 256 bits que se especifica como cuatro valores de 64 bits, en base 36, separados por puntos. Cada valor de 64 bits se especifica usando hasta 13 caracteres. Los caracteres válidos son las letras de a a z y los dígitos del 0 al 9. No se admiten caracteres especiales.

Para especificar su propia clave, abra un símbolo del sistema con privilegios elevados en el equipo de destino. Escriba el siguiente comando, donde w.x.y.z es la dirección IP del equipo host, n es el número de puerto y Key es la clave:

bcdedit /dbgsettings net hostip:w.x.y.z port:n key:Key

El equipo de destino debe reiniciarse cada vez que se cambien dbgsettings.

Sugerencias de solución de problemas

La aplicación de depuración debe permitirse a través de firewalls

Al intentar establecer por primera vez una conexión de depuración de red, es posible que se le pida que permita el acceso a la aplicación de depuración (WinDbg o KD) a través del firewall. Las versiones de cliente de Windows muestran el símbolo del sistema, pero las versiones de servidor de Windows no muestran el mensaje. Debe responder al mensaje activando las casillas de los tres tipos de red: dominio, privado y público.

Si no aparece el aviso o si no marcó las casillas cuando el aviso estaba disponible, debe utilizar el Panel de control para permitir el acceso a través del firewall. Abra Panel de control> Sistema y seguridad y seleccione Permitir una aplicación a través del Firewall de Windows.

  • (WinDbg) En la lista de aplicaciones, busque el proceso del motor de WinDbg (tcp) (todos).

  • (WinDbg (clásico)) En la lista de aplicaciones, busque Depurador simbólico de GUI de Windows y Depurador de kernel de Windows.

Use las casillas para permitir esas aplicaciones a través del firewall. Desplácese hacia abajo y seleccione Aceptar para guardar los cambios del firewall. Reinicie el depurador.

El número de puerto debe estar en el intervalo permitido por la directiva de red.

El intervalo de números de puerto que se pueden usar para la depuración de red podría estar limitado por la directiva de red de su empresa. Para determinar si la directiva de su empresa limita el intervalo de puertos que se pueden usar para la depuración de red, consulte con el administrador de red. En el equipo de destino, abra un símbolo del sistema como administrador y escriba el comando bcdedit /dbgsettings. El resultado será similar al siguiente:

C:\> bcdedit /dbgsettings
key                     XXXXXX.XXXXX.XXXXX.XXXXX
debugtype               NET
hostip                  169.168.1.1
port                    50085
dhcp                    Yes
The operation completed successfully.

En la salida anterior, el valor del puerto es 50085. Si el valor del puerto se encuentra fuera del intervalo permitido por el administrador de red, escriba el siguiente comando. El valor w.x.y.z es la dirección IP del equipo host y YourDebugPort es un número de puerto en el intervalo permitido.

bcdedit /dbgsettings net hostip:w.x.y.z port:YourDebugPort

Después de cambiar la configuración del depurador de la máquina de destino, vuelva a ejecutar el depurador en la máquina host con la nueva configuración de puerto y, a continuación, reinicie el equipo de destino.

Use de ping para probar la conectividad

Si el depurador no se conecta, use el comando ping en el equipo de destino para comprobar la conectividad.

C:\>Ping <HostComputerIPAddress>

Nota:

Puede que esto no funcione si el equipo host no está configurado para que se pueda detectar en la red, ya que el firewall puede bloquear las solicitudes de ping. Si el firewall bloquea las solicitudes de ping, no obtendrá ninguna respuesta al hacer ping al host.

Cómo obtiene el depurador una dirección IP para el equipo de destino

KDNET en el equipo de destino intenta usar el Protocolo de configuración dinámica de host (DHCP) para obtener una dirección IP enrutable para el adaptador de red que se usa para la depuración. Si KDNET obtiene una dirección asignada por DHCP, el equipo de destino se puede depurar mediante equipos host ubicados en cualquier lugar de la red. Si KDNET no obtiene una dirección asignada por DHCP, usa el direccionamiento IP privado automático (APIPA) para obtener una dirección IP de vínculo local. Las direcciones IP de vínculo local no son enrutables, por lo que un host y un destino no pueden usar una dirección IP de vínculo local para comunicarse a través de un enrutador. En ese caso, la depuración de red funcionará si conecta el equipo host y de destino al mismo concentrador o conmutador de red.

Especifique siempre busparams al configurar KDNET en una máquina física con una NIC basada en PCI.

Si va a configurar KDNET en una máquina física con una NIC basada en PCI o PCIe, siempre debe especificar busparams para la NIC que desea usar para KDNET. Para especificar los parámetros de bus, abra el Administrador de dispositivos y busque el adaptador de red que desea usar para la depuración. Abra la página de propiedades del adaptador de red y anote el número de bus, el número de dispositivo y el número de función que se muestra en Ubicación, en la pestaña General. En un símbolo del sistema con privilegios elevados, escriba el siguiente comando, donde b, d y f son los números de bus, dispositivo y función en formato decimal:

bcdedit /set "{dbgsettings}" busparams b.d.f

Cuando el depurador se esté ejecutando en el equipo host y esté esperando para conectarse, reinicie el equipo de destino mediante el siguiente comando:

shutdown -r -t 0

Eliminación manual de entradas BCDEdit

La eliminación manual no suele ser necesaria, pero se proporciona aquí como un procedimiento de solución de problemas para situaciones inusuales.

No es necesario eliminar manualmente las entradas al usar la utilidad kdnet. Para obtener más información, consulte Configuración de la depuración automática del kernel de red KDNET.

Al utilizar bcdedit –deletevalue, debe proporcionar un nombre de elemento bcd válido. Para obtener más información, consulte BCDEdit /deletevalue.

Para eliminar manualmente entradas bcdedit, siga estos pasos:

  1. En el equipo de destino, abra un símbolo del sistema como administrador.

  2. Por ejemplo, escriba el siguiente comando para eliminar la entrada de depuración BCDEdit para la dirección IP del host:

    bcdedit -deletevalue {dbgsettings} hostip
    

Al eliminar el hostip, debe especificar target= en la línea de comandos del depurador.

  1. Como otro ejemplo, elimine la entrada del puerto utilizando el siguiente comando:

    bcdedit -deletevalue {dbgsettings} port
    

Al eliminar la entrada de puerto, KDNET usa el puerto predeterminado del depurador registrado por ICANN de 5364.

Configuración de Hyper-V

Si tiene previsto instalar el rol de Hyper-V en el equipo de destino, consulte Configuración de la depuración de red de un host de máquina virtual.

Para obtener información sobre cómo depurar una máquina virtual (VM) de Hyper-V, consulte Configuración de la depuración de red de una máquina virtual - KDNET.

Habilitación de KDNET en un host de Hyper-V que ejecuta máquinas virtuales con conectividad de red externa

A veces se produce una situación que hace que las redes de las máquinas virtuales dejen de funcionar:

  • Hyper-V se ha habilitado en el equipo, se ha creado un conmutador de red externo y apunta a una NIC física en la máquina y las máquinas virtuales se han configurado para usar ese conmutador externo para sus redes.

  • A continuación, KDNET se habilita en el sistema operativo host de Hyper-V mediante la misma NIC física a la que apunta el conmutador de red externo. El host se reinicia.

  • Todas las máquinas virtuales que usaban el conmutador externo configurado anteriormente pierden su conectividad de red después del reinicio.

Esta detención es por diseño y ocurre porque KDNET toma el control exclusivo sobre la NIC que está configurada para usar. El sistema operativo no carga el minipuerto NDIS nativo para esa NIC. El conmutador de red externo ya no se puede comunicar con el controlador de minipuerto NDIS nativo y deja de funcionar. Para solucionar esta situación, siga estos pasos:

  1. Abra el Administrador de conmutadores virtuales desde el Administrador de Hyper-V y seleccione el conmutador virtual existente. Cambie la NIC de red externa al adaptador de red de depuración de kernel de Microsoft; para ello, selecciónelo en el menú desplegable y, a continuación, seleccione Aceptar en el cuadro de diálogo Administrador de conmutadores virtuales.

  2. Después de actualizar la NIC del conmutador virtual, apague y reinicie las máquinas virtuales.

Cuando se desactiva la depuración KDNET, es necesario seguir el mismo procedimiento para volver a apuntar el conmutador externo al minipuerto NDIS nativo para la NIC. De lo contrario, la conectividad de máquina virtual se pierde cuando la máquina se reinicia después de deshabilitar la depuración.

IPv6

La compatibilidad con IPv6 se agregó en la versión 1809 de Windows.

Para usar IPv6 con el depurador, siga estos pasos:

  1. Haga ping a <debughostname> y anote la dirección IPv6 que se notifica en la respuesta de las líneas de salida. Use esta dirección IPv6 en lugar de x:y:z:p:d:q:r:n.

  2. Use BCDEdit para eliminar los valores de dirección IP existentes en dbgsettings.

    bcdedit -deletevalue {dbgsettings} hostip
    
  3. Establezca la dirección IPv6 del host. No debe haber ningún espacio en la cadena hostipv6=s:t:u:v:w:x:y:z. <YourPort> es el número de puerto de red que se va a usar para esta máquina de destino. <YourKey> es la clave de seguridad de cuatro partes. <b.d.f> son los números de ubicación de la función del dispositivo de bus para la NIC que desea usar para KDNET.

    bcdedit /dbgsettings net hostipv6:s:t:u:v:w:x:y:z port:<YourPort> key:<YourKey> busparams:<b.d.f>
    
  4. Escriba este comando para confirmar que dbgsettings está configurado correctamente.

    C:\> bcdedit /dbgsettings
    busparams               0.25.0
    key                     2steg4fzbj2sz.23418vzkd4ko3.1g34ou07z4pev.1sp3yo9yz874p
    debugtype               NET
    hostipv6                  2001:db8:0:0:ff00:0:42:8329
    port                    50010
    dhcp                    Yes
    The operation completed successfully.
    
  5. En el equipo host, use el siguiente comando para iniciar el depurador:

    Windbg -k net:port=<yournetworkportnumber>,key=<key_output_from_kdnet>,target=::<YourIPv6Address> 
    
  6. Cuando el depurador se esté ejecutando en el equipo host y esté esperando para conectarse, reinicie el equipo de destino.

  7. El depurador debe conectarse al depurador host al principio durante el arranque. Puede ver que KDNET usa una conexión IPv6 porque las direcciones IP notificadas en el mensaje conectado son direcciones IPv6 en lugar de direcciones IPv4.

Notas

  • Cada configuración bcd del depurador que permite especificar hostip tiene un elemento hostipv6 correspondiente. Hay tres.

    IPv4 IPv6 Uso
    hostip hostipv6 Para la depuración de kernel y de arranque
    targethostip targethostipv6 Específico para la depuración de kernel
    hypervisorhostip hypervisorhostipv6 Para la depuración de Hyper-v
  • Si establece la dirección de estilo hostipv6 para cualquiera de esos tipos de depuración, significa que quiere y obtendrá IPv6.

  • Si establece la dirección de estilo hostip para cualquiera de esos tipos de depuración, significa que quiere y obtendrá IPv4.

  • El destino solo hará IPv4 o IPv6, no ambos al mismo tiempo. La versión del protocolo IP que se usa se controla mediante dbgsettings de la máquina de destino. Si se establece hostip, el destino usa IPv4. Si se establece hostipv6, el destino usa IPv6.

  • Normalmente, el depurador de host selecciona automáticamente el uso de IPv4 o IPv6. De forma predeterminada, el depurador escucha tanto en un socket IPv4 como en un socket IPv6 y se conecta automáticamente en cualquiera de ellos a la máquina de destino.

  • Si desea forzar el uso de IPv6 en el depurador en el host, pero quiere que el depurador escuche una conexión desde el destino, puede agregar target=:: a la línea de comandos del depurador. :: es una dirección IPv6 de 0.

  • Si desea forzar el uso de la depuración IPv4 en el depurador en el host, pero quiere que el depurador escuche una conexión desde el destino, puede agregar target=0.0.0.0 a la línea de comandos del depurador. 0.0.0.0 es una dirección IPv4 de 0.

  • Si especifica target= en la línea de comandos del depurador y usa un nombre de equipo, el depurador convierte ese nombre de equipo en una dirección IPv4 y una dirección IPv6. A continuación, el depurador intenta conectarse en ambos.

  • Cuando se especifica target= en la línea de comandos del depurador y se usa una dirección IP, si la dirección IP contiene caracteres : , el depurador supone que es una dirección IPv6 y fuerza el uso de IPv6 para esa conexión. Si la dirección IP contiene cualquier carácter ., el depurador supone que es una dirección IPv4 y fuerza el uso de IPv4 para esa conexión.

  • Si configura IPv6 en el destino y fuerza el uso de IPv4 en la línea de comandos del depurador, no obtendrá ninguna conexión.

  • Si configura IPv4 en el destino y fuerza el uso de IPv6 en la línea de comandos del depurador, tampoco obtendrá ninguna conexión.

Consulte también