본문 바로가기

Linux/Ubuntu

[Ubuntu] VirtualBox 네트워크

VirtualBox 네트워크



가상머신을 설치하고 네트워크 의 디폴트 설정을 NAT이다. 그렇다면 여러개의 가상머신 network를 어떻게 구성할까?



3대의 가상머신의 네트워크를 NAT로 설정하고, IP를 확인했다(ifconfig) 전부다 10.0.2.15로 같은 ip 주소를 가지고 있다.

세대가 서로 다른 네트워크를 가지고 있다는 뜻이다. 어떻게 하나의 네트워크로 묶을 까?



VirtualBox에서는 NIC(Network Interface Controllers)가 Host(나의 데스크탑) physical networking이 동작하는데 여러가지 모드를 제공한다.


1. Network Address Translation (NAT)

2. Briged Networking

3. Internal Networking

4. Host-only Networking

5. NAT with Port-forwarding


특별한 경우가 아니라면 알아서 자동 설정해준다(default - NAT) 하지만 특별한경우가 있다! 따라서 다른 사항도 살펴보자



Network Address Translation (NAT)



NAT 작동방식



대부분의 guest(가상머신)가 "Client"로 사용하는 경우 입니다. guest OS가 부팅되면, 일반적으로 IP주소는 얻기위해 DHCP를 사용합니다.


(*DHCP:)


VirtualBox는 DHCP요청을 처리하고 guest OS에게 할당된 IP주소와 라우팅을 위한 게이트웨이 주소를 알려줍니다. NAT 모드에서는 모든 가상머신이 동일한 IP주소(10.0.2.15)를 할당 받습니다. 그 이유는 각각의 가상머신은 그들의 독립된 네트워크 안에 속해있다고 생각하기 때문입니다.(서로 다른 네트워크에 존재) 따라서 각각의 가상머신들이 그들의 트래픽을 게이트웨이로 보내면, VirtualBox는  각각의 가상머신의 패킷을 guest(나의 데스크탑에서 작동하는 가상머신)이 아닌 원래 host(나의 데스크탑)이 보내는 패킷처럼 재작성합니다.


즉, guest는 host안에서 동작하지만, 패킷을 보내면 VirtualBox에서는 host가 보내는 것처럼 재작성 합니다. 따라서 host의 네트워크가 변경되더라도 혹은 무선 <-> 유선으로 연결이 바뀐다 해도 원래 guest는 host안에서 동작하므로 host의 네트워크만 연결되어있다면 잘 동작하게 됩니다.


그러면, host가 아닌 다른 컴퓨터가 어떻게 guest에 연결할 수 있을까?? (ex. 게스트에서 작동하는 웹서버에 접근하는 경우)


이런경우 일반적으로 guest OS에는 경로가 없기 때문에 NAT모드로 다른 컴퓨터가 guest에 접근하는 것은 (일반적으로는) 불가능 합니다. 따라서 가상머신에 동작하는 서버의 경우 다른 네트워킹 모드를 사용해야합니다.


NAT 네트워킹의 특징 

    • Guest는 그들의 개인 네트워크에 있습니다.
    • VirtualBox는 DHCP서버 역활을 하게 됩니다.
    • VirtualBox NAT 엔진이 주소를 변환합니다.
    • 대상 Server는 VirtualBox host에서 만들어진 트래픽으로 확인합니다.
    • Host 나 Guest가 설정을 해 줄 필요가 없습니다.
    • guest를 "Client"로 사용할 경우 좋습니다.
    • guest를 "Server"로 사용할 경우 안 좋습니다.


Bridged Networking


Bridged Networking 작동방식



Bridged Networking은 가상머신이 host와 같은 네트워크에 존재하게 하고 싶은경우 사용하게 됩니다. 이 경우, 가상 NIC는 host의 physical NIC에 "연결"됩니다.


브리지의 경우 각각의 가상머신은 호스트와 같은 방식의 물리 네트워크에 접근할 수 있습니다.


이 모드의 단점은 첫째, 많은 가상머신을 설치하는 경우, IP주소가 많이 필요합니다. 또는 네트워크 관리자에게 정적 IP를 요청하기때문에 귀찮습니다. 둘째, 만일 호스트가 여러 physical NIC를 사용하는경우 (ex. 무선or유선) 호스트가 네트워크를 바꿀 때 마다 가상머신의 브리지를 재 설정해줘야 합니다.


Bridged 네트워킹의 특징 

    • Vritual Box가 호스트 네트워크에 연결됩니다.
    • guest가 client 나 server든 뭘 사용해도 좋습니다.
    • IP 주소를 소모합니다.
    • guest는 네트워크를 바꾸는 경우 수정을 계속해야합니다.
    • Best for production environments ( 잘 모르겟..네요!)

Internal Networking



internal networking 작동방식



1대 혹은 여러대의 가상머신을 internal network에 동작시키면, VirtualBox는 해당 네트워크의 모든 트래픽이 호스트 내에 있으며 해당 가상 네트워크의 가상머신에만 표시되도록 합니다.


internal network는 완전히 고립된 네트워크이기 때문에 매우 "조용(quiet)"합니다. 이 모드는 분리되거나, 깨끗한 네트워크를 테스트하는데 좋습니다. internal network에 존재하는 가상머신을 통해  internal network안에서 자신만의 서비스를 만들 수 있습니다.(ex. Active Directory, DHCP, etc...)


호스트가 internal network의 구성원이 아니므로 host의 연결이 끊어져도 가상머신의 사용이 가능합니다..


이 모드에서 VirtualBox는 DHCP와 같은 "편리한" 서비스를 제공하지 않으므로, 시스템을 정적으로 구성하거나 DHCP / Name 서비스를 제공하는 가상머신 1대가 필요합니다.


여러 internal network를 만드는 것도 가능하며 가상머신이 내부 및 다른 네트워크 모드를 통해 여러 NIC를 사용하도록 구성하여 필요할 경우 경로를 제공할 수 있습니다.


Internal 네트워킹의 특징 

    • 같은 internal network에서 다른 guest를 확인할 수 있습니다.
    • Host는 internal network를 볼 수 없습니다.
    • 까다로운 Network 설정이 필요로 합니다,
    • 호스트가 끊어져도 작동합니다.
    • Bridged와 함께 사용할 수 있습니다.
    • multi-tier solutions 에 좋습니다.

Host-only Networking


host-only networking 작동방식


host-only는 internal network와 비슷합니다. host는 guest 네트워크를 볼 수 있지만, 외부 컴퓨터는 볼 수 없습니다.


[파일] -> [호스트 네트워크 관리자] 를 통해 네트워크를 만들거나, 수정할 수 있습니다.

그 후, 호스트 네트워크에 포함될 가상머신의 네트워크를 호스트-전용 네트워크로 설정하면 됩니다.


Host-only 네트워킹의 특징 

    • VirtualBox는 host와 guest만의 private network를 구성할 수 있습니다.
    • Host sees a new software NIC
    • VirtualBox는 DHCP 서버를 제공합니다.
    • Guest는 외부 네트워크를 볼 수 없습니다.
    • Guest는 호스트가 끊어져도 사용가능 합니다.
    • 개발하는데 좋습니다.



NAT 네트워크 만들기


VirtualBox [파일] -> [환경설정] -> [네트워크]를 확인하면 현재 존재하는 NAT 네트워크를 확인할 수 있다.


우측에 +를 눌러 새로운 네트워크를 만들거나



톱니바퀴를 눌러 이름, CIDR, 네트워크 옵션을 설정해줄 수 있다



그 후 NAT 네트워크로 연결하고 싶은 가상머신을 선택하고, [설정] -> [네트워크] 에서 NAT네트워크로 변경해 준 후, 네트워크를 선택해주면 된다.


처음에 모두 같던 IP주소가 같아진 것을 확인할 수 있다.





출처

오라클 VirtualBox 네트워크 설명 블로그