본문 바로가기
프로그램 활용/클라우드 가상화 도커

Virtualbox 네트워크 종류와 설정 방법

by 3604 2023. 7. 18.
728x90

출처: Virtualbox 네트워크 종류와 설정 방법 :: 작은 병아리의 꿈 (printf.kr)

Virtualbox 에서는 가상머신(이하 VM)에 할당할 수 있는 네트워크 종류를 총 6가지를 지원하고 있습니다. 각 네트워크 종류가 어떤 것을 의미하는지 살펴보고, 어떻게 설정을 할 수 있는지 알아보도록하겠습니다.

이 문서에서의 Virtualbox 실행 환경은 OS X 이며, 윈도우와 리눅스/OSX는 기본 설정에서 약간의 차이가 있습니다.

다음은 Virtualbox 에서 지원하는 네트워크 종류입니다.

  • NAT
  • NAT network
  • Bridge Adapter
  • Internal Network
  • Host-only Network
  • Generic Driver

여기에서는 맨 마지막 Generic Driver 를 제외한 나머지 5개에 대해서 설명하도록 하겠습니다.

보다 자세한 내용은 virtualbox 홈페이지의 문서를 참고해주시기 바랍니다.
( https://www.virtualbox.org/manual/ch06.html )

NAT

NAT(Network Address Translation) 는 VM이 외부 네트워크(인터넷)에 접근할 수 있는 가장 간단한 방법입니다. Host / Guest 에 어떠한 설정을 할 필요가 없기 때문에, Virtualbox 에서 VM을 생성하면 기본적으로 attach 되는 네트워크이기도 합니다.

VM에 NAT 인터페이스를 처음으로 붙이게 되면 10.0.2.0/24 대역이, 그 다음에는 10.0.3.0/24 대역이 할당되게 됩니다.

 

10.0.2.0/24 대역으로 할당되면, VM에는 10.0.2.15 가 부여되고, 기본 게이트웨이는 10.0.2.2 가 됩니다.

여러개의 VM을 만들고, NAT 를 붙이더라도 모두 동일하게 10.0.2.15 를 가지게 됩니다.

NAT Network

NAT Network는 공유기와 같은 환경을 만드는 것으로 이해하면 매우 쉽습니다.

여러 VM을 같은 네트워크에 속하게 하고 싶은데, 모두 인터넷이 가능하게 하고 싶을 때 사용하면 매우 유용합니다.

(보통 VM을 같은 네트워크로 묶고, 인터넷이 가능하게 하려면 VM 에 Host-only, NAT 두 개의 네트워크 인터페이스를 붙입니다)

위와 같이 Virtualbox 의 환경설정에서 GUI로 간단하게 NAT Network 를 구성할 수 있지만, 명령어를 통해서도 NAT Network 를 구성할 수 있습니다.

# 현재 생성되어있는 NAT Network 목록 조회
$ VBoxManage list natnetworks

# 192.168.0.0/24 대역의 DHCP 기능이 있는 NAT Network 생성
$ VBoxManage natnetwork add --netname natnet1 --network "192.168.0.0/24" --enable --dhcp on

# 위에서 생성한 'natnet1' NAT Network 시작하기
$ VBoxManage natnetwork start --netname natnet1

# 'natnet1' NAT Network 삭제하기
$ VBoxManage natnetwork remove --netname natnet1

 

natnetwork 관련 명령어에 대한 자세한 내용은 여기를 참고해주시기 바랍니다.

Bridge Network

Bridge Network 는 Virtualbox 가 호스트에 있는 네트워크 디바이스를 직접적으로 사용하는 네트워크입니다. 호스트가 사용하는 네트워크 환경을 그대로 이용할 수 있으며, VM이 호스트와 같은 물리적인 네트워크에 존재하게 할 수 있습니다.

사용하는 방법은 VM 설정의 네트워크탭에서 네트워크 어뎁터를 Bridge Network 로 선택하고, 연결할 호스트 네트워크 디바이스를 선택하면 됩니다.

 

단, OS X와 Linux에서는 무선 네트워크에 대해서는 Bridge Network 사용이 제한됩니다.

Internal Networking

Internal Networking 은 NAT Networking 과 같이 Virtualbox 내에서 완벽한 사설망을 구축할 수 있다는 점에서 동일하지만, 인터넷 연결이 되지 않는 점에서 다르다.

또한, Internal Networking 으로 할당된 IP로는 호스트에서 접근이 불가능하다. 오직 같은 Internal Networking 으로 연결된 VM들간에만 통신이 가능하다.

Internal Networking 을 생성하는 방법은 터미널에서만 가능합니다. 아래 명령어를 통해 생성 및 삭제를 할 수 있습니다.

# testinet 이라는 이름의 Internal Network 생성
vboxmanage dhcpserver add --netname testinet --ip 10.10.10.1 --netmask 255.255.255.0 --lowerip 10.10.10.2 --upperip 10.10.10.240 --enable

# testinet 이름의 Internal Network 제거
vboxmanage dhcpserver remove --netname testinet

생성 후, VM 네트워크 설정 부분에서 Attach to 를 ‘Internal Network’로 선택하고, Name 에 위에서 설정한 이름인 testinet을 입력하면 됩니다.

Host-only Networking

Host-only Networking 은 Internal Networking 과 기능면에서는 동일하다. 하지만 다른점은 Host-only Networking 은 호스트와도 통신이 가능하다는 것이다.

그렇게 때문에 Virtualbox 를 사용하는 사용자들이 호스트에서 VM에 접속하고 싶을 경우, (예를 들면 VM에 웹 서버를 실행하고 호스트에서 접속) Host-only Networking 을 VM에 추가하여 사용한다. (이 경우 VM이 인터넷도 사용해야할 경우 NAT 까지 붙이기도 한다.)

Host-only Networking 은 OS X 의 경우 기본적으로 6개가 생성되어 있다. 이를 이용할 수 도 있고, NAT Networking 에서 확인한 환경설정 화면에서 Host-only Networks 로 들어가서 추가로 생성할 수도 있다.

 

 

VirtualBox, 가상 네트워크 설정하기

TechNote.kr 2017. 4. 24. 18:21
 

VirtualBox, 가상 네트워크 설정하기

VirtualBox에 OS를 설치하고 Network이 되는지 확인해 보면 일반적으로 별 탈 없이 잘 되곤한다. 잘 되니까 별다르게 신경쓰는 일이 없는 것이 사실이다. 네트워크와 관련된 작업을 하지 않는 이상 별

technote.kr

VirtualBox에 OS를 설치하고 Network이 되는지 확인해 보면 일반적으로 별 탈 없이 잘 되곤한다. 잘 되니까 별다르게 신경쓰는 일이 없는 것이 사실이다. 네트워크와 관련된 작업을 하지 않는 이상 별 다르게 변경해야할 필요도 없다. 

 

하지만 일반 사용자를 넘어서 advanced user가 되고자 한다면 기본 설정 외에 어떤 설정이 가능한지 한 번 살펴볼 필요가 있다. 혹시 아는가. 알고 보면 나에게 최적화된 설정은 기본 설정이 아니라 생각지도 못한 다른 설정일 수도 있다. 

 

매뉴얼에 따르면 가산 머신당 총 8개까지 가상 네트워크(가상 PCI 이더넷 카드) 생성 및 설정이 가능하다. 4개는 설정 화면을 통해서 가능하고 나머지는 VboxManage command를 통해서 가능하다.

 

우선 하나의 설정만 제대로 할 줄 알면 나머지 것들은 추가하는 수준일테니 우선 하나의 가상 네트워크를 설정하는 방법을 알아보도록 하자.

 

 

가상 네트워크를 설정하기 위해서는 다음의 것들을 정해야 한다. 

 

-. 어떤 하드웨어를 통해 가상화할 것인가. 

: PC에 설치된 Ethernet 카드 중 어떤 카드를 통해 가상화하여 네트워크를 사용할 것인지 정한다.

 

-. 어떤 가상화 모드로 설정할 것인가. 

: 설정가능한 6개의 가상화 모드 중 어떤 것을 사용할 것인지 정한다. 기본으로는 NAT가 설정되어 있다.

 

(참고로 VirtualBox의 네트워크라는 표현을 사용하기는 하였지만 정확히 말하면 virtualbox manual에서 볼 수 있듯이 virtual networking, 즉  virtualbox의 가상 네트워킹이다.)

 

위 2가지 중에 "어떤 가상화 모드로 설정할 것인가"에 대해 어떤 가상화 모드가 있고, 선택이 가능한지 알아보자.

 


 

우선 기본적으로 아래와 같이 NAT로 설정되어 있다. 

 

> 처음 화면에서 확인할 수 있는 기본 설정

 

 

이를 변경하기 위해서 설정하기 원하는 가상 머신을 선택한 후 (위에서는 Ubuntu 16.04가 선택) "머신 > 설정 > 네트워크"를 선택한다.

 

"다음에 연결됨(A):" 부분 옆 Combobox를 열어보면 설정 가능한 네트워크 종류를 확인할 수 있다. 

 

 


연결되지 않음

NAT

NAT 네트워크

브리지 어댑터

내부 네트워크

호스트 전용 어댑터

일반 드라이버


 

하나씩 특징을 살펴보면 다음과 같다.

 

"연결되지 않음"


해당 모드는 네트워크 카드는 존재하지만 마치 케이블을 꼽지 않은 것과 같이 연결하지 않은 것과 같이 동작하는 것이다. 

 

 

 

NAT (Network Address Translation)


  • 가상머신 내부 네트워크 -> Host PC 외부 네트워크 단방향 통신 가능
  • Host PC 내의 가상 머신 간의 통신 불가능

해당 모드는 기본 선택사항으로 가상 머신 내에서 단순히 인터넷 사용이나 파일 다운로드와 같은 용도로만 사용할 경우 설정이 가능하다. 가상 머신 내에서는 자체 사설 IP 주소를 사용하지만 실제 외부로 나갈 때는 Host PC가 가진 IP 주소를 바꿔 달고 나가게 된다. Host PC의 외부 네트워크에서는 내부의 가상 머신에 접근 불가능하다. (일반적으로 통용되는 NAT의 개념을 적용한 부분이라 자세한 설명은 넘어간다.) 

 

즉, 아래 그림과 같이 NAT 모드일 경우 192.168.0.1의 주소를 사용하는 가상 머신은 외부 네트워크와 통신할 때 123.123.123.x 주소를 달고 외부와 통신하게 된다. 반면 192.168.0.x 의 주소를 가진 다른 가상 머신들과는 통신이 불가능하다.

 

 

 

 

NAT Network


  • 가상머신 내부 네트워크 -> Host PC 외부 네트워크 단방향 통신 가능
  • Host PC 내의 가상 머신 간의 통신 가능

해당 모드는 NAT와 거의 동일하지만 Host PC 내의 가상 머신끼리 통신이 가능하다는 점이 다르다. 가상 머신 간에 상호 통신이 필요한 작업이 있다면 해당 모드를 사용해야 한다. 

 

NAT Network의 경우는 아래 그림과 같이 NAT 와 다 동일하지만 192.168.0.x 의 주소를 가진 다른 가상 머신들과도 통신이 가능하다는 점이 다르다. 

 

 

 

 

 

브리지 어댑터 (Bridged Adapter)


  • Host PC와 동등한 수준의 네트워크 구성
  • 추가의 IP 할당이 필요함

해당 모드는 가상 머신의 네트워크를 Host PC 와 동등 수준으로 구성할 수 있게 해준다. 즉, 예를 들어 Host PC의 네트워크가 192.168.0.2로 설정이 되어 있다면 가상 머신의 네트워크 또한 192.168.0.4 정도로 같은 네트워크로 설정할 수 있는 것이다. 근데 잘 생각해 보면 실제 물리적인 네트워크 인터페이스는 Host PC의 Ethernet 카드 하나밖에 없다. 그렇다면 어떻게 Host PC와 가상 머신의 네트워크를 구분해 내는 것일까. VirtualBox 의 Manual에 따르면 소위 "net filter"라 불리는 Host PC의 network device driver를 사용하여 구분해 낸다고 한다. 해당 net filter를 통해 가상 머신은 자신의 data를 Host PC의 네트워크 카드로 부터 분리해내고 삽입하기도 한다. 

 

브리지 어댑터의 경우 아래 그림과 같이 물리적으로는 Host PC 내에 존재하지만 Host PC의 주소와 동등한 수준의 별도의 주소를 가지고 외부와 통신한다. 

 

 

 

 
 
 

내부 네트워크 (Internal Network)


  • Host PC와 독립적인 내부 네트워크
  • 같은 Host PC 내의 가상 머신 간 연결이 가능

해당 모드는 브리지 어댑터와 많은 부분에서 유사하지만 가장 큰 차이점으로 외부와 통신이 되지 않는다는 점이 있다. 즉, Host PC의 네트워크와 분리되어 있고, Host PC 내 가상 머신 간에만 상호 연결하여 통신이 가능하다. Host PC의 물리적인 네트워크 인터페이스와 연결되어 있지 않다. 

 

아래 그림과 같이 내부 네트워크는 Host PC 네트워크와 분리되어 있고, 가상 머신 간에만 통신이 가능하다.

 

 

 

 

 

호스트 전용 어댑터 (Host-only Adapter)


  • Host PC를 포함한 내부 네트워크 (외부 네트워크와는 단절)
  • 같은 Host PC 내의 가상 머신 간 연결이 가능

해당 모드는 "브리지 어댑터"모드와 같이 Host PC와 내부 가상 머신들과 통신이 가능하고, "내부 네트워크"모드와 같이 외부 네트워크와는 통신이 불가능하다. Host PC의 물리 네트워크 어댑터외에 별도의 Loopback 어댑터를 생성하여 해당 어댑터를 통해 통신한다.

 

호스트 전용 어댑터의 경우는 아래 그림과 같이 외부 네트워크가 단절되어 있다. 

 

 

 

 

 

일반 드라이버 (Generic Driver)


  • 거의 사용되지 않는 모드
  • UDP Tunnel networking과 VDE(Virtual Distributed Ethernet) 지원

 

 

참고로 아래 6개 종류의 Ethernet card만 위의 가상화 모드 설정이 가능하다.

 

 

 

VirtualBox 리눅스 서버 SSH로 연결하기

출처: VirtualBox 리눅스 서버 SSH로 연결하기 | PJW48

table.char { margin: 0 auto; border-collapse: collapse; border-spacing: 0; border: 2px solid; text-align: center; } table.char thead tr { background-color: #3f3f3f; border-bottom: 3px double; } table.char th, table.char td { height: 24px; padding: 2px; } table.char tbody tr:nth-child(even) {background-color: #2a2a2a;} table.char [title="Null"] {color: #7f7f7f; border-bottom: 1px dotted; cursor: help;}

이 포스트에서는 버추얼박스(VirtualBox)로 구현한 가상 리눅스 서버를 SSH로 연결하는 방법에 대해 포스팅합니다.

참고로 이 기능을 사용하려면 OpenSSH가 필요하기 때문에 리눅스 서버 설치 과정에서 OpenSSH도 같이 설치해야 합니다. 만약 실수로 함께 설치하는 것을 잊었더라도 굳이 리눅스를 다시 설치할 필요는 없고 그냥 패키지만 개별적으로 설치하는 것도 가능합니다. 우분투 서버 기준으로 명령줄에 sudo apt-get install openssh-server라고 치면 됩니다.

 

우선, 버추얼박스 쪽의 리눅스 콘솔로 들어가서 ifconfig 명령을 쳐 봅시다.


이와 같이 네트워크가 두 개 뜨는데, eth0이라고 된 것은 이더넷, lo라고 된 것은 로컬호스트(127.0.0.1)를 의미합니다. 로컬호스트를 써도 되지만 여기서는 이더넷으로 포워딩해 보기로 합니다. 여기서 inet addr이라 적힌 곳의 IP를 기록해 둡시다.


윈도우즈로 돌아가서 명령 프롬프트에서 ipconfig를 쳐 봅시다. 그러면 뭐가 많이 뜰 텐데 그 중 VirtualBox Host-Only Network라고 뜬 곳의 IPv4 주소를 기록해 둡시다.


그리고 버추얼박스로 들어가서 해당하는 머신을 선택한 다음 설정을 누르면 항목이 많이 나올 텐데 그 중 ‘네트워크’를 고른 후 ‘고급’을 클릭해서 확장 항목을 열고 포트 포워딩 버튼을 누릅니다.


그러면 이 창이 뜰 것입니다. 이름은 적당히 지정해 주고 프로토콜은 TCP, 호스트 IP는 앞에서 기록한 윈도우 ipconfig의 VirtualBox Host-Only Network IP, 호스트 포트는 22, 게스트 IP는 리눅스 ifconfig의 inet addr IP, 게스트 포트는 호스트 포트와 같은 22를 써서 추가합니다. (로컬호스트를 쓴다면 호스트 IP에 127.0.0.1이라고 써도 되기는 합니다.) 그리고 확인 버튼을 연달아 눌러서 설정을 적용합니다.
※ 호스트 포트 번호는 22번 대신 다른 번호(예: 2222)를 써도 됩니다. 이 경우 접속할 때 그 포트 번호를 명시해 주어야 합니다.


PuTTY와 같은 텔넷 프로그램을 써서 접속이 잘 되는지 실험해 봅시다. 호스트 이름에는 윈도우 ipconfig의 VirtualBox Host-Only Network로 하고 접속 프로토콜은 SSH로 한 다음 접속 버튼(여기서는 Open 버튼)을 눌러 접속해 봅시다.


이와 같이 터미널이 뜨고 리눅스 계정으로 로그인을 할 수 있게 되면 성공입니다.

위의 포트 포워딩에서 포트를 다르게 해서 추가하면 FTP(포트 20~21)와 HTTP(포트 80)의 접속도 가능해집니다. 참고로 FTP를 사용하려면 리눅스 쪽에서 vsftpd를, HTTP를 사용하려면 리눅스 쪽에서 apache2를 설치해야 합니다.

728x90