VirtualBox NAT port forwarding

** 이글루스에 있던 글을 아주 살짝 고쳤다.


지금까지 Virtual Box Guest 로 접근하기 위해선, Guest 네트웍 방식을 브릿지로 설정했었다.
이렇게 하는 편이 복잡하지 않고 편하긴 하다. 공유기가 있어야 한다는 단점이 있긴 하지만, 공유기야 어차피 있는 것이니 별 문젠 아니었다.
다시 말해서, 아래 글은 ‘공유기‘를 사용하는 환경을 전제로 하고 있다.

그런데, 이렇게 하지 않고 NAT 환경에서도 호스트에서, 또는 (내부네트웍에 연결된, 즉 같은 IP 대역을 사용하는) 외부에서 VBox 내 게스트로 접근하는 법을 알아냈다.

방법은 위 글에 있는 것처럼 간단하다.


해당 Guest 설정을 열고, “네트워크 – 어댑터 1 – 고급 – 포트포워딩” 으로 이동한 후 설정을 추가한다. 물론 NAT 이 선택되어 있어야 한다.

  • 이름 : 적당히.
  • 프로토콜 : TCP
  • 호스트 IP : 위 글처럼 127.0.0.1 으로 해도 되고, 내부 IP가 고정이라면 IP 를 그대로 써주면 된다. (ex. 192.168.0.10)
  • 호스트 포트 : 맘대로 정한다. 즉, 아무거나. 1234 도 좋고 3084 도 좋다.
  • 게스트 IP : 게스트의 IP 를 정확하게 적어준다. (게스트 OS 로 부팅하여 확인. 10.0.2.15 일 가능성이 높다.)
  • 게스트 포트 : ssh 를 사용한다면 22. (http는 80, ftp는 21. 기타 다른 서비스를 사용한다면 해당 포트를 정확하게 적어야 한다.)

이것으로 끝.

호스트에서는 이제 이런 식으로 접근이 가능해진다. 만약 위에서 호스트 포트를 3084로 정했다면,

ssh -p 3084 serverid@127.0.0.1

** 그런데, 여기서 Permission denied (publickey,password) 오류가 발생할 경우가 있다.
아마도, 현재 접속하는 PC 에 .ssh 가 있고, 거기에 개인키가 있는 상황인데, VBox 에는 공개키가 아직 없는 상황일 때 이런 오류가 발생한다.

이때는 강제로 Password 인증을 사용해야만 한다. 물론, ssh 서버에도 패스워드를 사용하겠다는 항목이 있어야 한다.

ssh -p 3084 serverid@127.0.0.1 -o PreferredAuthentications=password
# 또는 더 확실하게
ssh -p 3084 serverid@127.0.0.1 -o PreferredAuthentications=password -o PubkeyAuthentication=no

이렇게 해주면 아마도 무리없이 접속이 되리라..
안되면? 또 파 봐야지.

내부 IP를 쓰는 다른 기기에서는 VBox 가 있는 기기의 IP 를 써서 이렇게 접속할 수 있다.

ssh -p 2938 serverid@192.168.0.10

127.0.0.1 은 호스트 자신을 가리키는 번호이고, 192.168.0.10 은 내부네트워크에서 할당된 호스트 IP 번호이다. (결국 그게 그거다.)
만약 호스트에서만이 아니고 다른 기기에서도 접속하려면, 두번째 방식(내부 IP방식)으로 ssh 접속을 해줘야 한다. 호스트가 아닌 다른 기기에서 127.0.0.1 로 접속하면, 그 기기로 접속하라는 의미가 되어, 엉뚱한 결과가 나타나게 된다.

호스트 PC를 고정IP로 설정하는 편이 여러모로 헷갈리지 않고 편리하다.

** ssh 가 아닌 mysql 이라면 이런 식으로 접속한다. (54268 은 VBOX 에서 설정한 호스트 포트이다.)

mysql -u root -p --host=192.168.0.10 --port=54268

** 추가로.. 공인 IP 에서 VBox 내부로 접속하려면??
이럴 일까지야 없겠지만, 이렇게 하려면 공유기에서 해당 PC로 Port Forwarding 을 해줘야 한다.
즉, 공인 IP –> 192.168.0.10(위에서 든 예일 경우) 로 자동 이동하도록 신호를 넘겨주는 것이다.
그렇게 되면, 외부기기 –> 공유기(공인 IP) –> 192.168.0.10(내부 IP) –> 10.0.2.15 (VBox 내부 IP) 로, 차례대로 연결이 된다.

Author: 아무도안

안녕하세요. 글 남겨주셔서 고맙습니다.