我在使用 VirtualBox 时遇到了一个非常奇怪的问题。
大多数时候,我的笔记本电脑都是硬连线到以太网连接的。有时,当我离开办公桌时,除了 Wi-Fi 之外我别无选择。连接到 Wi-Fi 时,我的主机 (Windows 10) 在几秒钟内就可以访问网络,没有任何问题。但是,来宾 (Windows XP SP3) 的行为就像它仍然处于脱机状态一样。
我在 VirtualBox 中的网络配置是NAT
.
奇怪的是,这只发生在无线上。每当我对计算机进行硬接线时,主机操作系统在获取网络连接时都不会遇到任何问题。我将其设置为 NAT,因为我需要来宾操作系统才能访问 Internet,但我不希望主机之外的客户端连接到它。我也不想将客户机绑定到有线网卡或无线网卡,因为那样它只能在其中一个上工作。
另一方面,每当我连接到 Wi-Fi 时,从客人那里获得 Internet 连接总是存在问题。
有一次我遇到问题,我打字ipconfig /flushdns
,突然事情开始了。从那时起,这还不够。刷新我的 DNS 并不足以使事情在 Wi-Fi 上运行。
我发现强制它工作的唯一方法是进入来宾的 VirtualBox 设置并将网络适配器从 更改NAT
为Bridged
. 在这一点上,它仍然不起作用。但是,现在如果我输入ipconfig /flushdns
(在来宾上),一切都会突然起作用:我可以访问网络。更奇怪的是我现在可以把它改回NAT
. 突然,它会停止工作,但是,如果我再做ipconfig /flushdns
一次,它就会工作。
换句话说,我已经绕了一圈,回到了NAT
最终有效的连接。开始和结束状态完全相同,所以我很困惑为什么客人无法自行获得网络连接。如果我只需要ipconfig /flushdns
在连接到 Wi-Fi 时输入,那将是一回事,但必须退出来宾并将适配器从NAT
to更改为Bridged
然后再返回到NAT
然后键入命令是一件非常痛苦的事情。
为什么会发生这种情况,更重要的是,我该如何解决这个问题,以便它像硬连线一样无缝地工作?ipconfig /flushdns
(例如,从 Wi-Fi 回到以太网时,我从不需要打字,或者弄乱任何适配器设置)。
这是最近故障排除会话的命令提示符输出:
刚连上 Wi-Fi,没有网络访问:
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.
C:\Documents and Settings\InterLinked>ping google.com
Ping request could not find host google.com. Please check the name and try again
.
C:\Documents and Settings\InterLinked>ping google.com
^C
C:\Documents and Settings\InterLinked>ipconfig /flushdns
Windows IP Configuration
Successfully flushed the DNS Resolver Cache.
C:\Documents and Settings\InterLinked>ping google.com
Ping request could not find host google.com. Please check the name and try again
.
更改并重NAT
试Bridged
:
C:\Documents and Settings\InterLinked>
C:\Documents and Settings\InterLinked>ping google.com
我提前终止了它,所以输出丢失了,但是在我刷新 DNS 之前 ping 失败:
^C
C:\Documents and Settings\InterLinked>ipconfig /flushdns
Windows IP Configuration
Successfully flushed the DNS Resolver Cache.
C:\Documents and Settings\InterLinked>ping google.com
Pinging google.com [172.217.7.14] with 32 bytes of data:
Reply from 172.217.7.14: bytes=32 time=15ms TTL=48
Reply from 172.217.7.14: bytes=32 time=13ms TTL=48
Reply from 172.217.7.14: bytes=32 time=15ms TTL=48
Reply from 172.217.7.14: bytes=32 time=20ms TTL=48
Ping statistics for 172.217.7.14:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 13ms, Maximum = 20ms, Average = 15ms
C:\Documents and Settings\InterLinked>
我改Bridged
回NAT
:
C:\Documents and Settings\InterLinked>ping google.com
Pinging google.com [172.217.7.14] with 32 bytes of data:
Reply from 172.217.7.14: bytes=32 time=15ms TTL=47
Destination host unreachable.
Destination host unreachable.
Destination host unreachable.
Ping statistics for 172.217.7.14:
Packets: Sent = 4, Received = 1, Lost = 3 (75% loss),
Approximate round trip times in milli-seconds:
Minimum = 15ms, Maximum = 15ms, Average = 15ms
C:\Documents and Settings\InterLinked>ipconfig /flushdns
Windows IP Configuration
Successfully flushed the DNS Resolver Cache.
C:\Documents and Settings\InterLinked>ping google.com
Pinging google.com [172.217.7.14] with 32 bytes of data:
Reply from 172.217.7.14: bytes=32 time=12ms TTL=47
Reply from 172.217.7.14: bytes=32 time=6ms TTL=47
Reply from 172.217.7.14: bytes=32 time=188ms TTL=47
Reply from 172.217.7.14: bytes=32 time=14ms TTL=47
Ping statistics for 172.217.7.14:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 6ms, Maximum = 188ms, Average = 55ms
C:\Documents and Settings\InterLinked>
正如所暗示的,启用 VirtualBox DNS 解析器是解决方案。
以下是具体步骤:
cd C:\Program Files\Oracle\VirtualBox
VBoxManage modifyvm "<VM name>" --natdnshostresolver1 on
<VM name>
只是虚拟机的名字,也可以通过运行找到VBoxManage list runningvms
。