TL; DR :
- 그 동안 호스트의 VPN 상태 (연결 또는 연결 해제)가 변경되지 않도록 VM을 재부팅합니다.
- VirtualBox NAT 엔진이 DNS 요청을 가로 채어 호스트의 확인자에게 전달합니다. 즉, 호스트의 DNS API를 사용하여 정보를 쿼리하고 게스트에게 반환합니다. 이 설정은 다음과 같습니다.
VBoxManage modifyvm "VM name" --natdnshostresolver1 on
VPN에 연결된 호스트에서 VM을 실행하면 VPN 상태가 변경 될 때마다 DNS 문제가 발생할 수 있습니다. 두 가지 시나리오가 있습니다.
- VM이 VPN 연결 호스트에 생성되고 특정 시점에서 VPN 연결이 끊어집니다.
- VM이 VPN이 연결되지 않은 호스트에 생성되고 특정 지점에서 VPN이 연결됨
1) VPN 연결-> VPN 연결 끊김
이 경우 VM은 아마도 VPN 공급자 네트워크의 일부인 DNS 주소를 받았을 것입니다. 일반적으로 내부 개인 IP 주소입니다. 의 내용을 확인하십시오 cat /etc/resolv.conf
. 내 경우에는 다음을 얻습니다.
nameserver 10.8.8.1
<--- VPN 공급자 네트워크 내부에 있습니다.
nameserver 192.168.178.1
<--- 이것은 내 집 출입구입니다 (라우터)
이제 VPN 연결에서 호스트 연결을 끊습니다.
- VM의 DNS 구성은 변경되지 않습니다-> VM은 여전히 호스트가 VPN에 연결되어 있지 않아 도달 할 수없는 대상 IP 10.8.8.1로 DNS 요청을 보냅니다.
자세한 내용은 :
- 패킷은 VirtualBox NAT 네트워크에 의해 정의 된 def GW, 소스 NATT (호스트 IP 주소 포함)에 의해 최종적으로 홈 게이트웨이로 전달되는 호스트의 라우팅 테이블에 의해 처리됩니다.
- 여기에 홈 게이트웨이에 LAN 쪽 (개인 주소)에 10.8.8.1에 대한 항목이 없으므로 개인 주소로 WAN 쪽 (공용 주소)에 전달할 수 없으므로 패킷이 삭제됩니다.
2) VPN 연결 끊김-> VPN 연결
이 경우 VM이 시작될 때 호스트가 VPN에 연결되지 않았기 때문에 VM은 VPN 네트워크 공급자의 일부인 DNS 주소를받지 못합니다. 의 내용을 확인하십시오 cat /etc/resolv.conf
. 내 경우에는 다음을 얻습니다.
nameserver 192.168.178.1
<--- 이것은 내 집 출입구입니다 (라우터)
이제 호스트를 VPN 연결에 연결하십시오.
- VM의 DNS 구성은 변경되지 않습니다.-> VM은 여전히 DNS 요청을 대상 IP 192.168.178.1로 전송합니다. 이는 VM의 DNS 요청이 192.168.178.1 (내부 홈 게이트웨이 IP 주소)에 도달 할 수없는 VPN 네트워크로 패킷을 전달하는 VPN Tap 인터페이스.
자세한 내용은 :
- 패킷은 VirtualBox NAT 네트워크에 의해 정의 된 def GW로 전송되고, VPN 탭 인터페이스로 전송되며, VM IP 소스 주소를 VPN 네트워크에 의해 호스트에 할당 된 IP 주소로 대체하는 IP 헤더를 수정하는 VPN 탭 인터페이스로 전송됩니다. address는 DNS 주소 192.168.178.1로 유지됩니다.
- 이 패킷은 외부 IP 헤더에 캡슐화되어 호스트 IP 주소를 소스로 사용하고 (btw는 나중에 홈 게이트웨이에서 소스 NAT로 대체 됨) VPN 서버를 대상 주소로 사용합니다.
- 패킷이 VPN 네트워크에 도달하면 캡슐화가 해제됩니다. 대상 IP 주소는 이제 VPN 제공자 네트워크가 도달 할 수없는 DNS 주소 192.168.178.1입니다 (VPN 네트워크 제공자가 DNS 서버를 위해 VPN 네트워크 제공자가 사용하는 것과 정확히 동일한 IP 주소가 아닌 경우).