VirtualBox Ubuntu VM(Windows 主机)在连接到主机上的 VPN 后停止解析名称

VirtualBox Ubuntu VM(Windows 主机)在连接到主机上的 VPN 后停止解析名称

我正在使用 VirtualBox ( ) 在 Windows 10 主机上运行 Lubuntu 客户虚拟机6.0.10r132072。网络一切正常。

当我连接到公司 VPN 时,大多数情况下 VM 会失去解析名称的能力。

  • 在 Firefox 中它不会打开任何网站(例如 github.com: Hmm. We’re having trouble finding that site. We can’t connect to the server at github.com.)。
  • 虽然我可以使用 URL 中的 IP 地址连接到我们公司的 Jenkins (例如http://11.0.11.111:8080/job/deployment/job/master/30/console)
  • 我也能 ping8.8.8.8并得到响应

如果我重启虚拟机,一切都会开始正常工作。我比较了ifconfig重启前后的输出,它们是相同的(除了类似的东西RX packets

问题:我可以做些什么来避免重新启动? 我可以只重新启动虚拟机上的某些服务吗?


我的公网 IP(用谷歌搜索我的 IP 是什么):207.108.xxx.yyy

Windows 主机ipconfig

  C:\Users\12345465>ipconfig

  Windows IP Configuration


  Ethernet adapter Ethernet:

     Connection-specific DNS Suffix  . : company.corp.local
     Link-local IPv6 Address . . . . . : 1234::d50:de8e:52f6:4de8%9
     Link-local IPv6 Address . . . . . : 1234::64f0:2f92:4da6:55c9%9
     IPv4 Address. . . . . . . . . . . : 172.16.102.28
     Subnet Mask . . . . . . . . . . . : 255.255.255.0
     Default Gateway . . . . . . . . . : ::
                                         172.16.123.4
  Ethernet adapter VirtualBox Host-Only Network:

     Connection-specific DNS Suffix  . :
     Link-local IPv6 Address . . . . . : 1234::3c3e:6640:4e25:d1e6%23
     IPv4 Address. . . . . . . . . . . : 192.168.123.1
     Subnet Mask . . . . . . . . . . . : 255.255.255.0
     Default Gateway . . . . . . . . . :

  Wireless LAN adapter Wi-Fi 3:

     Connection-specific DNS Suffix  . :
     Link-local IPv6 Address . . . . . : 1234::1d8a:307:5056:86e6%2
     IPv4 Address. . . . . . . . . . . : 192.168.123.105
     Subnet Mask . . . . . . . . . . . : 255.255.255.0
     Default Gateway . . . . . . . . . : 192.168.123.1

  C:\Users\12345465>

Lubuntu 访客ifconfig

  17:00:26-kash$ ifconfig

  enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
          inet 111.22.2.15  netmask 255.255.255.0  broadcast 111.22.2.255
          inet6 fe80::7c:910:4429:b3a2  prefixlen 64  scopeid 0x20<link>
          ether 08:00:27:06:de:d8  txqueuelen 1000  (Ethernet)
          RX packets 76337  bytes 70214530 (70.2 MB)
          RX errors 0  dropped 0  overruns 0  frame 0
          TX packets 41976  bytes 5820689 (5.8 MB)
          TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

  lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
          inet 127.0.0.1  netmask 255.0.0.0
          inet6 ::1  prefixlen 128  scopeid 0x10<host>
          loop  txqueuelen 1000  (Local Loopback)
          RX packets 39966  bytes 20275695 (20.2 MB)
          RX errors 0  dropped 0  overruns 0  frame 0
          TX packets 39966  bytes 20275695 (20.2 MB)
          TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

  17:09:51-kash$ 

Lubuntu 版本:

    16:50:49-kash$ cat /etc/*rele*
    DISTRIB_ID=Ubuntu
    DISTRIB_RELEASE=18.04
    DISTRIB_CODENAME=bionic
    DISTRIB_DESCRIPTION="Ubuntu 18.04.4 LTS"
    NAME="Ubuntu"
    VERSION="18.04.4 LTS (Bionic Beaver)"
    ID=ubuntu
    ID_LIKE=debian
    PRETTY_NAME="Ubuntu 18.04.4 LTS"
    VERSION_ID="18.04"
    HOME_URL="https://www.ubuntu.com/"
    SUPPORT_URL="https://help.ubuntu.com/"
    BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
    PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
    VERSION_CODENAME=bionic
    UBUNTU_CODENAME=bionic
    16:51:01-kash$ 

答案1

听起来 VPN 正在将您的本地解析器指向您的公司 DNS 服务器。

在打开 VPN 之前,首先检查虚拟机的 DNS 从哪里获取:

在 Windows 主机上,尝试以下命令:

nslookup example.com

这应该会给你类似下面的结果

C:\Users\Administrator>nslookup example.com
Server:  gw.local.domain.com
Address:  192.168.1.1

Non-authoritative answer:
Name:    example.com
Addresses:  2606:2800:220:1:248:1893:25c8:1946
          93.184.216.34

该行Server: gw.local.domain.com显示哪个 DNS 服务器回答了查询,即您的默认 DNS 解析器。启用 VPN 后执行此操作,您可能会看到变化。

你可以在 Ubuntu VM 上执行相同的操作,以下命令

dig example.com

你的输出应该看起来像这样

user@localhost:~$ dig example.com
; <<>> DiG 9.8.4-rpz2+rl005.12-P1 <<>> example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46803
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;example.com.   IN A

;; ANSWER SECTION:
example.com.  2424 IN A 93.184.216.119

;; Query time: 12 msec
;; SERVER: 192.168.0.1#53(192.168.0.1)
;; WHEN: Thu Jan  9 16:07:09 2014
;; MSG SIZE  rcvd: 45

该行;; SERVER: 192.168.0.1#53(192.168.0.1)显示哪个服务器回答了查询。

现在,如果您想查看设置更改,或修改 DNS 解析器设置,您可以在此处进行。

根据您的 Ubuntu 版本,您需要在一些不同的地方进行检查。

这里有一些文档:https://linuxize.com/post/how-to-set-dns-nameservers-on-ubuntu-18-04/。您将需要为正在使用的特定接口添加名称服务器配置。

如果是 18.04 或更新版本,请检查此文件:

/etc/netplan

如果版本早于 18.04,请检查此文件

/etc/network/interfaces

现在,大概 VirtualBox 正在使用主机来解析 DNS 查询,或者它只是添加与主机 NIC 正在使用的相同设置。

在 Windows 主机上,运行以下命令来显示已配置的 DNS 服务器

ipconfig /all

这可能会给您提供一些关于两个系统上配置了哪些服务器的提示。

答案2

我有类似的问题。此链接中接受的答案解决了我的问题:https://superuser.com/questions/641933/how-to-get-virtualbox-vms-to-use-hosts-dns

VBoxManage modifyvm "<VM name>" --natdnshostresolver1 on

也可以看看http://www.virtualbox.org/manual/ch09.html#nat_host_resolver_proxy

相关内容