Microsoft MVP성태의 닷넷 이야기
개발 환경 구성: 83. Hyper-V의 네트워크 유형 (1) [링크 복사], [링크+제목 복사]
조회: 22718
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
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?
; http://blogs.technet.com/b/jhoward/archive/2008/06/17/hyper-v-what-are-the-uses-for-different-types-of-virtual-networks.aspx

개인적으로, 위의 글에서 그림이 가장 탐납니다. ^^




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 어댑터의 경우 WSL2이 참여하고 있는 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"에서도 응용하는 방법을 살펴보겠습니다.



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

[연관 글]


donaricano-btn



[최초 등록일: ]
[최종 수정일: 6/27/2021

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

비밀번호

댓글 쓴 사람
 




[1]  2  3  4  5  6  7  8  9  10  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
12839정성태9/15/2021242.NET Framework: 1118. C# 10 - (17) 제네릭 타입의 특성 적용파일 다운로드1
12838정성태9/13/2021245.NET Framework: 1117. C# - Task에 전달한 Action, Func 유형에 따라 달라지는 async/await 비동기 처리 [2]파일 다운로드1
12837정성태9/11/2021137VC++: 151. Golang - fmt.Errorf, errors.Is, errors.As 설명
12836정성태9/10/202196Linux: 45. 리눅스 - 실행 중인 다른 프로그램의 출력을 확인하는 방법
12835정성태9/7/2021163.NET Framework: 1116. C# 10 - (16) CallerArgumentExpression 특성 추가파일 다운로드1
12834정성태9/7/202192오류 유형: 762. Visual Studio 2019 Build Tools - 'C:\Program' is not recognized as an internal or external command, operable program or batch file.
12833정성태9/6/2021165VC++: 150. Golang - TCP client/server echo 예제 코드파일 다운로드1
12832정성태9/6/202185VC++: 149. Golang - 인터페이스 포인터가 의미 있을까요?
12831정성태9/6/2021120VC++: 148. Golang - 채널에 따른 다중 작업 처리파일 다운로드1
12830정성태9/6/202192오류 유형: 761. Internet Explorer에서 파일 다운로드 시 "Your current security settings do not allow this file to be downloaded." 오류
12829정성태9/5/2021211.NET Framework: 1115. C# 10 - (15) 구조체 타입에 기본 생성자 정의 가능파일 다운로드1
12828정성태9/4/2021202.NET Framework: 1114. C# 10 - (14) 단일 파일 내에 적용되는 namespace 선언파일 다운로드1
12827정성태9/4/2021114스크립트: 27. 파이썬 - 웹 페이지 데이터 수집을 위한 scrapy Crawler 사용법 요약
12826정성태9/3/2021171.NET Framework: 1113. C# 10 - (13) 문자열 보간 성능 개선파일 다운로드1
12825정성태9/3/202171개발 환경 구성: 603. GoLand - WSL 환경과 연동
12824정성태9/2/2021161오류 유형: 760. 파이썬 tensorflow - Dst tensor is not initialized. 오류 메시지
12823정성태9/2/2021164스크립트: 26. 파이썬 - PyCharm을 이용한 fork 디버그 방법
12822정성태9/1/202199오류 유형: 759. 파이썬 tensorflow - ValueError: Shapes (...) and (...) are incompatible
12821정성태9/1/2021150.NET Framework: 1112. C# - .NET 6부터 공개된 ISpanFormattable 사용법
12820정성태9/1/202187VC++: 147. Golang - try/catch에 대응하는 panic/recover파일 다운로드1
12819정성태8/31/2021187.NET Framework: 1111. C# - FormattableString 타입
12818정성태8/31/2021121Windows: 198. 윈도우 - 작업 관리자에서 (tensorflow 등으로 인한) GPU 연산 부하 보는 방법
12817정성태8/31/202178스크립트: 25. 파이썬 - 윈도우 환경에서 directml을 이용한 tensorflow의 AMD GPU 사용 방법
12816정성태8/30/2021358스크립트: 24. 파이썬 - tensorflow 2.6 NVidia GPU 사용 방법 [2]
12815정성태8/30/2021202개발 환경 구성: 602. WSL 2 - docker-desktop-data, docker-desktop (%LOCALAPPDATA%\Docker\wsl\data\ext4.vhdx) 파일을 다른 디렉터리로 옮기는 방법
[1]  2  3  4  5  6  7  8  9  10  11  12  13  14  15  ...