저는 OS X 호스트에서 VirtualBox 5.0.20을 실행하고 있습니다. Ubuntu, CentOS, Windows 및 OS X를 포함한 다양한 게스트 시스템이 있습니다.
각 시스템에 대해 포트 18812에서 실행되는 서버 프로세스(Python 스크립트)를 사용하여 라이브 스냅샷(즉, 가상 머신이 실행되는 동안)을 생성했습니다. 다음을 통해 모든 가상 머신에 대한 포트 전달을 구성했습니다.
$ VBoxManage modifyvm <vmid> --natpf1 rpyc,tcp,,18812,,18812
이렇게 하면 localhost:18812
호스트 시스템에 연결하여 게스트에서 실행 중인 서버 프로세스에 연결할 수 있습니다.
모두 괜찮습니다. VM을 종료하고 스냅샷을 복원한 후 다시 시작하기 전까지는 괜찮습니다. 서버 프로세스가 아직 실행 중인 것 같으며 이에 연결할 수 있습니다.손님 내부에서, 그러나 호스트 시스템의 연결이 더 이상 작동하지 않습니다.
포트 전달은 여전히 작동하지만 서버 프로세스에 다시 연결할 수 있게 만드는 유일한 방법은 게스트에서 네트워크 시스템을 다시 시작하거나(예: service network-manager restart
Ubuntu에서 실행) 서버 프로세스를 다시 시작하는 것 같습니다. 둘 다 그다지 효율적이지 않습니다. 이상적인.
스냅샷을 복원할 때 실행 중인 서버 프로세스에 즉시 액세스할 수 있도록 VirtualBox VM을 설정하는 방법이 있습니까? 어쨌든, 나는 모든 게스트 시스템에서 이 문제를 발견했지만 특정 포트를 수신하는 netcat과 같은 간단한 "서버"에서도 발견했습니다.
답변1
이 상황에 대한 해결 방법은 시작 직후 가상 머신의 링크 상태를 전환하는 것입니다. 즉, 명령줄에서 다음을 수행합니다.
$ VBoxManage startvm <vmid>
$ VBoxManage controlvm <vmid> setlinkstate1 off
$ VBoxManage controlvm <vmid> setlinkstate1 on