VirtualBox-호스트가 VPN에 연결되면 게스트 Ubuntu에서 DNS가 손실 됨


11

eth0의 기본 NAT를 사용하여 VirtualBox에 Ubuntu 게스트 OS가 있습니다.

집에서 사무실 VPN을 사용하는 경우 사무실과 집에서 잘 작동합니다.

호스트 OS (Windows 7)가 VPN에 연결되면 Virtualbox 게스트 내에서 DNS 조회가 작동하지 않습니다. 호스트에서 DNS 조회가 정상입니다. Virtualbox 내에서 VPN과 외부 모두에서 IP를 직접 핑 (ping) 할 수 있으므로 연결 문제가 아닙니다.

/etc/resolv.conf및 에 따르면 Ubuntu 게스트가 localhost를 DNS 진입 점으로 사용하는 것 같습니다 nslookup. 따라서 로컬에서 다른 기본 DNS로 전달되는 것처럼 보입니다.

이 문제를 어떻게 해결합니까?


VPN에 무엇을 사용하고 있습니까? 이 기기가 연결된 장치의 VPN 설정에 액세스 할 수 있습니까? 일반적으로 VPN에 연결된 시스템은 VPN 장치에서 설정을 가져옵니다.
jmreicha

호스트에서 DNS 조회가 제대로 작동하는지 확인하려면 영향을받는 것은 Virtualbox 게스트뿐입니다.
wrschneider

답변:


17

이것은 어떤 이유로 작동했습니다

C:\...\VirtualBox\VBoxManage modifyvm "VM name" --natdnshostresolver1 on

VPN이 활성화되면 호스트가 VirtualConfig가 Windows 구성에서 선택한 지정된 DNS 서버로 요청을 전달하는 것 외에도 DNS 조회를 위해 특별한 작업을 수행하고 있기 때문입니다.


1
당신은 하루 친구를 저장했습니다.
CantGetANick

나를 위해 완벽하게 일했습니다!
응 우옌

1

나는 Lubuntu 16.04와 매우 유사한 상황을 보였지만 (다른 우분투에서도 동일해야 함)이 수정은 상황을 개선하지 못했습니다. 16.04 이상에서는 NetworkManager가 로컬 DNS 프록시 (dnsmasq)를 사용하고 최소한 기본 구성에서는 VPN 연결에서 잘 작동하지 않는 것이 문제입니다.

/etc/NetworkManager/NetworkManager.conf에서 dns = dnsmasq 주석 달기 / 삭제

[main]
plugins=ifupdown,keyfile,ofono
# dns=dnsmasq

dnsmasq를 구성하는 방법이있을 수 있지만 호스트 (dns 등)에 동등한 액세스 권한을 부여하므로 조사하지 않았습니다. YMMV.


1

TL; DR :

  • 그 동안 호스트의 VPN 상태 (연결 또는 연결 해제)가 변경되지 않도록 VM을 재부팅합니다.
  • VirtualBox NAT 엔진이 DNS 요청을 가로 채어 호스트의 확인자에게 전달합니다. 즉, 호스트의 DNS API를 사용하여 정보를 쿼리하고 게스트에게 반환합니다. 이 설정은 다음과 같습니다.

VBoxManage modifyvm "VM name" --natdnshostresolver1 on


VPN에 연결된 호스트에서 VM을 실행하면 VPN 상태가 변경 될 때마다 DNS 문제가 발생할 수 있습니다. 두 가지 시나리오가 있습니다.

  1. VM이 VPN 연결 호스트에 생성되고 특정 시점에서 VPN 연결이 끊어집니다.
  2. 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 주소가 아닌 경우).
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.