我遇到了一个奇怪的问题:很长一段时间以来,我在 Chrome 和基于 Chrome 的浏览器(例如 Opera)中都收到错误 ERR_NETWORK_CHANGED。一开始我怀疑是 Bitdefender 防火墙和 VirtualBox 私有网络适配器的问题。最后我发现问题的根源是 Windows10 1709 中的新“默认开关”功能。此开关在网络连接中显示为未识别网络,是造成麻烦的原因。当我禁用此开关网络适配器时,错误消失。问题是什么?
- 即使在启动时禁用虚拟机管理程序(BCD 设置:hypervisorlaunchtype off),默认开关也会启用。
- 当我移除连接到默认交换机的适配器时,它会在下次启动时重新创建。
- 如果我禁用此适配器,Windows10 将创建另一个“默认开关”。
我教授有关网络/Windows/Linux 技术的不同课程,因此卸载 Hyper-V 或 VirtualBox 不是一个选择。
是否可以配置 Windows10 网络来防止出现此问题?
我解决这个问题的初步想法是创建在登录和注销时运行的 PS 脚本,禁用/启用 DefaultSwitch 适配器。到目前为止,我无法发现 Hyper-V 虚拟机管理程序状态(开/关)。PS cmdlet获取 WindowsOptionalFeature Hyper-v -online仅告知 Hyper-V 是启用还是禁用,但不告知其当前状态(开/关)。
答案1
我终于发现Windows 10有一个bug。
如果您在安装 Windows10 1709(具有新的 DefaultSwitch 功能)之前已使用 *-NetNat cmdlet 在 Hyper-V 中配置了 NAT,那么您的 DefaultSwitch 配置将会被破坏。
MS 员工在 MS 支持论坛上给出的建议毫无用处,因为禁用和启用 Hyper-V 功能(其间多次重启)不会重置 Hyper-V 配置。也无法手动配置 DefaultSwitch。
'18 年 11 月 15 日更新:
我找到了博客文章:[https://mikefrobbins.com/2018/11/08/managing-the-hyper-v-default-switch-in-windows-10-version-1709-and-higher-with-powershell/#comment-39379]. 作者建议在 DefaultSwitch 适配器的 IPv4 和 IPv6 协议上都设置较高的度量:
Get-NetIPInterface -InterfaceAlias 'vEthernet (Default Switch)' | Set-NetIPInterface -InterfaceMetric 5000 -PassThru
它不能解决问题(DefaultSwitch 仍然不起作用),但是我可以使用没有 ERR_NETWORK_CHANGE 错误的浏览器。
由于微软没有人知道如何修复他们的 DefaultSwitch,因此唯一完整的解决方案可能是全新安装 1809。