Microsoft MVP성태의 닷넷 이야기
개발 환경 구성: 83. Hyper-V의 네트워크 유형 (1) [링크 복사], [링크+제목 복사],
조회: 38018
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
(연관된 글이 1개 있습니다.)
(시리즈 글이 14개 있습니다.)
개발 환경 구성: 83. Hyper-V의 네트워크 유형 (1)
; https://www.sysnet.pe.kr/2/0/910

개발 환경 구성: 84. Hyper-V의 네트워크 유형 (2)
; https://www.sysnet.pe.kr/2/0/915

개발 환경 구성: 87. Hyper-V의 네트워크 유형 (3)
; https://www.sysnet.pe.kr/2/0/918

Windows: 59. Hyper-V Internal 네트워크 VM의 인터넷 접속
; https://www.sysnet.pe.kr/2/0/1335

개발 환경 구성: 330. Hyper-V VM의 Internal Network를 Private 유형으로 만드는 방법
; https://www.sysnet.pe.kr/2/0/11299

Windows: 174. WSL 2의 네트워크 통신 방법
; https://www.sysnet.pe.kr/2/0/12347

개발 환경 구성: 517. Hyper-V Internal 네트워크에 NAT을 이용한 인터넷 연결 제공
; https://www.sysnet.pe.kr/2/0/12352

개발 환경 구성: 522. WSL 2 인스턴스와 호스트 측의 Hyper-V에 운영 중인 VM과 네트워크 연결을 하는 방법
; https://www.sysnet.pe.kr/2/0/12494

개발 환경 구성: 656. Internal Network 유형의 스위치로 공유한 Hyper-V의 VM과 호스트가 통신이 안 되는 경우
; https://www.sysnet.pe.kr/2/0/13199

개발 환경 구성: 660. WSL 2 내부로부터 호스트 측의 네트워크로 UDP 데이터가 1개의 패킷으로만 제한되는 문제
; https://www.sysnet.pe.kr/2/0/13230

개발 환경 구성: 665. WSL 2의 네트워크 통신 방법 - 두 번째 이야기
; https://www.sysnet.pe.kr/2/0/13256

개발 환경 구성: 670. WSL 2에서 호스팅 중인 TCP 서버를 외부에서 접근하는 방법
; https://www.sysnet.pe.kr/2/0/13280

개발 환경 구성: 712. Windows - WSL 2의 네트워크 통신 방법 - 세 번째 이야기 (같은 IP를 공유하는 WSL 2 인스턴스)
; https://www.sysnet.pe.kr/2/0/13647

개발 환경 구성: 714. WSL 2 인스턴스와 호스트 측의 Hyper-V에 운영 중인 VM과 네트워크 연결을 하는 방법 - 두 번째 이야기
; https://www.sysnet.pe.kr/2/0/13658




Hyper-V의 네트워크 유형 (1)

지난 이야기까지 해서 "Windows Virtual PC"에서 설정할 수 있는 네트워크 유형을 살펴보았는데요.

Windows Virtual PC의 네트워크 유형 (1)
; https://www.sysnet.pe.kr/2/0/906

Windows Virtual PC의 네트워크 유형 (2)
; https://www.sysnet.pe.kr/2/0/907

Windows Virtual PC의 네트워크 유형 (3)
; https://www.sysnet.pe.kr/2/0/908

이번에는 Hyper-V에서의 네트워크 유형을 살펴보겠습니다. 역시나 이번에도 이와 관련해서 웹 검색을 해보니 다음과 같은 좋은 자료가 있군요. ^^

Hyper-V: What are the uses for different types of virtual networks?
; https://learn.microsoft.com/en-us/archive/blogs/jhoward/hyper-v-what-are-the-uses-for-different-types-of-virtual-networks

개인적으로, 위의 글에서 그림이 가장 탐납니다. ^^ 그리고 아래의 그림이 가장 간단하게 3개의 유형을 나타내주고 있습니다.

[출처: https://www.starwindsoftware.com/blog/hyper-v-networking-101-nics-and-switches#fancy-image-2]
hyper_v_network_type_diff_1.png




1. External

External 로 구성된 예를 보면, 아래와 같은데요.

hyper-v_virtual_network_1.png

여기서의 "External"유형은 "Windows Virtual PC 의 네트워크 유형 (1)" 글에서 설명했던 "Virtual Network"와 유사합니다.
뭐... 더 이상 설명이 필요없겠지요. ^^

[정리: 통신 가능 유형]

VM <-> VM
VM <-> HOST
VM <-> HOST 가 참여하고 있는 네트워크의 다른 PC
VM <-> 외부망


2. Internal

(VMWare의 VMnet1 어댑터 유형과 비슷하고, VMnet8 어댑터의 경우 Default Switch(Default Network) 동작 방식과 유사)
(VMNet1 Host-only == Internal, VMnet8 NAT == Default Switch(Default Network), VMnet0 Bridged == External)

Hyper-V의 "Internal"의 경우, "Windows Virtual PC"의 "Internal Network"와는 차이가 있습니다. 오히려, 다음에 설명하는 "Private" 유형이 "Internal Network"와 대응될 수 있습니다.

간단히 생각해서, "Internal" 유형을 "라우터"와의 연결이 끊긴 "스위치 허브"에 VM과 호스트가 같이 연결된 구조라고 보시면 되는데, 이 유형의 네트워크를 생성해 두면 호스트 측에도 "Internal"에 대응되는 가상 어댑터가 제공된다는 특징이 있습니다.

따라서, 외부로의 인터넷 연결은 안되지만 "Hyper-V 를 호스팅하는 PC"와의 통신은 가능합니다.

아래는 "Internal"로 설정된 VM의 IP 설정예입니다.

=== A VM ===
IP Address: 169.254.222.37
Subnet Mask: 255.255.0.0
Default Gateway: [empty]

=== Internal로 인해 생성된 호스트 PC의 어댑터 ===
IP Address: 169.254.139.48
Subnet Mask: 255.255.0.0
Default Gateway:

보시는 것처럼 동일한 B 클래스의 "169.254.0.0" 네트워크로 묶이게 됩니다.

[정리: 통신 가능 유형]

VM <-> VM
VM <-> HOST


3. Private

위에서 언급한 것처럼, 이 네트워크 유형이 "Windows Virtual PC"의 "Internal Network" 유형과 동일하다고 보시면 됩니다. Hyper-V 관리자에서 "Private Network"을 생성해도 "Hyper-V를 호스팅하는 PC" 측에는 아무런 가상 어댑터가 생성되지 않는 차이를 제외하고는 "Internal"과 같습니다.

할당받은 네트워크 주소를 보면,

=== B VM ===
IP Address: 169.254.235.193
Subnet Mask: 255.255.0.0
Default Gateway: [empty]

"Internal" 유형으로 설정된 VM에서처럼 B 클래스의 "169.254.0.0" 네트워크 주소를 할당받지만 Private과 Internal 간의 통신은 가능하지 않습니다. 어찌 보면 당연하겠지만, "Private Network"를 2개 생성하는 경우에도 그들간의 통신은 허용되지 않고, 다중 "Internal" 역시 "169.254.0.0" 네트워크만 같을 뿐 개별적으로 동작하게 됩니다. (아마도, 내부적으로는 VLAN 인덱스가 다르게 할당되어 관리되는 것 아닐까요?)

[정리: 통신 가능 유형]

VM <-> VM


4. Dedicated

이 유형은, 사실 저도 "Dedicated"라고 불려진다는 것을 "Hyper-V: What are the uses for different types of virtual networks?" 글을 보고 알았습니다.

위에서 설명한 "External", "Internal", "Private" 유형과는 달리 명시적으로 Hyper-V의 네트워크 설정에는 없습니다. 단지 "External" 유형의 변종인데요. 다음과 같이 네트워크 설정에서 "Allow management operating system to share this network adapter" 옵션을 해제하면 됩니다.

hyper-v_virtual_network_2.png

이렇게 되면, "External" 네트워크와 매핑되는 LAN 어댑터(위의 그림에서는 "Realtek PCIe GBE Family Controller")를 "Hyper-V 를 호스팅하는 운영체제"에서는 사용할 수가 없습니다. 현실적으로 볼 때, "External" 유형의 네트워크 하나 당 LAN 어댑터 하나만 매핑된다는 것을 고려해 보면 호스트 운영체제의 네트워크를 불능 상태로 만들 수는 없기 때문에 네트워크 카드가 2장 이상인 경우 "Dedicated" 네트워크 유형을 구성할 수 있습니다. 이 때문에 내부 VM들이 인터넷 연결이 가능하냐에 대해서는 해당 LAN 어댑터가 연결된 네트워크 망에 좌우됩니다.

그럼, Dedicated 유형을 사용할 만한 적절한 사례가 있을까요? 제가 하나 꼽아본다면, 여러 대의 서버에서 Hyper-V를 각각 호스팅하는 경우 거기에서 호스팅되고 있는 VM들을 별도의 네트워크 망으로 서로 묶고 싶다면 적절한 활용예가 될 수 있을 것입니다. (물론, 외부로부터의 접근이 허용될 수 있다면 External 유형으로 편하게 설정하는 것이 더 좋습니다.)

[정리: 통신 가능 유형]

VM <-> VM
VM <-> "Dedicated"로 할당된 LAN 어댑터가 참여하고 있던 네트워크의 다른 PC
VM <-> "Dedicated"로 할당된 다른 머신에서 호스팅되고 있는 Hyper-V의 VM





"Windows Virtual PC"에서 제공되는 네트워크 유형과 비교하면, "Shared Networking (NAT)" 유형이 빠졌고 Dedicated 유형이 추가된 정도입니다.

사실, 어찌 보면 "인터넷"이 되어야 하는 보통의 상황과 비교하면 오히려 "Shared Networking (NAT)" 유형이 Hyper-V에는 없기 때문에 선택의 폭이 넓지 않습니다. 이 때문에 아마도 대부분의 경우 "External" 유형으로만 사용하고 계실 것입니다.

여기까지 Hyper-V에서 제공되는 기본적인 네트워크 유형만 살펴보았고, 앞으로의 글에서는 "Windows Virtual PC" 연재에서 했던 것처럼, 다양한 네트워크 조합들을 "Hyper-V"에서도 응용하는 방법을 살펴보겠습니다.



[이 토픽에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]

[연관 글]






[최초 등록일: ]
[최종 수정일: 6/14/2024]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 61  62  63  64  65  66  67  68  69  70  71  72  73  74  [75]  ...
NoWriterDateCnt.TitleFile(s)
12061정성태11/20/201919434Windows: 167. CoTaskMemAlloc/CoTaskMemFree과 윈도우 Heap의 관계
12060정성태11/20/201921033디버깅 기술: 132. windbg/Visual Studio - HeapFree x64의 동작 분석
12059정성태11/20/201920337디버깅 기술: 131. windbg/Visual Studio - HeapFree x86의 동작 분석
12058정성태11/19/201920914디버깅 기술: 130. windbg - CoTaskMemFree/FreeCoTaskMem에서 발생한 덤프 분석 사례
12057정성태11/18/201916734오류 유형: 579. Visual Studio - Memory 창에서 유효한 주소 영역임에도 "Unable to evaluate the expression." 오류 출력
12056정성태11/18/201922452개발 환경 구성: 464. "Microsoft Visual Studio Installer Projects" 프로젝트로 EXE 서명 및 MSI 파일 서명 방법파일 다운로드1
12055정성태11/17/201916530개발 환경 구성: 463. Visual Studio의 Ctrl + Alt + M, 1 (Memory 1) 등의 단축키가 동작하지 않는 경우
12054정성태11/15/201918158.NET Framework: 869. C# - 일부러 GC Heap을 깨뜨려 GC 수행 시 비정상 종료시키는 예제
12053정성태11/15/201919835Windows: 166. 윈도우 10 - 명령행 창(cmd.exe) 속성에 (DotumChe, GulimChe, GungsuhChe 등의) 한글 폰트가 없는 경우
12052정성태11/15/201918669오류 유형: 578. Azure - 일정(schedule)에 등록한 runbook이 1년 후 실행이 안 되는 문제(Reason - The key used is expired.)
12051정성태11/14/201922139개발 환경 구성: 462. 시작하자마자 비정상 종료하는 프로세스의 메모리 덤프 - procdump [1]
12050정성태11/14/201919698Windows: 165. AcLayers의 API 후킹과 FaultTolerantHeap
12049정성태11/13/201920215.NET Framework: 868. (닷넷 프로세스를 대상으로) 디버거 방식이 아닌 CLR Profiler를 이용해 procdump.exe 기능 구현
12048정성태11/12/201920373Windows: 164. GUID 이름의 볼륨에 해당하는 파티션을 찾는 방법
12047정성태11/12/201922669Windows: 163. 안전하게 eject시킨 USB 장치를 물리적인 재연결 없이 다시 인식시키는 방법
12046정성태10/29/201917189오류 유형: 577. windbg - The call to LoadLibrary(...\sos.dll) failed, Win32 error 0n193
12045정성태10/27/201917147오류 유형: 576. mstest.exe 실행 시 "Visual Studio Enterprise is required to execute the test." 오류 - 두 번째 이야기
12044정성태10/27/201916718오류 유형: 575. mstest.exe - System.Resources.MissingSatelliteAssemblyException: The satellite assembly named "Microsoft.VisualStudio.ProductKeyDialog.resources.dll, ..."
12043정성태10/27/201918306오류 유형: 574. Windows 10 설치 시 오류 - 0xC1900101 - 0x4001E
12042정성태10/26/201917948오류 유형: 573. OneDrive 하위에 위치한 Documents, Desktop 폴더에 대한 권한 변경 시 "Unable to display current owner"
12041정성태10/23/201918907오류 유형: 572. mstest.exe - The load test results database could not be opened.
12040정성태10/23/201919348오류 유형: 571. Unhandled Exception: System.Net.Mail.SmtpException: Transaction failed. The server response was: 5.2.0 STOREDRV.Submission.Exception:SendAsDeniedException.MapiExceptionSendAsDenied
12039정성태10/22/201916778스크립트: 16. cmd.exe의 for 문에서는 ERRORLEVEL이 설정되지 않는 문제
12038정성태10/17/201916882오류 유형: 570. SQL Server 2019 RC1 - SQL Client Connectivity SDK 설치 오류
12037정성태10/15/201924363.NET Framework: 867. C# - Encoding.Default 값을 바꿀 수 있을까요?파일 다운로드1
12036정성태10/14/201925523.NET Framework: 866. C# - 고성능이 필요한 환경에서 GC가 발생하지 않는 네이티브 힙 사용파일 다운로드1
... 61  62  63  64  65  66  67  68  69  70  71  72  73  74  [75]  ...