본문 바로가기

OS & network/virtualization

버추얼박스 네트워크 이해 및 구성-완벽가이드

[잡설]

몰아치기로 포스팅중입니다....ㅜㅜ

시간이 날때 포스팅 안하면 일의 쏠림이 많은 저로써는 그나마도 포스팅 할 수 없기 때문에..@@

암튼...


본 문서의 저작권은 저에게 있습니다..-0-

퍼가는 것은 허용되나 출처 및 저작자 반드시 남겨 주셔야 합니다.!!



※ 생각 보다 많은 분들의 해당 글을 보시고 응원해 주셨는데 , 이 가이드의 최신 업데이트는 http://solatech.tistory.com/277 에 있으니 , 학습을 하실 분들은 참고하시기 바랍니다.




버추얼박스 네트워크 이해 및 구성 완벽 가이드


작성자 : 김재벌 ( ostoneo@gmail.com )

블로그 : 김재벌의 IT 이야기 ( http://blog.solaris.co.kr )

버전 : ver 0.1 


지금 포스팅 하려는 주제는 버추얼박스의 가상 네트워크에 대한 이해 및 구성 방법에 대해서 간략하게 정리해 보고자 합니다.


버추얼박스는 데스크탑 가상 머신으로 vmware 와 더불어 가장 널리 사용되는 제품입니다.


저는 vmware 를 10년정도 써 온거 같네요. 근데 , 근래 vmware workstation 의 경우 8이상의 버전으로 넘어가면서 현재 9.x 버전에 이르면서 사용 빈도가 예전 같지 못합니다.

이유는 버추얼박스가 고속 성장하면서 버추얼박스를 더 많이 사용하기 때문이죠.


버추얼박스는 아시다 시피 무료, 오픈소스 프로젝트 입니다.

vmware 에 비해서 손색이 없는 프로그램이죠. (물론, 각자의 장단점이 존재 합니다.)


제가 근래에 버추얼박스를 더 많이 사용하는 이유는 가볍고, 빠르기 때문입니다.

그리고 , vmware 기능의 대부분을 사용할 수 있는 장점이 있는데다가 라이센스 이슈가 없기 때문에 개인적으로나, 강의용도로 사용하기에는 최적의 제품이라고 할 수 있습니다.


게다가 근래에 vmware workstation 의 경우는 너무 무겁고 큽니다..

다양한 기능을 위해서인지는 모르지만 설치 패키지의 용량 차이가 5배 이상입니다.

버추얼박스의 경우 설치 패키지가 32비트와 64비트로 아카이브 되어 있기 때문에 분리해서 따로 보면 거의 10배 가까운 용량차이가 난다고 할 수 있습니다.


간단하게 사용할 목적에는 버추얼박스가 딱이죠.


저는 버추얼박스 1.x , 2.x , 3.x 를 거쳐 초기 버추얼박스가 독일 이노텍에서 만들어져 배포될 때 부터 사용해 왔습니다.

솔직히 1.x 버전은 많은 인내심을 요구했었죠.

버추얼박스가  2.x 에서 3.x 로 넘어오면서 네트워크 기능이 대폭 개선되었고 , 현재의 4.x 에서는 vmware workstation 처럼 많은 부가확장기능이 추가되고 있습니다.


기능의 다양성 및 안정성은 vmware 가 수위에 있겠지만,  빠르고 , 가볍고 , 다양한 플랫폼을 지원해 주는 부분은 버추얼박스가 더 수위에 있다고 할 수 있네요.


암튼...서두가 길었는데 , vmware를 많이들 사용하시다가 버추얼박스로 넘어 오시는 분들이 가장 큰 혼란을 호소 하는 부분중에 하나가 네트워크 구성 입니다.


인터넷에 자료를 찾아보면 좀 아쉬움이 많은 것 같아서 아예 정리를 해 보고자 했습니다.


버추얼박스를 이용하여 가상머신을 구성하고 가상 NIC를 할당 할 수 있습니다.

버추얼박스를 이용하면 가상NIC를 최대 8개 까지 구성할 수 있으며 , GNS3와 같은 네트워크 가상 환경과의 직접적인 구성도 가능합니다.

가상NIC을 최대 8개까지 구성할 수 잇으나 , GUI 환경에서는 4개까지만 구성이 가능하며 , command-line 에서 구성해야만 8개까지 지원이 가능합니다.


1.가상 NIC 의 종류

버추얼박스는 다양한 NIC를 지원하는데 , GUI 구성환경을 보면 그림과 같습니다.


  • AMD PCNet PCI II (Am79C970A)

  • AMD PCNet FAST III (Am79C973, the default)

  • Intel PRO/1000 MT Desktop (82540EM)

  • Intel PRO/1000 T Server (82543GC)

  • Intel PRO/1000 MT Server (82545EM)

  • Paravirtualized network adapter (virtio-net).


각 가상 NIC은 특징들이 존재 합니다.

간략하게만 정리 하면 아래와 같습니다.


 AMD PCNet PCI II (Am79C970A)

  하위 운영체제에서 크게 무리 없이 잡히는 호환성이 가장 좋은 일반적인 NIC이나 , 성능이 떨어짐.

 AMD PCNet FAST III (Am79C973)

 하위 운영체제에서 크게 무리 없이 잡히는 호환성이 가장 좋은 일반적인 NIC.

근래의 최신 OS에서는 더이상 드라이버 지원 하지 않음.

 Intel PRO/1000 MT Desktop (82540EM)

 근래의 시스템에서 가장 기본적으로 제공하는 NIC

기가비트가 지원되는 NIC

 Intel PRO/1000 T Server (82543GC) XP 같은 시스템에서 별도의 드라이버 없이 사용이 가능한 NIC
 Paravirtualized network adapter (virtio-net).

 반가상화 NIC ( 리눅스 KVM에서 사용하는 virtio-net)


2.가상 NIC 연결 ( 가상 Switch )


버추얼박스는 6개의 네트워크 연결 방식을 지원합니다.

각각의 네트워크 연결 방식은 아래와 같습니다.


 Not attached

 네트워크를 연결하지 않는다.

그러나, 네트워크 카드의 존재는 게스트 OS가 인식하고 있으며 , 이 방식은 NIC 재구성 및 네트워크 강제 연결을 일시 중지 하고자 할 때 사용한다.

 Network Address Translation (NAT)

게스트 OS 내부에서 인터넷을 사용할 수 있는 모드로 기본 설정 된다.

*주의 : NAT를 vmware 에서도 가장 많이 사용하는데 , vmware의 nat 와는 다르기 때문에 주의해야 한다. 

 Bridged networking

 브리지 네트워크는 호스트 OS의 네트워크 스택을 경유하여 NIC를 통해 연결할 수 있다.

IP 공유기등이 존재하는 경우 , IP 할당에 제약이 없는 경우 등에 적합한 방식이다.

 Internal networking

이 모드는 내부 가상머신들간의 통신을 지원하는 모드로 호스트나 외부 네트워크와는 단절된다.

 Host-only networking  이 모드는 가상머신과 호스트간의 연결을 제공하기 위해서 존재하며 별도의 물리적 네트워크 카드 없이 가상네트워크 인터페이스가 호스트에 생성된다.

 Generic networking

확장팩 또는 버추얼박스 내에서 제공되는 드라이버를 선택할 수 있도록 하여 네트워크 인터페이스를 공유하는 모드로 일반적으로 사용되지 않는다.

이 방식은 가상머신을 생성한 뒤에 윈도우 등에서는 지원되지 않는 것 처럼 보이나 , 실제는 기본 드라이버를 제공하지 않을 뿐이다.

윈도우용 드라이버는 아래 사이트에서 제공받을 수 있다.

http://www.linux-kvm.org/page/WindowsGuestDrivers


이 방식은 두가지 모드를 제공하는데 각 모드는 아래와 같다.

 UDP Tunnel 

기존 네트워크 인프라에 연결된 다른 호스트에서 구동중인 가상머신들과의 연결을 지원한다.

즉, 다른 호스트 상의 가상 머신과 통신할 수 있도록 지원한다.

 VDE (Virtual Distributed Ethernet) : 가상 분산 이더넷 )

리눅스나 FreeBSD 호스트에서 가상 분산 스위치에 연결할 때 사용할 수 있다. 이 경우 버추얼박스는 소스 컴파일을 통해 설치해야 한다.

이는 오라클 패키지가 이를 포함하지 않기 때문이다.



3. 네트워크 연결의 이해


(1) NAT (Network Address Translation )


이 모드에 대해서는 아래 그림과 같습니다.

그림에서 보듯이 각각의 가상머신은 별도의 가상 네트워크에 할당되어 10.0.2.2 라는 게이트웨이를 경유하여 인터넷에 연결됩니다.

그러나 , wmare 처럼 하나의 공유기 연결된 머신들처럼 상호간의 연결을 지원하지 않습니다.

각각 독립적 네트워크이고 , dhcp 를 사용하는 경우는 10.0.2.15로 동일한 ip 를 할당 받아서 사용하게 됩니다.

따라서, vmware 처럼 하나의 네트워크 내에서 인터넷이 자유롭게 되면서 내부 머신들끼리 연결은 지원하지 않습니다.

(필자 역시도 이부분이 초기에 대단히 혼란 스러웠던 부분이며 , 여전히 아쉬운 부분이기도 합니다. vmware 과 호환되는 nat 가 별도로 추가 지원되었으면 하는 바램입니다. 그러나 , 이러한 기능이 없다해서 vmware 의 nat 와 같은 기능을 사용할 수 없는 것은 아닙니다 . 동일하지 않지만 동일한 구성을 구성하는것이 가능합니다. 이는 아래에서 나오는 연결들을 통해 구성할 수 있습니다.)





(2) Bridged Networking


브리지 네트워크는 호스트 네트워크를 이용하여 말그대로 브리지 네트워크를 구성할 수 있는데 , 이 방식을 사용하면 그림과 같이 실제 공인 IP를 여러개 부여 하여 서비스를 제공할 수도 있고 , 외부 게이트웨이를 이용하여 인터넷을 자유롭게 사용할 수도 있습니다. 물론 IP 공유기를 사용하는 경우 IP 공유기 내에서도 이 모드를 사용하여 매우 용이하게 사용할 수 있습니다.
그림에서는 모든 게스트를 호스트와 동일한 네트워크를 구성하였으나 , 별도의 다른 네트워크를 설계하여 격리된 네트워크를 설계할 수도 있습니다.
그러나, 네트워크를 임의로 구성할 수 없거나, ip 구성이 원할하지 않은 경우는 제한적입니다.


(3) Internal Networking


내부 네트워크는 아래와 같이 별도의 vboxnet0 로 격리된 네트워크로 동작합니다.

이는 내부에 다수의 가상 시스템간의 통신을 지원하고 외부로부터 격리함으로써 보안을 강화하도록 조치할 수도 있있습니다.

실습 환경이나 보안구성이 필요할 때 요기하게 사용할 수 있습니다.

단, 호스트 네트워크와 분리되어 동작하므로 인터넷으로의 연결은 지원되지 않습니다.

또한, 필요시에 언제나 vboxnet1 , vboxnet2 등 가상 네트워크를 추가할 수 있습니다.



(4) Host Only Networking

이 방식은 내부 네트워크와 비슷하지만 호스트와 연결이 지원된다는 점이 다릅니다. 호스트와의 통신이 지원되고 , dhcp 를 이용한 네트워크 ip 할당이 가능하다. 기본 네트워크 대역은 192.168.56.0/24 대역이며 필요시 변경할 수 있습니다.
이 구성은 아래 그림과 같습니다.

여기서 주의할 점은 호스트는 net0 인터페이스 (실제 이더넷 인터페이스 카드 ) 를 통해 인터넷을 할 수 있고 , net1 가상 인터페이스를 통해 가상 머신들과의 연결을 지원하는데 , 가상 머신들은 호스트와 네트워킹은 지원되지만 인터넷은 여전히 불가능합니다.


그렇다면 어떻게 구성해야 vmware nat 와 동일한 환경을 구성할 수 있을까요?

두가지 방법을 고려해 볼 수 있는데 , 


첫째는 가상머신에 NIC 를 2장씩 부여하고 이중 하나에는 nat 를 , 또 다른 하나에는 internal networking 을 부여하는 것이다. 이렇게 하면 인터넷은 nat 를 이용하여 연결하고 내부 연결은 internal networking 을 통해 사용할 수 있습니다.


두번째는 host only networking 을 이용하는 것인데 , 이 경우는 호스트의 추가적인 인터넷 연결 공유 기술이 필요합니다.

즉, 윈도우라면 윈도우에서 제공하는 인터넷 연결 공유 기능이나 윈도우 서버 자체에서 제공하는 nat 를 이용하여 host only network interface 를 연결해주는 것 입니다.

리눅스 라면 iptables 를 이용할 수 있습니다.


두가지 방법중 첫번째 방법이 가장 단순하게 사용할 수 있습니다. 두번째 방법은 기업 네트워크환경에서 사용이 제한 될 뿐 아니라 보안상의 이유로 사내에서 금지되는 경우도 있기 때문에 단순하게 vmware nat 와 같은 테스트 환경을 구성하기를 희망하면 첫번째 방법을 추천합니다.


vmware 와 다른 네트워크를 구성하는 것....사실 vmware 에 친숙한 사용자가 버추얼박스 네트워킹에 불만을 가지는 가장 큰 이유중에 하나일 것입니다.

그러나 , 이러한 네트워킹을 지원하는 것은 버추얼박스 네트워킹 설계자들이 가지는 또 하나의 생각의 차이일 뿐입니다.

즉, vmware nat 에 비해 버추얼박스 nat는 보다 유연하게 다양한 nat 인터페이스를 생성 하여 사용할 수 있습니다.

vmware workstation 에서는 단 하나의 nat 만 지원하지만 버추얼박스는 하나 이상을 지원한다는 점입니다.

또, 꼭 필요한 경우가 아니라면 보안상의 이유로 격리하는 것이 더 효율적일 수 있습니다. 물론 vmware 의 네트워킹 역시 다양한 네트워킹을 제공하고 있습니다.



어느 방식이 더 뛰어나거나 좋다가 아니라 그 방식들에 대한 차이와 장단점을 이해한다면 어느 제품을 사용해도 좋지 않을까요? 다만, 무료라서, 보다 다양한 플랫폼(vmware 는 윈도우와 리눅스만 지원 , 버추얼박스는 리눅스, 윈도우 , MAC , 솔라리스 등도 지원 )을 지원하는 점에서 버추얼박스의 사용가치는 높습니다.




p.s 에고 작성보다 그림 그리고 편집하는게 더 걸리네요..ㅠㅠ