본문 바로가기

Windows/Container

중첩 가상화로 가상머신(VM)에서 Hyper-V 실행

반응형

중첩 가상화(Nested virtualization)로 Hyper-V 가상머신에서 Hyper-V를 실행할 수 있습니다.

윈도우10의 컨테이너 기능을 사용하기 위해서 Hyper-V가 필요합니다.

Hyper-V VM으로 생성한 윈도우10에서 컨테이너를 사용할 때 중첩 가상화가 필요합니다.


1. 중첩 가상화 구성

중첩 가상화(Nested Virtualization)를 사용 하려면 다음 조건이 먼저 갖춰져야 합니다.

  • 윈도우 서버 2016 혹은 윈도우10 Anniversary Update가 실행 중인 Hyper-V 호스트
  • 윈도우 서버 2016 혹은 윈도우10 Anniversary Update가 실행 중인 Hyper-V VM
  • 설정 버전이 8.0 이상인 Hyper-V VM
  • VT-x와 EPT 기술이 적용된 인텔 프로세서

윈도우 서버 2016 혹은 윈도우10 Anniversary Update 가상 컴퓨터를 먼저 생성합니다.

본인의 CPU가 VT-x와 EPT를 지원하는지 여부는 인텔 홈페이지에서 CPU 모델명으로 검색이 가능합니다.

인텔 i5-6600의 경우 아래 링크에서 확인이 가능합니다.

https://ark.intel.com/products/88188/Intel-Core-i5-6600-Processor-6M-Cache-up-to-3_90-GHz

VM이 꺼진 상태에서 호스트OS의 파워쉘을 관리자 권한으로 실행합니다.

그리고 다음 명령어를 입력해서 중첩된 가상화를 사용할 수 있도록 합니다.

Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $true

<VMName>에는 실제 VM의 이름을 입력하면 됩니다.

실제 VM의 이름은 아래 명령어를 실행하면 나오는 좌측의 Name 부분입니다.

Get-VM

만약 중첩된 가상화를 끄고 싶다면 아래 명령어를 입력하면 됩니다.

Set-VMProcessor -VMName <VMName> -ExposeVirtualizationExtensions $false

실제 VM의 이름은 아래 명령어를 실행하면 나오는 좌측의 Name 부분입니다.

간단하게 중첩 가상화를 사용할 수 있는 준비가 완료됩니다.


2. 네트워크 설정

중첩된 가상머신의 네트워크를 구성하기 위해 MAC Address 스푸핑과 NAT모드를 사용할 수 있습니다.

MAC Address 스푸핑

호스트OS의 파워쉘에서 다음과 같이 입력하면 MAC Address 스푸핑 설정이 완료됩니다.

Get-VMNetworkAdapter -VMName <VMName> | Set-VMNetworkAdapter -MacAddressSpoofing On

VMName에는 실제 VM의 이름을 입력하면 됩니다.

명령어 대신 해당 VM의 설정에서 직접 설정이 가능한데 이 방법이 더 편리합니다.

VM을 끄고 설정에서 네트워크 어댑터의 고급 기능에서 MAC 주소 스푸핑 사용을 켜고 확인을 누릅니다.

간단하게 MAC 주소 스푸핑 사용이 적용됩니다.

다음으로 게스트 VM의 Hyper-V에 외부 스위치를 하나 추가합니다.

생성된 스위치로 VM의 Hyper-V에 VM(중첩 가상머신)을 생성합니다.

설치가 완료되고 ipconfig 등의 명령어로 확인해보면 정상적으로 IP가 적용됩니다. 


NAT(Network Address Translation)

NAT 방식은 Mac Address 스푸핑이 불가능한 퍼블릭 클라우드 환경 등에서 사용 가능한 방법입니다.

호스트와 중첩 VM 사이에 위치한 게스트OS에서 가상 NAT 스위치를 생성합니다.

IP 설정은 각 네트워크 환경에 따라 달라질 수 있습니다.

new-vmswitch -name VmNAT -SwitchType Internal
New-NetNat –Name LocalNAT –InternalIPInterfaceAddressPrefix "192.168.100.0/24"

다음과 같이 가상 NAT 스위치가 생성됩니다.

다음으로 네트워크 어댑터에 IP주소를 할당합니다.

get-netadapter "vEthernet (VmNat)" | New-NetIPAddress -IPAddress 192.168.100.1 -AddressFamily IPv4 -PrefixLength 24

다음과 같이 IP주소가 할당되고 이더넷 어댑터(Ethernet Adapter)가 추가됩니다.

중첩 가상화로 생성된 VM(Nested VM)을 VmNAT 네트워크를 사용해서 생성합니다.

게스트OS에서 생성한 중첩 VM에서 아래 명령어로 IP를 할당해줍니다.

게이트웨이에는 반드시 이전 단계에서 NAT 어댑터에 할당된 IP를 입력해야 합니다.

get-netadapter "Ethernet" | New-NetIPAddress -IPAddress 192.168.100.2 -DefaultGateway 192.168.100.1 -AddressFamily IPv4 -PrefixLength 24

게스트OS의 IP가 기본 게이트웨이로 설정되고 192.168.100.2를 중첩 VM에 할당했습니다.

외부와 인터넷 연결을 하려면 MAC Address 스푸핑을 사용해야 합니다.

마지막으로 중첩 가상화를 사용하기 위해서는 메모리를 충분히 할당해줘야 합니다.

네트워크와 메모리를 설정하면 중첩 가상화 설정이 완료됩니다.

반응형