버추얼 박스 3.2의 새로운 포트 포워딩 방법 Virtualbox


버추얼 박스에는 포트 포워딩 기능이 있어서, 호스트 OS의 포트로 들어 온 요청을 게스트 OS의 포트로 넘긴다던지 하는 것이 가능하다. 이 것을 이용하면 가상 머신을 이용해 서버를 구동하는 것도 가능하다. 그러나 기존에는 이 방법이 매우 불편했는데, 명령어를 입력하기가 번거로웠기 때문이다. 매번 설정할 때 마다 다음처럼 세 줄씩 길게 쓴 다음 확인차 한 줄을 더 적어 넣어야 했다.

# VBoxManage setextradata "Linux Guest" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/Protocol" TCP
# VBoxManage setextradata "Linux Guest" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/GuestPort" 22
# VBoxManage setextradata "Linux Guest" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/HostPort" 2222
# VboxManage getextradata “Linux Guest” enumerate
..
(버박 3.1.8 설명서에서 발췌)

지울 때도 정확히 같은 방법으로 세 줄을 적어넣어야 했다(XML을 직접 편집하는 방법이 있긴 하지만). 이에 대한 미봉책으로 셸 스크립트를 구하던 도중 버박 3.2 부터는 그 설정 방법이 달라졌다는 것을 알게 되었다.

기존 방법도 동작하기는 한다. 다만 기존 방법은 더 이상 메뉴얼에 포트 포워딩 방법으로 소개되지 않는다. 새 명령어는 다음과 같다.

# VBoxManage modifyvm "VM name" --natpf1 "guestssh,tcp,,2222,,22"

이 새로운 방법은 쓰기 쉬울 뿐 아니라, 몇 가지 기능들을 포함하고 있다. 가령 호스트의 특정 인터페이스로 들어오는 요청만 게스트에 전달하고 싶으면, 첫 번째 빈칸에 그 인터페이스의 IP를 적어 주면 된다.

# VBoxManage modifyvm "VM name" --natpf1 "guestssh,tcp,127.0.0.1,2222,,22"

설정을 제거할 때는, 다음과 같이 입력한다.

# VBoxManage modifyvm "VM name" --natpf1 delete "guestssh"

참고로 위 명령으로는 기존 설정을 제거할 수 없기 때문에, 기존 설정은 예전 방식 그대로 제거해야 한다(명령어 혹은 XML에서 삭제). 그리고 한가지 더 일러두면, 내 경우 기존 방식이건 새로운 방식이건, 설정 추가나 제거시 해당 가상머신 외에 버추얼박스 메인 프론트엔드까지 껐다가 켜야 가상머신 리붓시 설정이 되살아나거나 지워지는 일이 없었다. 아마도 최초 버추얼박스 실행시 XML 파일을 읽어들인 다음 계속 기억하고 있는 모양이다. 설정이 제대로 적용되지 않을 경우 참고하기 바란다. (이 점은 설정 xml 파일을 열어놓고 vm을 켜고 끈 다음 차이를 살펴 보면 금방 알 수 있다.)

보다 자세한 내용은 버추얼박스 3.2.0의 사용자 설명서 6.3.1절 “Configuring port forwarding with NAT” 에서 볼 수 있다.

Tag :
,

Leave Comments