Microsoft MVP성태의 닷넷 이야기
개발 환경 구성: 83. Hyper-V의 네트워크 유형 (1) [링크 복사], [링크+제목 복사],
조회: 37809
글쓴 사람
정성태 (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

비밀번호

댓글 작성자
 




1  2  3  4  [5]  6  7  8  9  10  11  12  13  14  15  ...
NoWriterDateCnt.TitleFile(s)
13818정성태11/15/20245267Windows: 272. Windows 11 24H2 - sudo 추가
13817정성태11/14/20244929Linux: 106. eBPF / bpf2go - (BPF_MAP_TYPE_HASH) Map을 이용한 전역 변수 구현
13816정성태11/14/20245386닷넷: 2312. C#, C++ - Windows / Linux 환경의 Thread Name 설정파일 다운로드1
13815정성태11/13/20244809Linux: 105. eBPF - bpf2go에서 전역 변수 설정 방법
13814정성태11/13/20245283닷넷: 2311. C# - Windows / Linux 환경에서 Native Thread ID 가져오기파일 다운로드1
13813정성태11/12/20245030닷넷: 2310. .NET의 Rune 타입과 emoji 표현파일 다운로드1
13812정성태11/11/20245263오류 유형: 933. Active Directory - The forest functional level is not supported.
13811정성태11/11/20244848Linux: 104. Linux - COLUMNS 환경변수가 언제나 80으로 설정되는 환경
13810정성태11/10/20245374Linux: 103. eBPF (bpf2go) - Tracepoint를 이용한 트레이스 (BPF_PROG_TYPE_TRACEPOINT)
13809정성태11/10/20245260Windows: 271. 윈도우 서버 2025 마이그레이션
13808정성태11/9/20245257오류 유형: 932. Linux - 커널 업그레이드 후 "error: bad shim signature" 오류 발생
13807정성태11/9/20244993Linux: 102. Linux - 커널 이미지 파일 서명 (Ubuntu 환경)
13806정성태11/8/20244902Windows: 270. 어댑터 상세 정보(Network Connection Details) 창의 내용이 비어 있는 경우
13805정성태11/8/20244736오류 유형: 931. Active Directory의 adprep 또는 복제가 안 되는 경우
13804정성태11/7/20245366Linux: 101. eBPF 함수의 인자를 다루는 방법
13803정성태11/7/20245319닷넷: 2309. C# - .NET Core에서 바뀐 DateTime.Ticks의 정밀도
13802정성태11/6/20245696Windows: 269. GetSystemTimeAsFileTime과 GetSystemTimePreciseAsFileTime의 차이점파일 다운로드1
13801정성태11/5/20245481Linux: 100. eBPF의 2가지 방식 - libbcc와 libbpf(CO-RE)
13800정성태11/3/20246321닷넷: 2308. C# - ICU 라이브러리를 활용한 문자열의 대소문자 변환 [2]파일 다운로드1
13799정성태11/2/20244907개발 환경 구성: 732. 모바일 웹 브라우저에서 유니코드 문자가 표시되지 않는 경우
13798정성태11/2/20245505개발 환경 구성: 731. 유니코드 - 출력 예시 및 폰트 찾기
13797정성태11/1/20245492C/C++: 185. C++ - 문자열의 대소문자를 변환하는 transform + std::tolower/toupper 방식의 문제점파일 다운로드1
13796정성태10/31/20245382C/C++: 184. C++ - ICU dll을 이용하는 예제 코드 (Windows)파일 다운로드1
13795정성태10/31/20245164Windows: 268. Windows - 리눅스 환경처럼 공백으로 끝나는 프롬프트 만들기
13794정성태10/30/20245261닷넷: 2307. C# - 윈도우에서 한글(및 유니코드)을 포함한 콘솔 프로그램을 컴파일 및 실행하는 방법
13793정성태10/28/20245134C/C++: 183. C++ - 윈도우에서 한글(및 유니코드)을 포함한 콘솔 프로그램을 컴파일 및 실행하는 방법
1  2  3  4  [5]  6  7  8  9  10  11  12  13  14  15  ...