VirtualBox-主机连接到VPN时,来宾Ubuntu丢失了DNS


11

我在VirtualBox中使用默认的eth0 NAT的Ubuntu来宾操作系统。

除了在家中使用办公室VPN以外,还可以在办公室和家庭中正常工作。

当主机操作系统(Windows 7)连接到VPN时,DNS查询在Virtualbox guest虚拟机中不起作用。DNS查找在主机上很好。在Virtualbox中,我可以直接在VPN内部和外部ping IP,因此这不是连接问题。

它看起来像Ubuntu客户为localhost使用的DNS切入点,根据/etc/resolv.confnslookup。因此,看起来好像某些东西正在本地分发到其他基础DNS。

我该如何解决?


您正在使用什么VPN?您可以访问这些机器正在连接的设备上的VPN设置吗?通常,连接到VPN的计算机从VPN设备获取其设置。
jmreicha 2013年

为了弄清主机上的DNS查找工作正常-仅受影响的Virtualbox来宾。
wrschneider 2013年

Answers:


17

这出于某些原因起作用

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

我怀疑这是因为当VPN处于活动状态时,主机除了将请求转发到VirtualBox从Windows配置中拾取的指定DNS服务器之外,还对DNS查找做了一些特殊的操作。


1
您保存了一天伙计。
CantGetANick

为我完美地工作!
Minh Nguyen)

1

我在Lubuntu 16.04上有非常相似的情况(在其他Ubuntu中应该是相同的),但此修复程序并不能改善这种情况。至少对于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:

  • 重新启动VM,以确保主机的VPN状态(已连接或已断开)在此期间保持不变;
  • 让VirtualBox NAT引擎拦截DNS请求并将其转发到主机的解析器,即使用主机的DNS API查询信息并将其返回给来宾。您通过以下方式设置:

VBoxManage modifyvm "VM name" --natdnshostresolver1 on


每当VPN状态更改时,在连接VPN的主机中运行VM都会导致DNS问题。有两种情况:

  1. 虚拟机在连接了VPN的主机中生成,并且在某些时候VPN断开连接;
  2. 虚拟机在未连接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仍将向目标IP 10.8.8.1发送DNS请求,因为主机不再与VPN连接,因此无法访问该IP

详细信息:

  • 数据包将被发送到VirtualBox NAT网络定义的def GW,源NATTed(带有主机IP地址),最后由主机的路由表处理,该路由表会将其转发到您的家庭网关。
  • 由于您的家庭网关在LAN端没有用于10.8.8.1的条目(专用地址),并且不能在WAN端转发(公用地址),因为它是专用地址,因此该数据包将被丢弃。

2)VPN断开-> VPN连接

在这种情况下,由于启动虚拟机时主机未连接到VPN,因此虚拟机将不会接收VPN网络提供商提供的DNS地址。检查的内容cat /etc/resolv.conf。就我而言,我得到以下信息:

nameserver 192.168.178.1 <---这是我的家庭网关(路由器)

现在将主机连接到VPN连接:

  • VM中的DNS配置不会更改-> VM仍将向目标IP 192.168.178.1发送DNS请求,该IP无法访问(但仍然可以ping通),因为现在VM正在处理来自VM的DNS请求VPN Tap接口,它将数据包转发到无法访问192.168.178.1(内部家庭网关IP地址)的VPN网络。

详细信息:

  • 数据包将发送到VirtualBox NAT网络定义的def GW,发送到VPN Tap接口,该接口将修改IP报头,将VM IP源地址替换为VPN网络分配给主机的IP地址,而目的地地址仍然是DNS地址192.168.178.1。
  • 然后,此数据包将被封装在一个外部IP报头中,该报头将以主机IP地址作为源(该btw以后将由家庭网关上的源NAT代替)并将VPN Server作为目标地址。
  • 当数据包到达VPN网络时,将其解封装。现在,目标IP地址再次是VPN提供商网络无法访问的DNS地址192.168.178.1(除非特别确信,该地址与您的VPN网络提供商用于其DNS服务器的IP地址完全相同)。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.