我正在使用 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
) - 我也能 ping
8.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