이를 통해 외부에서 Host의 port를 통해 Guest의 port에 접속할 수 있다.
이해를 돕기 위해 하나의 얘를 들면
Host Machine의 88 port와 Guest Machine의 80 port가 포트 포워딩으로 연결되어 있다면
외부 사용자가 Host Machine(실제 서버)의 88 port를 통해 Guest Machine (가상 서버)의 80 port에 접속할 수 있다.
포트 포워딩을 사용하는 이유는, Host Machine은 공인 IP를 가지고 있어 외부에서 접속할 수 있지만 가상 머신이 사설 IP를 가지고 있어 외부에서 접속할 수 없을 때 사용할 수 있다.
또 다른 이유는, Host Machine의 동일한 포트로 서로 다른 가상 Machine에서 서비스가 가능하기 때문이다. (한 가상 머신에서 장애가 발생하면 삭제해 버리고 복사해 둔 다른 가상 머신을 올리면 즉시 서비스가 가능 하다.)
아래 내용은 VirtualBox에서 Port Forwarding을 정리한 것이다.
VirtuaBox 포트 포워딩
- Port Forwarding, 일종의 서버에서의 IP 공유
- 가상 머신의 포트를 Host Machine의 포트와 연결 시켜서 Host Machine의 포트로 가상 머신을 접근할 수 있도록 하는 방법
- 아래는 VirtualBox에서 호스트의 2222 Port를 가상 머신의 22 Port로 연결하는 방법 이다.
- 주의: Linux와 Unix 계열의 경우, root 사용자로 실행되는 프로그램만이 호스트 포트가 1024보다 작을 수 있다.
- 가상 머신 이름 예 : alfresco, 처음 가상 머신을 만들 때 사용한 이름
- 네트워크 카드 이름 예 : pcnet, e1000
- pcnet : Pcnet-FAST III 등 사용 시
- e1000 : Intel PRO/1000 등 사용 시
- 포트 포워딩 이름 예 : guestssh, 임의로 정한다.
- Protocol : TCP, UDP
#--- Vista에서 명령 실행시 저장 오류가 발생할 경우 관리자 권한으로 cmd 파일을 실행하여 아래 작업을 한다.
cd C:/Program Files/Sun/VirtualBox
VBoxManage setextradata "가상_머신_이름"
"VBoxInternal/Devices/네트워크_카드_이름/0/LUN#0/Config/포트_포워딩_이름/Protocol" TCP
VBoxManage setextradata "가상_머신_이름"
"VBoxInternal/Devices/네트워크_카드_이름/0/LUN#0/Config/포트_포워딩_이름/GuestPort" 22
VBoxManage setextradata "가상_머신_이름"
"VBoxInternal/Devices/네트워크_카드_이름/0/LUN#0/Config/포트_포워딩_이름/HostPort" 2222
#--- 설정 후 Virtual Machine을 다시 시작 하여야 한다.
#--- 아래는 포트 포워딩 사례
VBoxManage setextradata "CentOS530" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/telnets/Protocol" TCP
VBoxManage setextradata "CentOS530" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/telnets/GuestPort" 22
VBoxManage setextradata "CentOS530" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/telnets/HostPort" 22
VBoxManage getextradata "CentOS530" enumerate
- 포트 포워딩 이름을 http와 같이 많이 사용하는 이름(예약어)으로 하였을 경우 동작하지 않는 경우가 있다. 이때에는 pphttp 등으로 이름을 변경하여 사용 하여야 한다.
- 등록된 포트 포워딩 정보를 삭제하는 방법
VBoxManage setextradata "가상_머신_이름"
"VBoxInternal/Devices/네트워크_카드_이름/0/LUN#0/Config/포트_포워딩_이름/Protocol"
VBoxManage setextradata "가상_머신_이름"
"VBoxInternal/Devices/네트워크_카드_이름/0/LUN#0/Config/포트_포워딩_이름/GuestPort"
VBoxManage setextradata "가상_머신_이름"
"VBoxInternal/Devices/네트워크_카드_이름/0/LUN#0/Config/포트_포워딩_이름/HostPort"
- VirtualBox에 등록된 정보 보기
- VBoxManage getextradata "가상_머신_이름" enumerate
#--- 위 명령으로 조회한 사례
Key: VBoxInternal/Devices/pcnet/0/LUN#0/Config/telnets/Protocol, Value: TCP
Key: VBoxInternal/Devices/pcnet/0/LUN#0/Config/telnets/HostPort, Value: 22
Key: VBoxInternal/Devices/pcnet/0/LUN#0/Config/telnets/GuestPort, Value: 22
- 참고 문헌
*** 참고 문헌 ***
Posted by 산사랑

