Configurazione del debug di rete di una macchina virtuale - KDNET

Questo argomento descrive come configurare una connessione di debug del kernel a una macchina virtuale Hyper-V.

Configurazione della macchina virtuale Hyper-V

Per eseguire il debug di una macchina virtuale Hyper-V di seconda generazione, seguire questa procedura.

1. Creare una macchina virtuale con Windows installato

Per informazioni su come creare una macchina virtuale, vedere Creare una macchina virtuale con Hyper-V.

2. Definire un commutatore virtuale esterno

Per comunicare con la macchina virtuale, è possibile usare un commutatore di rete esterno virtuale. Per informazioni su come creare un commutatore di rete esterno, vedere Creare una rete virtuale.

Quando il commutatore di rete esterno è configurato, è necessario impostare le opzioni seguenti.

Opzione Valore
Tipo Connection Rete esterna
Consenti condivisione della scheda di rete da parte del sistema operativo di gestione Attivata
ID VLAN Disabilitata

3. Disabilitare l'avvio protetto

Per consentire all'utilità kdnet di aggiornare le impostazioni di avvio BCDEdit, disabilitare temporaneamente l'avvio protetto nella macchina virtuale seguendo questa procedura.

  1. Caricare la console di gestione di Hyper-V e selezionare le proprietà per la macchina virtuale.

  2. Selezionare le impostazioni di sicurezza .

  3. Deselezionare la casella di controllo Abilita avvio protetto.

  4. Scegliere OK per salvare le impostazioni.

È possibile riabilitare l'avvio protetto dopo aver completato il debug e aver disabilitato il debug del kernel nella macchina virtuale di destinazione.

4. Installare gli strumenti di debug per Windows

Gli strumenti di debug vengono usati per il debugger e l'utilità kdnet e devono essere installati. Per informazioni su come scaricare e installare gli strumenti di debug, vedere Strumenti di debug per Windows.

Configurazione del debug di rete di una macchina virtuale - KDNET

Registrare l'indirizzo IP dell'host

Per eseguire il debugger host nello stesso PC della macchina virtuale di destinazione, seguire questa procedura.

  1. Nel sistema operativo del computer host aprire una finestra del prompt dei comandi e immettere IPConfig per visualizzare la configurazione IP.

  2. Nell'output del comando individuare la scheda Ethernet configurata come commutatore virtuale esterno.

    ...
    
    Ethernet adapter vEthernet (External Virtual Switch):
    
    ...
    
    IPv4 Address. . . . . . . . . . . : <YourHostIPAddress>
    
    ...
    
    

Suggerimento

Potrebbero essere presenti più voci dell'adattatore con nomi simili. Assicurarsi e individuare il commutatore virtuale creato.

  1. Registrare l'indirizzo IPv4 del commutatore virtuale esterno che verrà usato come indirizzo host per il debug.

  2. Per verificare la connettività tra la destinazione e il computer host, aprire una finestra del prompt dei comandi con privilegi elevati nel computer di destinazione e immettere il comando seguente, dove YourHostIPAddress è l'indirizzo IP del computer host.

    ping -4 <YourHostIPAddress>
    

Configurazione del computer di destinazione della macchina virtuale

Usare l'utilità kdnet.exe per configurare automaticamente le impostazioni del debugger nel PC di destinazione, seguendo questa procedura.

  1. Individuare i file di kdnet.exe e VerifiedNICList.xml WDK. Per impostazione predefinita, si trovano qui.
C:\Program Files (x86)\Windows Kits\10\Debuggers\x64

Nota

Queste direzioni presuppongono che entrambi i PC eseguano una versione a 64 bit di Windows sia nella destinazione che nell'host. In caso contrario, l'approccio migliore consiste nell'eseguire la stessa "bitness" degli strumenti nell'host in cui è in esecuzione la destinazione. Ad esempio, se la destinazione esegue Windows a 32 bit, eseguire una versione 32 del debugger nell'host. Per altre informazioni, vedere Scelta degli strumenti di debug a 32 bit o a 64 bit.

  1. Per consentire la chiave lunga usata per tagliare e incollare, abilitare il supporto avanzato per le sessioni. Nella finestra della macchina virtuale, dal menu a discesa Visualizza abilitare Sessione avanzata.

  2. Nel computer della macchina virtuale di destinazione creare una directory C:\KDNET e copiare i file kdnet.exe e VerifiedNICList.xml in tale directory.

  3. Nel computer di destinazione aprire una finestra del prompt dei comandi come Amministrazione istrator. Immettere questo comando per verificare che il computer di destinazione disponga di una scheda di rete supportata.

    C:\KDNET>kdnet
    
    Network debugging is supported on the following NICs:
    busparams=0.25.0, Intel(R) 82579LM Gigabit Network Connection, KDNET is running on this NIC.kdnet.exe
    
  4. Digitare questo comando per impostare l'indirizzo IP del sistema host e generare una chiave di connessione univoca. Usare l'indirizzo IP del sistema host registrato in precedenza. Selezionare un indirizzo di porta univoco per ogni coppia di destinazione/host con cui si lavora, compreso nell'intervallo 50000-50039. Per questo esempio si selezionerà 50005.

    C:\>kdnet <YourIPAddress> <YourDebugPort> 
    
    Enabling network debugging on Microsoft Hypervisor Virtual Machine.
    Key=3u8smyv477z20.2owh9gl90gbxx.3sfsihzgq7di4.nh8ugnmzb4l7
    
    To debug this vm, run the following command on your debugger host machine.
    windbg -k net:port=50005,key=3u8smyv477z20.2owh9gl90gbxx.3sfsihzgq7di4.nh8ugnmzb4l7
    
    Then restart this VM by running shutdown -r -t 0 from this command prompt.
    
  5. Usare CRTL+C per copiare l'output di Windbg fornito nel buffer dei comandi. In questo modo si evita di tentare di annotare il valore della chiave lunga restituito.

  6. Riabilitare BitLocker e l'avvio protetto al termine della configurazione delle impostazioni del debugger.

  7. Poiché una macchina virtuale con supporto di sessione avanzato può verificarsi un timeout quando viene lasciata in un punto di interruzione, disabilitare il supporto della sessione avanzata usando il menu a discesa Visualizza nella macchina virtuale.

  8. La macchina virtuale verrà riavviata dopo il caricamento e l'esecuzione del debugger. Questo processo è descritto di seguito.

Avvio della sessione di debug

  1. Per connettersi al PC di destinazione, usare CTRL+V per incollare nella finestra di comando principale del sistema operativo la stringa Windbg restituita da kdnet copiata in precedenza.

    C:\Debuggers\windbg -k net:port=<YourDebugPort>,key=<YourKey> 
    

Quando si tenta di stabilire una connessione di debug di rete, potrebbe essere richiesto di consentire all'applicazione di debug (WinDbg o KD) l'accesso tramite il firewall. È consigliabile rispondere al prompt selezionando le caselle per tutti e tre i tipi di rete: dominio, privato e pubblico.

Riavvio del PC di destinazione

Una volta connesso il debugger, riavviare il computer di destinazione. Per forzare il riavvio completo della macchina virtuale, usare questo comando dal prompt dei comandi di un amministratore.

shutdown -r -t 0

Quando la macchina virtuale di destinazione viene riavviata, il debugger nel sistema operativo host deve connettersi.

Dopo la connessione alla macchina virtuale, premere l'interruzione nel debugger ed è possibile avviare il debug.

Per supportare la connessione di debug, viene aggiunta una scheda di rete di debug del kernel e visibile nelle proprietà di rete dopo il riavvio della macchina virtuale.

Risoluzione dei problemi relativi al debug della rete di macchine virtuali KDNET

Se il debugger non si connette, usare il comando ping dalla macchina virtuale di destinazione per verificare la connettività.

C:\>Ping <HostComputerIPAddress>

Qualcosa non funzionava bene e non sono sicuro di cosa...

  • Assicurarsi di aver lasciato WinDbg attraverso il firewall.
  • Verificare di usare una chiave univoca generata da BCDEdit o kdnet.

Le macchine virtuali non hanno connettività di rete

  • Aprire Gestione commutatori virtuali da Console di gestione di Hyper-V, selezionare il commutatore virtuale esistente e modificare la scheda di rete di rete di debug del kernel Microsoft selezionandola nella casella di riepilogo a discesa e quindi selezionando OK nella finestra di dialogo Gestione commutatori virtuali. Dopo aver aggiornato la scheda di interfaccia di rete del commutatore virtuale, assicurarsi di arrestare e riavviare le macchine virtuali.

Sequenza per aggiungere un ruolo Hyper-V a un PC Windows

Se il computer di destinazione è un host di macchine virtuali, è possibile configurare il debug di rete e avere comunque accesso alla rete per le macchine virtuali.

Si supponga di voler configurare il debug di rete nella situazione seguente.

  • Il computer di destinazione dispone di una singola scheda di interfaccia di rete.
  • Si intende installare il ruolo Hyper-V nel computer di destinazione.
  • Si intende creare una o più macchine virtuali nel computer di destinazione.

L'approccio migliore consiste nel configurare il debug di rete nel computer di destinazione prima di installare il ruolo Hyper-V. Le macchine virtuali avranno quindi accesso alla rete.

Se si decide di configurare il debug di rete dopo l'installazione del ruolo Hyper-V nel computer di destinazione, è necessario modificare le impostazioni di rete per le macchine virtuali per inserirle nel bridge alla scheda di debug di rete del kernel Microsoft. In caso contrario, le macchine virtuali non avranno accesso alla rete.

Vedere anche

Configurazione del debug in modalità kernel di una macchina virtuale manualmente tramite una porta COM virtuale

Configurazione manuale di un Connessione di rete