Microsoft MVP성태의 닷넷 이야기
개발 환경 구성: 83. Hyper-V의 네트워크 유형 (1) [링크 복사], [링크+제목 복사]
조회: 31320
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 
(연관된 글이 1개 있습니다.)
(시리즈 글이 12개 있습니다.)
개발 환경 구성: 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. WSL2 인스턴스와 호스트 측의 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




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

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




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"에서도 응용하는 방법을 살펴보겠습니다.



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

[연관 글]






[최초 등록일: ]
[최종 수정일: 6/16/2023]

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)
13432정성태10/31/20232453오류 유형: 878. 탐색기의 WSL 디렉터리 접근 시 "Attempt to access invalid address." 오류 발생
13431정성태10/31/20232789스크립트: 60. 파이썬 - 비동기 FastAPI 앱을 gunicorn으로 호스팅
13430정성태10/30/20232677닷넷: 2153. C# - 사용자가 빌드한 ICU dll 파일을 사용하는 방법
13429정성태10/27/20232960닷넷: 2152. Win32 Interop - C/C++ DLL로부터 이중 포인터 버퍼를 C#으로 받는 예제파일 다운로드1
13428정성태10/25/20233035닷넷: 2151. C# 12 - ref readonly 매개변수
13427정성태10/18/20233249닷넷: 2150. C# 12 - 정적 문맥에서 인스턴스 멤버에 대한 nameof 접근 허용(Allow nameof to always access instance members from static context)
13426정성태10/13/20233407스크립트: 59. 파이썬 - 비동기 호출 함수(run_until_complete, run_in_executor, create_task, run_in_threadpool)
13425정성태10/11/20233195닷넷: 2149. C# - PLinq의 Partitioner<T>를 이용한 사용자 정의 분할파일 다운로드1
13423정성태10/6/20233173스크립트: 58. 파이썬 - async/await 기본 사용법
13422정성태10/5/20233318닷넷: 2148. C# - async 유무에 따른 awaitable 메서드의 병렬 및 예외 처리
13421정성태10/4/20233394닷넷: 2147. C# - 비동기 메서드의 async 예약어 유무에 따른 차이
13420정성태9/26/20235581스크립트: 57. 파이썬 - UnboundLocalError: cannot access local variable '...' where it is not associated with a value
13419정성태9/25/20233219스크립트: 56. 파이썬 - RuntimeError: dictionary changed size during iteration
13418정성태9/25/20233924닷넷: 2146. C# - ConcurrentDictionary 자료 구조의 동기화 방식
13417정성태9/19/20233453닷넷: 2145. C# - 제네릭의 형식 매개변수에 속한 (매개변수를 가진) 생성자를 호출하는 방법
13416정성태9/19/20233258오류 유형: 877. redis-py - MISCONF Redis is configured to save RDB snapshots, ...
13415정성태9/18/20233756닷넷: 2144. C# 12 - 컬렉션 식(Collection Expressions)
13414정성태9/16/20233514디버깅 기술: 193. Windbg - ThreadStatic 필드 값을 조사하는 방법
13413정성태9/14/20233709닷넷: 2143. C# - 시스템 Time Zone 변경 시 이벤트 알림을 받는 방법
13412정성태9/14/20236989닷넷: 2142. C# 12 - 인라인 배열(Inline Arrays) [1]
13411정성태9/12/20233492Windows: 252. 권한 상승 전/후 따로 관리되는 공유 네트워크 드라이브 정보
13410정성태9/11/20235030닷넷: 2141. C# 12 - Interceptor (컴파일 시에 메서드 호출 재작성) [1]
13409정성태9/8/20233887닷넷: 2140. C# - Win32 API를 이용한 모니터 전원 끄기
13408정성태9/5/20233843Windows: 251. 임의로 만든 EXE 파일을 포함한 ZIP 파일의 압축을 해제할 때 Windows Defender에 의해 삭제되는 경우
13407정성태9/4/20233588닷넷: 2139. C# - ParallelEnumerable을 이용한 IEnumerable에 대한 병렬 처리
13406정성태9/4/20233556VS.NET IDE: 186. Visual Studio Community 버전의 라이선스
1  2  3  4  5  6  7  [8]  9  10  11  12  13  14  15  ...