이 글은 VirtualBox 관리 시리즈의 네 번째 편입니다. 오늘은 VirtualBox의 네트워크 구성과 데이터 공유에 대해 알아야 할 모든 것을 다뤄보겠습니다.
가상 머신을 구성하는 세 가지 방법과 호스트 머신과 가상 머신 간에 데이터를 공유하는 세 가지 방식을 소개합니다. 이 튜토리얼을 마스터하고 나면 VirtualBox를 자신 있고 즐겁게 활용하는 데 필요한 모든 지식을 갖추게 될 것입니다. 그럼 시작해 보겠습니다.
시작하기에 앞서
오늘 내용을 더 원활하게 이해하려면 아래 문서들을 먼저 읽어보시기 바랍니다. 필요한 배경 지식을 쌓는 데 큰 도움이 될 것입니다.
- VirtualBox 게스트 확장(Guest Additions) 설치 방법 - 튜토리얼
- VirtualBox 3는 정말 훌륭합니다!
- VirtualBox 3 Compiz 슬라이드쇼
- VirtualBox 3에서 DirectX 사용하기
또한 이 시리즈의 앞선 세 편도 함께 확인해 보세요.
- VirtualBox에서 디스크 복제하기 - 튜토리얼
- VirtualBox에 하드 디스크 추가하기 - 튜토리얼
- VirtualBox에서 디스크 확장/축소하기 - 튜토리얼
VirtualBox 네트워크 옵션
설치된 가상 머신을 선택한 뒤 설정(Settings) > 네트워크(Network) 메뉴로 들어가면 본격적인 설정이 시작됩니다. 기본 화면에서 알 수 있듯이, 하나의 가상 머신에는 최대 4개의 네트워크 어댑터를 사용할 수 있으며, 필요에 따라 개별적으로 활성화할 수 있습니다. 대부분의 사용자에게는 한 개면 충분합니다.
어댑터 유형(Adapter Type)은 VirtualBox가 가상 머신에 노출할 가상화 하드웨어를 의미합니다. 특정 어댑터 유형에서 문제가 발생하면 다른 유형으로 변경해 볼 수 있습니다. 기본값은 PCnet-FAST III입니다.
그 외에 구형 시스템용 PCnet-FAST II와 세 종류의 Intel PRO/1000 카드(서버 버전 2개 포함)가 제공됩니다. 서버 버전은 프로덕션 환경에서 VirtualBox를 운영하는 사용자에게 유용하며, 일반 가정용 환경에서는 어떤 카드를 선택하든 체감 차이가 거의 없습니다.
가장 중요한 부분은 '다음에 연결됨(Attached to)' 항목입니다. 이 설정은 네트워크 어댑터가 실제 물리적 하드웨어와 어떻게 연결되는지를 결정하며, 선택에 따라 결과가 크게 달라집니다.
네트워크 유형
네 가지 옵션이 있습니다. NAT(기본값), 브리지(Bridged), 내부 네트워크(Internal Network), 호스트 전용 어댑터(Host-only Adapter). 물론 '연결 안 됨(Not attached)'이라는 상태도 있지만 실질적으로 활용 가능한 방식은 아니므로 논외로 하겠습니다.
NAT (Network Address Translation)
NAT 방식에서는 가상 머신이 외부에서 라우팅되지 않는 사설 IP 주소를 할당받습니다.
예시: 호스트의 IP가 192.168.1.1이라면, VirtualBox NAT 장치는 10.0.2.1로 표시되고, 가상 머신들은 10.0.2.x 범위의 주소를 할당받습니다. 10.0.2.x/24 서브넷으로 향하는 라우팅 경로가 없기 때문에 호스트에서도 해당 가상 머신에 접근할 수 없습니다.
이 구성은 게스트의 IP 주소가 무엇인지 신경 쓸 필요가 없고, 각자 독립적으로 인터넷만 사용하면 되는 경우에 적합합니다. 반면 포트 포워딩이 필요하거나 서비스를 외부에 노출해야 하는 경우, 그리고 네트워크 공유가 필요한 경우에는 적합하지 않습니다.
장점: 설정이 간단하고 격리성이 뛰어남
단점: 가상 머신으로의 접근 불가, 네트워크 공유 불가
브리지 어댑터 (Bridged Adapter)
브리지 어댑터 방식은 실행 중인 가상 머신이 현재 호스트의 기본 네트워크가 IP를 받아오는 것과 동일한 소스(공유기 등)로부터 IP 주소를 할당받는 방식입니다. 두 장비가 연결되어 있다는 의미에서 '브리지'라고 부릅니다.
활성화된 네트워크 장치가 여러 개라면, VirtualBox와 브리지할 장치를 직접 선택할 수 있습니다. 예를 들어 무선 어댑터 wlan0을 선택할 수 있습니다.
예시: 호스트가 공유기로부터 192.168.1.100을 할당받았다면, 가상 머신은 같은 공유기로부터 192.168.1.103을 할당받습니다. 두 머신은 동일한 네트워크에 속하게 되며, 모든 표준 네트워크 규칙이 적용됩니다. 실질적으로 가상 머신은 LAN상의 또 하나의 IP 주소인 셈입니다.
단, 스위치·공유기·ISP 등이 하나 이상의 IP 주소 임대를 허용하지 않는다면 이 방식은 작동하지 않습니다. 따라서 인터넷에 직접 연결된 환경에서는 브리지 네트워킹을 사용할 수 없을 수 있습니다.
장점: 포트 포워딩과 서비스 운영이 자유로운 유연한 네트워크 관리가 가능하고, 전통적인 방식의 네트워크 공유가 가능함
단점: 인터넷 직접 연결 환경에서는 작동하지 않을 수 있음(공유기 필요), 초보자에게 다소 어려움, 가상 머신이 네트워크에 노출되어 보안 위험이 있을 수 있음
호스트 전용 어댑터 (Host-only Adapter)
호스트 전용 어댑터는 매우 흥미로운 방식입니다. 브리지 어댑터와 비슷하지만, vboxnet0이라는 전용 네트워크 장치를 통해 IP 주소를 할당한다는 점이 다릅니다.
호스트 머신이 사실상 VirtualBox 라우터 역할을 하며 IP 주소는 192.168.56.1입니다. 이 어댑터는 호스트 전용 설정의 가상 머신이 실행되지 않으면 사용되지 않지만, 가상 머신이 구동되는 순간 IP를 할당하여 자체 네트워크 안에 내부 LAN을 형성합니다.
예시: 호스트의 IP가 192.168.56.1이고, 가상 머신의 IP는 192.168.56.101입니다.
이는 VMware Server의 동작 방식과 상당히 유사합니다. VMware Server는 vmnet1과 vmnet8이라는 두 개의 가상 어댑터를 사용해 NAT 및 호스트 전용 IP를 게스트에 할당합니다. 다만 VMware Server는 NAT 방식에서도 호스트의 기본 네트워크 장치를 항상 브리지하므로 NAT 게스트에 직접 네트워크로 접근할 수 있습니다. VirtualBox에는 아직 이러한 편의 기능이 없습니다.
그럼에도 VirtualBox 3에 vboxnet0이 추가되면서 네트워크 사용이 한결 간편해졌습니다. 이전 버전에서 얼마나 번거로웠는지 궁금하다면 VMGL 튜토리얼을 참고해 보세요. 당시에는 모든 것을 손수 설정해야 했습니다. 참고로 기본 IP 할당 대역도 원하는 값으로 변경할 수 있습니다.
중요: 호스트 전용 어댑터를 사용한다고 해서 게스트가 인터넷에 접속할 수 있는 것은 아닙니다. 실제로는 접속되지 않습니다. vboxnet0에는 기본 게이트웨이가 없기 때문입니다. vboxnet0이 로컬 네트워크 외부의 요청까지 처리하게 하려면 다른 어댑터를 통하도록 설정하고, 포워딩을 활성화하며, 방화벽 규칙을 재구성해야 합니다. 결국 브리지 네트워킹과 같은 결과를 얻게 되므로 굳이 그럴 필요는 없습니다.
호스트 전용 어댑터는 서브넷 내부의 머신들끼리는 통신하되 외부 접근은 필요 없는 프라이빗 네트워크를 만들 때 유용합니다.
장점: 시끄러운 소프트웨어 테스트나 침투 테스트(penetration testing)에 적합하며, IP 기반의 전통적인 네트워크 공유가 가능함
단점: 브리지 네트워킹만큼 초보자에게 어려움, 가상 머신에서 인터넷 접속 불가, 프라이빗 네트워크의 다른 머신에 보안 위험을 초래할 수 있음
내부 네트워크 (Internal Network)
내부 네트워크는 필자의 생각에 크게 매력적인 옵션은 아닙니다. 호스트 전용 + NAT의 조합과 비슷하지만, 통신이 게스트 머신들로 이루어진 가상 네트워크 내부에서만 발생하고 호스트는 접근할 수 없으며, 실제 NAT도 존재하지 않습니다. 즉, 게스트들만을 위한 완전히 폐쇄된 사설 LAN이 만들어지며 외부와는 단절됩니다.
VirtualBox에서 데이터 공유하기
네트워크 옵션을 이해했으니 이제 공유 기능을 살펴보겠습니다. VirtualBox에서 데이터를 공유하는 방법은 두 가지입니다. IP 주소를 이용한 직접 네트워크 접근 방식과 공유 폴더(Shared Folders) 기능을 이용하는 방식입니다.
개인적으로는 네트워크 방식을 선호합니다. 실제 세상에서 일이 돌아가는 방식이기 때문입니다. 네트워크를 통해 다른 머신에 요청을 보내고, 상대방이 NFS나 Samba 같은 공유 서비스를 운영 중이며 인증이 올바르게 이루어지면 공유 목록을 받아 파일을 주고받을 수 있습니다. FTP나 SSH를 이용하는 것도 마찬가지로 전통적인 네트워크 채널을 활용하는 방법입니다.
공유 폴더(Shared Folders)는 호스트에 폴더를 생성한 뒤 이를 가상 머신 내부에 마운트하는 기능입니다. 모든 네트워크 구성에서 작동하며, VirtualBox의 내부 공유 서버를 통해 게스트가 공유 데이터에 접근할 수 있도록 합니다.
네트워크를 통한 공유
앞서 언급했듯이 네트워크 공유는 브리지와 호스트 전용 네트워크에서만 가능합니다. 두 가지 예시를 살펴보겠습니다. 첫 번째 단계는 게스트 머신에서 공유를 허용하는 것입니다.
그다음 가상 머신의 IP 주소로 접근하면 됩니다.
Windows의 경우:
시작 > 실행 > \XXX.XXX.XXX.XXX 를 입력하고 X 부분을 가상 머신의 실제 IP 주소로 바꿔 입력합니다.
Linux의 경우:
파일 관리자의 주소창에 smb://XXX.XXX.XXX.XXX 를 입력합니다. smb://는 Samba 네트워크 프로토콜을 의미하며, X 부분은 게스트 머신의 IP 주소입니다.
브리지 네트워킹에서는 다음과 같이 표시되고, 호스트 전용에서도 동일한 방식으로 접근됩니다.
창 제목의 'Windows 공유'는 무시해도 됩니다. Samba는 주로 Windows 호스트와의 공유에 사용되고, NFS는 Linux 머신 간 공유에 더 일반적입니다. Samba는 양쪽 모두에서 작동하기 때문에 선호되는 선택입니다. Samba 공유에 대한 자세한 내용은 별도 튜토리얼을 참고하세요.
공유 폴더 (Shared Folders)
참고로 위에서 설명한 내용은 Windows 게스트와 Linux 게스트 모두 동일하게 적용됩니다. 이번 섹션의 스크린샷은 Windows 머신에서 공유 폴더 기능을 시연한 것입니다.
공유 폴더 설정은 매우 간단합니다. 먼저 호스트에서 공유할 폴더를 준비합니다. 가상 머신의 설정(Settings) 메뉴에서 공유 폴더(Shared Folders)로 이동합니다.
오른쪽 창에 해당 머신의 모든 공유 폴더 목록이 표시되며, 원하는 대로 추가하거나 삭제할 수 있습니다. 오른쪽의 작은 아이콘들이 그 역할을 담당합니다.
폴더 경로(Folder Path):
실제로 공유할 물리적 경로입니다. Windows에서는 C:\shared처럼, Linux에서는 /home/roger/shared처럼 지정합니다.
폴더 이름(Folder Name):
게스트가 보게 될 공유 이름입니다. 공백이 없는 이름(예: Shared-folder, Banana)을 사용하세요. 이 이름은 실제 공유 폴더명과 같아도 되고 달라도 됩니다. 단, 이것은 경로가 아니라는 점에 유의하세요! 가상 머신은 호스트의 물리적 하드웨어를 볼 수 없기 때문에 사용하는 상징적인 이름일 뿐입니다.
설정을 마쳤다면 가상 머신을 부팅합니다.
Windows 게스트의 경우:
가상 머신이 Windows라면 명령줄 또는 탐색기 메뉴의 도구 > 네트워크 드라이브 연결(Map Network Drive) 옵션을 통해 네트워크 공유에 접근할 수 있습니다.
명령줄에서는 net use 명령을 사용합니다.
net use <드라이브 문자> \\vboxsvr\공유이름
net use는 네트워크 드라이브를 마운트하는 명령입니다.
<드라이브 문자>는 가상 머신 내에서 공유에 할당될 드라이브로, E:, G:, X: 등 사용 가능한 임의의 문자를 지정할 수 있습니다.
\\vboxsvr\공유이름은 공유 경로입니다. \\vboxsvr은 VirtualBox 공유 서버를 의미하고, 공유이름은 앞서 지정한 폴더 이름입니다. 예를 들어 공유 이름을 Rambo로 지정했다면 경로는 \\vboxsvr\Rambo가 됩니다.
실제 명령은 다음과 같습니다.
net use h: \\vboxsvr\Rambo
탐색기의 도구 메뉴를 통해서도 동일하게 설정할 수 있습니다.
'로그온 시 다시 연결(Reconnect at logon)' 옵션에 체크하면 가상 머신을 켤 때마다 이 작업을 반복할 필요가 없습니다. 마침을 클릭하면 내 컴퓨터에 새 드라이브가 나타나고, 해당 드라이브를 열면 공유 폴더에 접근할 수 있습니다.
Linux 게스트의 경우:
터미널에서 간단한 명령 한 줄로 처리할 수 있습니다.
mount -t vboxsf 공유이름 마운트포인트
vboxsf는 공유 폴더를 마운트할 때 사용되는 의사 파일시스템(pseudo-filesystem) 유형으로, VirtualBox의 가상 공유 서비스를 위한 추상 변환 계층입니다.
공유이름은 앞서 지정한 폴더 이름입니다. 경로가 아니라 이름이라는 점을 다시 강조합니다! 예를 들어 공유 이름이 Banana라면 share = Banana입니다.
마운트포인트는 공유 폴더를 연결할 Linux 디렉터리 트리상의 임의 위치입니다. 예를 들어 /home/roger/shares-go-here 같은 경로가 될 수 있습니다.
실제 명령은 다음과 같습니다.
mount -t vboxsf Banana /home/roger/shares-go-here
이후 호스트의 공유 폴더 안에 있는 모든 내용이 가상 머신에서 위 경로를 통해 그대로 보이게 됩니다.
이 작업을 자동화하려면 /etc/fstab에 마운트 옵션을 추가하면 됩니다. 자세한 방법은 Linux 명령어 튜토리얼을 참고하세요.
덧붙여, 설정 메뉴의 도움말에도 이 방법이 설명되어 있으니 참고하시기 바랍니다.
마무리
이제 VirtualBox의 네트워크와 공유에 대해 알아야 할 모든 것을 익혔습니다. Windows든 Linux든, 브리지든 호스트 전용이든, NAT든, 네트워크 공유든 공유 폴더든, 필요한 내용은 모두 다루었습니다. 이 튜토리얼이 즐거웠기를 바랍니다.
앞으로도 좋은 정보로 찾아오겠습니다.
감사합니다.