Virtual Machine의 네트워크 디버깅 설정 - KDNET

  • 아티클
  • 2023. 03. 08.
  •  

이 문서의 내용

  1. Hyper-V Virtual Machine 설치
  2. Virtual Machine의 네트워크 디버깅 설정 - KDNET
  3. VM 대상 컴퓨터 설정
  4. 디버깅 세션 시작

이 항목에서는 Hyper-V VM(가상 머신)에 대한 커널 디버깅 연결을 구성하는 방법에 대해 설명합니다.

Hyper-V Virtual Machine 설치

Gen 2 Hyper-V VM(가상 머신)을 디버그하려면 다음 단계를 완료합니다.

1. Windows가 설치된 VM 만들기

VM을 만드는 방법에 대한 자세한 내용은 Hyper-V를 사용하여 가상 머신 만들기를 참조하세요.

2. 외부 가상 스위치 정의

VM과 통신하기 위해 가상 외부 네트워크 스위치를 사용할 수 있습니다. 외부 네트워크 스위치를 만드는 방법에 대한 자세한 내용은 가상 네트워크 만들기를 참조하세요.

외부 네트워크 스위치가 구성된 경우 다음 옵션을 설정해야 합니다.

 
옵션 값
연결 유형 외부 네트워크
이 네트워크 어댑터를 공유하는 관리 운영 체제 허용 사용
VLAN ID 사용 안 함

3. 보안 부팅 사용 안 함

kdnet 유틸리티가 BCDEdit 부팅 설정을 업데이트할 수 있도록 하려면 다음 단계에 따라 가상 머신에서 보안 부팅을 일시적으로 사용하지 않도록 설정합니다.

  1. Hyper-V 관리자를 로드하고 VM의 속성을 선택합니다.
  2. 보안 설정을 선택합니다.
  3. 보안 부팅 사용 확인란을 검사.
  4. 확인을 선택하여 설정을 저장합니다.

디버깅을 완료하고 대상 VM에서 커널 디버깅을 사용하지 않도록 설정한 후에는 보안 부팅을 다시 사용하도록 설정할 수 있습니다.

4. Windows용 디버깅 도구 설치

디버깅 도구는 디버거 및 kdnet 유틸리티에 사용되며 설치해야 합니다. 디버깅 도구를 다운로드하고 설치하는 방법에 대한 자세한 내용은 Windows용 디버깅 도구를 참조하세요.

Virtual Machine의 네트워크 디버깅 설정 - KDNET

호스트 IP 주소 기록

대상 가상 머신과 동일한 PC에서 호스트 디버거를 실행하려면 다음 단계를 수행합니다.

  1. 호스트 컴퓨터 OS에서 명령 프롬프트 창을 열고 IPConfig 를 입력하여 IP 구성을 표시합니다.
  2. 명령 출력에서 외부 가상 스위치로 구성한 이더넷 어댑터를 찾습니다.
  3. 콘솔
  1. ...
    
    Ethernet adapter vEthernet (External Virtual Switch):
    
    ...
    
    IPv4 Address. . . . . . . . . . . : <YourHostIPAddress>
    
    ...
    
    

이름이 비슷한 어댑터 항목이 여러 대 있을 수 있습니다. 만든 가상 스위치를 찾아야 합니다.

  1. 디버깅을 위한 호스트 주소로 사용할 외부 가상 스위치의 IPv4 주소를 기록합니다.
  2. 대상 컴퓨터와 호스트 컴퓨터 간의 연결을 확인하려면 대상 컴퓨터에서 관리자 권한 명령 프롬프트 창을 열고 다음 명령을 입력합니다. 여기서 YourHostIPAddress 는 호스트 컴퓨터의 IP 주소입니다.
  3. 콘솔
  1. ping -4 <YourHostIPAddress>
    

VM 대상 컴퓨터 설정

kdnet.exe 유틸리티를 사용하여 다음 단계에 따라 대상 PC에서 디버거 설정을 자동으로 구성합니다.

  1. WDK kdnet.exe 찾아 파일을VerifiedNICList.xml . 기본적으로 여기에 있습니다.
콘솔
C:\Program Files (x86)\Windows Kits\10\Debuggers\x64

참고

이러한 지침에서는 두 PC가 모두 대상 및 호스트 모두에서 64비트 버전의 Windows를 실행한다고 가정합니다. 그렇지 않은 경우 가장 좋은 방법은 대상이 실행 중인 호스트에서 도구의 동일한 "비트 수"를 실행하는 것입니다. 예를 들어 대상이 32비트 Windows를 실행하는 경우 호스트에서 32개 버전의 디버거를 실행합니다. 자세한 내용은 32비트 또는 64비트 디버깅 도구 선택을 참조하세요.

  1. 잘라내고 붙여넣는 데 사용되는 긴 키를 허용하려면 향상된 세션 지원을 사용하도록 설정합니다. VM 창의 보기 풀다운 메뉴에서 고급 세션을 사용하도록 설정합니다.
  2. 대상 VM 컴퓨터에서 C:\KDNET 디렉터리를 만들고 kdnet.exe 복사하고 파일을 해당 디렉터리에VerifiedNICList.xml.
  3. 대상 컴퓨터에서 관리자 권한으로 명령 프롬프트 창을 엽니다. 대상 컴퓨터에 지원되는 네트워크 어댑터가 있는지 확인하려면 이 명령을 입력합니다.
  4. 콘솔

 

  • 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
    
  • 이 명령을 입력하여 호스트 시스템의 IP 주소를 설정하고 고유한 연결 키를 생성합니다. 이전에 기록한 호스트 시스템의 IP 주소를 사용합니다. 50000-50039 범위에서 작업하는 각 대상/호스트 쌍에 대해 고유한 포트 주소를 선택합니다. 이 예제에서는 50005를 선택합니다.
  • 콘솔

 

  1. 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.
    
  2. CRTL+C를 사용하여 제공된 windbg 출력을 명령 버퍼에 복사합니다. 이렇게 하면 반환되는 긴 키 값을 기록하지 않아도 됩니다.
  3. 디버거 설정 구성이 완료되면 BitLocker 및 보안 부팅을 다시 사용하도록 설정합니다.
  4. 세션 지원이 강화된 VM은 중단점에 남아 있을 때 시간 초과될 수 있으므로 VM의 보기 풀다운 메뉴를 사용하여 고급 세션 지원을 사용하지 않도록 설정합니다.
  5. 디버거를 로드하고 실행한 후 VM이 다시 시작됩니다. 이 프로세스는 다음에 설명되어 있습니다.

디버깅 세션 시작

  1. 대상 PC에 연결하려면 Ctrl+V를 사용하여 이전에 복사한 kdnet에서 반환한 windbg 문자열을 기본 OS 명령 창에 붙여넣습니다.
  2. 콘솔
  1. C:\Debuggers\windbg -k net:port=<YourDebugPort>,key=<YourKey> 
    

네트워크 디버깅 연결을 처음 설정하려고 하면 방화벽을 통해 디버깅 애플리케이션(WinDbg 또는 KD) 액세스를 허용하라는 메시지가 표시될 수 있습니다. 도메인, 프라이빗 및 퍼블릭의 세 가지 네트워크 유형 모두 에 대한 확인란을 선택하여 프롬프트에 응답해야 합니다.

대상 PC 다시 시작

디버거가 연결되면 대상 컴퓨터를 다시 부팅합니다. VM을 강제로 완전히 다시 시작하려면 관리자의 명령 프롬프트에서 이 명령을 사용합니다.

콘솔
shutdown -r -t 0

대상 가상 머신을 다시 시작하면 호스트 OS의 디버거가 연결되어야 합니다.

VM에 연결한 후 디버거에서 중단을 누르고 디버깅을 시작할 수 있습니다.

디버깅 연결을 지원하려면 VM을 다시 부팅한 후 커널 디버그 네트워크 어댑터가 추가되고 네트워크 속성에 표시됩니다.

KDNET Virtual Machine 네트워크 디버깅 문제 해결

디버거가 연결되지 않으면 대상 VM의 ping 명령을 사용하여 연결을 확인합니다.

콘솔
C:\>Ping <HostComputerIPAddress>

뭔가 제대로 작동 하지 않았다 그리고 난 확실 하지 않다...

  • 방화벽을 통해 WinDbg를 허용했는지 확인합니다.
  • BCDEdit 또는 kdnet에서 생성된 고유 키를 사용하고 있는지 확인합니다.

내 VM에 네트워크 연결이 없습니다.

  • Hyper-V 관리자에서 가상 스위치 관리자를 열고 기존 가상 스위치를 선택한 다음, 드롭다운 상자에서 선택한 다음 가상 스위치 관리자 대화 상자에서 확인을 선택하여 외부 네트워크 NIC를 Microsoft 커널 디버그 네트워크 어댑터로 변경합니다. 가상 스위치 NIC를 업데이트한 후 VM을 종료하고 다시 시작해야 합니다.

Windows PC에 Hyper-V 역할을 추가하는 시퀀스

대상 컴퓨터가 가상 머신 호스트인 경우 네트워크 디버깅을 설정하고 가상 머신에 대한 네트워크 액세스 권한을 계속 가질 수 있습니다.

다음과 같은 상황에서 네트워크 디버깅을 설정하려는 경우를 가정해 보겠습니다.

  • 대상 컴퓨터에는 카드 단일 네트워크 인터페이스가 있습니다.
  • 대상 컴퓨터에 Hyper-V 역할을 설치하려고 합니다.
  • 대상 컴퓨터에 하나 이상의 가상 머신을 만들려고 합니다.

가장 좋은 방법은 Hyper-V 역할을 설치하기 전에 대상 컴퓨터에서 네트워크 디버깅을 설정하는 것입니다. 그러면 가상 머신이 네트워크에 액세스할 수 있습니다.

Hyper-V 역할이 대상 컴퓨터에 설치된 후 네트워크 디버깅을 설정하려는 경우 가상 머신의 네트워크 설정을 변경하여 Microsoft 커널 네트워크 디버그 어댑터에 연결해야 합니다. 그렇지 않으면 가상 머신이 네트워크에 액세스할 수 없습니다.

참고 항목

Virtual COM 포트를 사용하여 수동으로 Virtual Machine의 Kernel-Mode 디버깅 설정

수동으로 네트워크 연결 설정

Posted by gurupia
,