Compartir a través de


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

En este artículo se muestra cómo configurar la depuración manual del kernel de red KDNET mediante herramientas de depuración para Windows. Configuras tanto los equipos host como los de destino para habilitar la depuración de red.

Importante

La configuración de depuración de red manual es compleja, lo que la hace propensa a errores. Para la mayoría de los escenarios, conviene usar la configuración automática:Configurar la depuración del kernel de red KDNET de forma automática. Se recomienda encarecidamente la utilidad KDNET.

Lo que aprenderá:

  • Configuración de equipos host y de destino para la depuración de red
  • Establecimiento y solución de problemas de conexiones de depuración
  • Cuándo usar IPv6 frente a IPv4 para la depuración

El equipo que ejecuta el depurador se denomina equipo hosty el equipo que se está depurando 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 host y los equipos 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 admitidos

Equipo host: Cualquier adaptador de red funciona.

Equipo de destino: Debe usar un adaptador de red compatible. Compruebe la versión de Windows:

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

Intervalo de puertos recomendado: 50000-50039

Puede usar cualquier puerto de 49152 a 65535, pero el intervalo recomendado proporciona la mejor compatibilidad. El depurador usa este puerto exclusivamente, por lo que asegúrese de que ninguna otra aplicación la use.

Consideraciones importantes

  • Los firewalls corporativos pueden restringir los intervalos de puertos. Consulte con el administrador de red.
  • Cada equipo de destino necesita un puerto único (por ejemplo: 50000, 50001, 50002).
  • Los distintos equipos host pueden reutilizar el mismo intervalo de puertos.

Nota

La directiva de red de la empresa podría limitar los puertos disponibles. Consulte con los administradores de red si encuentra problemas de conexión.

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 puede 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 obtener más información, consulte:

  2. Conecte el adaptador compatible a un centro de red o conmutador 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 se completen las pruebas y administre correctamente el equipo de prueba cuando se deshabiliten las características de seguridad.

  1. En un terminal de comandos con permisos administrativos, escriba los siguientes comandos. Reemplace w.x.y.z por la dirección IP del equipo host y n por el número de puerto elegido:

    bcdedit /debug on
    bcdedit /dbgsettings net hostip:w.x.y.z port:n
    

    Por ejemplo:

    bcdedit /debug on
    bcdedit /dbgsettings net hostip:192.168.1.100 port:50000
    
  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 reinicia después de adjuntar 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 habilita la depuración de red para un adaptador que forma parte de esta, no lo retire de la estación. 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

Antes de comenzar: Asegúrese de que el adaptador de red del equipo host está conectado a un centro de red o conmutador.

Opción 1: Usar WinDbg (GUI)

  1. Abra WinDbg en el equipo host.
  2. Seleccione Archivo>Depuración del Kernel.
  3. Abra la pestaña Net .
  4. Escriba el número de puerto y la clave.
  5. Seleccione Aceptar.

Opción 2: Usar WinDbg (línea de comandos)

También puede iniciar una sesión con WinDbg abriendo un símbolo del sistema de comandos y escribiendo el siguiente comando, donde n es su número de puerto y MyKey es la clave que BCDEdit generó automáticamente 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.

Utilice 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 que BCDEdit generó automáticamente 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.

Reiniciar el equipo de destino

Cuando el depurador se conecta y espera, reinicie el ordenador 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 el destino se reinicia, el depurador se conecta al sistema operativo host.

Después de conectarse al destino en el host, seleccione Interrumpir en el depurador y puede 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 mensaje, pero las versiones de servidor de Windows no muestran el mensaje. Responda 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, use 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 de 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 GUI de Windows y Depurador de Núcleo 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 host y los equipos de destino deben cifrarse. Use una clave de cifrado generada automáticamente (proporcionada por BCDEdit al configurar el equipo de destino). Una clave de cifrado generada automáticamente 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 un a través de z y los dígitos del 0 al 9. No se permiten caracteres especiales.

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

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

El equipo de destino debe reiniciarse cada vez que cambie los dbgsettings.

Sugerencias para solucionar problemas

Permitir la aplicación de depuración 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 mensaje, pero las versiones de servidor de Windows no muestran el mensaje. Responda 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. Abra Panel de control > Sistema y seguridad y seleccione Permitir una aplicación a través de 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.

La política de red de su empresa podría limitar el rango de puertos de red que puede usar para la depuración de la red. Para averiguar si la política de su empresa limita el intervalo de puertos para la depuración de red, consulte al administrador de red. En el equipo de destino, abra un símbolo del sistema como administrador y escriba el comando bcdedit /dbgsettings. La salida es similar a la del ejemplo 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 está 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.

Uso 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

Es posible que este método no funcione si el equipo host no está configurado para que se pueda detectar en la red, ya que el firewall podría 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, los equipos host en cualquier parte de la red pueden depurar el equipo de destino. Si KDNET no puede obtener una dirección asignada por DHCP, usa 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 funciona si conecta el host y los equipos de destino al mismo centro de red o conmutador.

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, especifique siempre los parámetros de 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 aparece 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 ejecuta en el equipo host y está esperando a conectarse, reinicie el equipo de destino mediante el comando siguiente:

shutdown -r -t 0

Eliminar manualmente entradas BCDEdit

Normalmente no es necesario eliminar manualmente entradas BCDEdit. Sin embargo, puede usar este procedimiento para solucionar 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 usar bcdedit –deletevalue, debe proporcionar un nombre de elemento bcd válido. Para obtener más información, vea BCDEdit /deletevalue.

Para eliminar manualmente entradas bcdedit, complete los pasos siguientes:

  1. En el equipo de destino, abra una ventana de comandos con privilegios de administrador.

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

    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 de puerto mediante el comando siguiente:

    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 desea instalar el rol de Hyper-V en el equipo de destino, consulte Cómo configurar 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 deje de funcionar:

  • Habilite Hyper-V en el equipo, cree un conmutador de red externo que apunte a una NIC física en la máquina y configure las máquinas virtuales para que usen ese conmutador externo para sus redes.

  • Habilite KDNET en el sistema operativo host de Hyper-V mediante la misma NIC física a la que apunta el conmutador de red externo. Reinicie el host.

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

Esta parada es intencional. KDNET toma control exclusivo sobre la NIC que está configurada para usar. El sistema operativo no carga el miniporte NDIS nativo para esa NIC. El conmutador de red externo ya no puede comunicarse con el controlador de miniport NDIS nativo y deja de funcionar. Para solucionar esta situación, complete los pasos siguientes:

  1. Abra el Administrador de conmutadores virtuales desde Hyper-V Manager 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.

Al apagar la depuración de KDNET, siga el mismo procedimiento para redirigir el conmutador externo a la miniport NDIS nativa para la NIC. De lo contrario, se pierde la conectividad de la máquina virtual cuando reinicias la máquina después de deshabilitar la depuración.

IPv6

La versión 1809 de Windows agrega compatibilidad con IPv6.

Para usar IPv6 con el depurador, complete los pasos siguientes:

  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. La hostipv6=s:t:u:v:w:x:y:z cadena no puede contener ningún espacio. <yourPort> es el número de puerto de red que se 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 se conecta 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 del depurador BCD para especificar el hostip tiene un elemento correspondiente hostipv6. Hay tres pares.
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 el estilo de dirección hostipv6 para cualquiera de esos tipos de depuración, obtendrá IPv6.

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

  • El destino solo hace IPv4 o IPv6, no ambos al mismo tiempo. La versión del protocolo IP que se usa se controla mediante el dbgsettings de la máquina de destino. Si establece hostip, el destino usa IPv4. Si 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 en una dirección IPv4 y una dirección IPv6. A continuación, el depurador intenta conectarse en ambos.

  • Al especificar target= en la línea de comandos del depurador y usar una dirección IP, si la dirección IP contiene cualquier carácter : , 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 algún . caracteres, 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.