大约 10 天前,一位同事将他的笔记本电脑带给我,原因是出现“无法上网”的问题。这是一台装有 Windows 11 Home 的华硕电脑。出现问题时使用的是 22H2 版本。那是在几天前,在一轮 Windows 更新之后发生的。但他承认,他已经很长时间没有在那台笔记本电脑上运行更新了(至少不是故意的)。
长话短说:它确实连接到了互联网(我可以通过 IP 地址在 CMD 中 ping 外部网站),但无法上网(无论是在任何浏览器中,甚至无法通过名称在 CMD 中 ping 网站[但 nslookup 确实有效!]。
请相信我,我尝试了所有方法。上周,我甚至在原有系统上重新安装了 Windows 11(保留应用程序和文件),但毫无效果。我还与 Microsoft 支持人员进行了在线聊天。
我怀疑这是某个更新中的一个错误。该错误仅影响通过 WiFi(任何 WiFi,甚至是不同的外部 USB WiFi 网络适配器)连接时的 DNS 功能。通过以太网硬连线时,一切都运行正常。
我怀疑就地(重新)安装 Windows 没有帮助,因为遗憾的是,现在只能下载 Windows 11 23H2 ISO,这显然必须包含导致互联网崩溃的 22H2 更新集。因此,当我重新安装 Windows 时,我最终安装了 23H2。
奇怪的是(此处提示),WiFi 网络出现间歇性故障(从显示地球仪到信号条,但只是“表面上”,因为使用 WiFi 时互联网并非一直可用)。
硬件运行良好:如果从 Linux 驱动器启动,它会立即完美运行。另外,正如我所说,我尝试了不同的 USB WiFi 适配器。
我保证,无论您正在考虑或将要考虑和/或推荐什么尝试、测试或可能的解决方案,都已经尝试过并失败了。
为了您的方便,我将在下面粘贴我所做的(大部分)事情的回顾。
无论是谁找到解决方案和/或识别具体的根本原因(影响 DLL、文件、文件集、给定 INI 文件中的设置、注册表项等等...)将永远让我对 IT 产生最深切的敬佩。只要有机会,我将无数次地讲述这个故事,在我的余生中,提到最终做到这一点的 Stack Exchange 用户。
谢谢!
回顾(大部分)尝试过的测试、评估和修复:
几天前运行 Windows 更新后,计算机突然断电并无法连接到互联网:“没有互联网”。
我尝试了 3 个不同的 ISP,但问题仍然存在
我尝试在命令提示符下通过 IP 地址 ping 外部网站(例如,对 Google 执行 ping 8.8.8.8),并且 ping 得很完美,因此,计算机在某种程度上确实连接到了互联网
我尝试在命令提示符下 ping 外部网站,但使用网站名称而不是 IP 地址,ping 失败
我尝试了 3 种不同的浏览器,问题仍然存在
我尝试添加便携式 Firefox 浏览器,问题仍然存在
浏览器在尝试加载任何网站时,有时会出现以下错误消息:ERR_NAME_NOT_RESOLVED,这让我们认为所有问题都指向 DNS 问题
我尝试使用 3 部不同的手机使用移动热点,我们通常使用这些手机和几台笔记本电脑连接到互联网(它们都可以正常工作):受影响的笔记本电脑在这三台电脑上都失败了。
我尝试通过以太网电缆硬连线受影响的计算机,它工作正常
仅当通过 WiFi 连接到互联网时才会出现此问题。另一方面,如果使用以太网电缆进行硬连线,则一切正常。
我尝试升级 WiFi 卡驱动程序,尝试不同的驱动程序(直接从英特尔、从华硕产品支持网站等),但问题仍然存在
我删除并重新安装了 WiFi 卡,问题仍然存在
我在 WiFi 卡设置中禁用了省电功能,我们还禁用了 PCI Express 总线(受影响的笔记本电脑的内部 WiFi 卡连接在该总线上)的省电功能
重要的:我尝试在 USB 上添加一个完全不同的 WiFi 适配器(USB 端口可以与任何其他外围设备或 USB 存储驱动器完美配合),但同样的问题仍然存在。
是的,我尝试了几个 WiFi 网络,但问题依然存在
该计算机一直受到专业企业 Syamantec 防病毒软件的保护,但我也尝试禁用它并禁用 Windows 防火墙片刻,问题仍然存在
我通过更新的防病毒软件的可启动 USB 救援棒启动了受影响的计算机,并从那里对驱动器进行了全面扫描(在启动 Windows 之前),以进行更彻底的扫描,没有发现任何恶意软件
我尝试重置网络几次,但没有帮助。
我尝试重新安装 WiFi 网卡的驱动程序,既尝试使用从计算机制造商网站(华硕)获取的驱动程序(在特定计算机产品支持页面下),也尝试使用从英特尔网站获取的驱动程序(英特尔是内置 WiFi 网卡的制造商)。这两种方法都无法解决问题。
我必须指出,我排除了 WiFi 网卡是导致问题的原因。我们可以相当肯定地得出结论,因为我这样做了:
- 我尝试通过 USB 端口使用完全不同的 WiFi 网卡,但问题依然存在
- 此外,当问题发生时,如果我通过 IP 地址 PING 外部网站,ping 可以正常工作。例如,我尝试 ping 8.8.8.8,它在命令提示符下工作正常。
- 因此,连接正常,WiFi 网卡正常,并且确实连接到互联网。
仅当尝试解析网站名称时才会发生此问题,例如尝试使用 Web 浏览器访问网站,或者在命令提示符中,如果我尝试使用名称而不是 IP 地址 ping 外部网站,例如,在命令提示符中:PING 8.8.8.8 工作正常,PING google.com 不起作用,因此,有连接,但无法解析名称。一切都表明 DNS 问题。
确实,大多数情况下,网络浏览器无法加载任何网站(Edge、Chrome、Firefox、便携式 Firefox),它们会给出以下错误:err_name_not_resolved
- 这表明 DNS 存在问题
- 但我也尝试了所有 DNS 故障排除程序,但都无法解决问题。
- 我尝试将 DNS 设置保留为自动
- 我尝试设置第三方 DNS(例如 8.8.8.8、8.8.4.4、1.1.1.1),但没有帮助
- 我还尝试卸载所有可以卸载的 11 月更新,但没有用。也许,这是无法卸载的更新之一,如果有的话。
- 我在它上面安装了 23H2(就地重新安装 Windows),但它再次没有帮助。
- 这就是为什么我决定联系微软支持,因为我们没有子弹了
微软询问:您的意思是问题在一小时前安装 23H2 更新之前就已经开始出现了吗?
- 正确的
- 微软问道:好的。我们可以执行系统还原吗?
- 不幸的是没有可用的还原点。
- 今天早些时候,我还尝试了 Windows 11 修复重装,即就地安装。我在当前版本之上重新安装了 Windows 11,保留了应用程序和文件,但没有帮助。那时它更新到 23H2,我从 Microsoft 下载了 Windows 11 ISO 并对其进行了重新安装。
- 我还检查了 Hosts 文件,将主机名映射到位于 C:\Windows\System32\drivers\etc\hosts 的 IP 地址。并检查了 127.0.0.1 localhost 行下是否有任何条目。没有。
- 我也尝试过在带网络连接的安全模式下启动。不幸的是,在安全模式下,它只能看到一个虚拟网络适配器,但无法“看到”任何 WiFi 网络。
- 我执行了注册表编辑:一些用户报告说,编辑特定的注册表项解决了他们的问题。该项是
HKEY_LOCAL_MACHINE\\SYSTEM\\CurrentControlSet\\Services\\NlaSvc\\Parameters\\Internet
,要更改的值是 EnableActiveProbing。我确保它的值为 1 而不是 0。但这也没有帮助。 - 我本来想尝试使用 Windows 11 的旧版本(几天前出现问题的版本)对 Windows 11 进行就地升级。但我找不到任何版本。在 Microsoft 上,我只能下载 23H2 ISO
- 我已经删除了最近安装的软件
- 我已经尝试暂时禁用防病毒软件和 Windows 防火墙
- 我已经安装了最新的更新。事实上,即使升级到 23H2 后,它仍然会发现更多更新并安装它们并重新启动。
- 我已经检查了硬件问题。正如我上面提到的,如果我使用 Linux 可启动 USB 驱动器启动 PC,则相同的硬件在互联网上的 WiFi 上可以完美运行。此外,如果在 Windows 下我们连接完全不同的外部 USB WiFi 网络适配器,完全绕过计算机自己的内部 WiFi 网卡,则会出现同样的问题。因此,这不是硬件问题。
- 我已经检查了 WiFi 网络适配器设置,并且 Internet 协议版本 4 (TCP/IPv4) 选项已启用
因此,Microsoft 支持还建议全新安装 Windows,但我解释说这会造成困难并且耗费时间。我还告诉他们,我认为我们应该利用这个问题进行研究。这是一个非常有趣的案例,非常反常。通过重新安装 Windows 来抹去它,而不是剖析和研究它,这将是一种遗憾。这可能会对 Windows 的内部运作产生重要的启示。
我告诉他们,如果我们分析问题的行为,我们应该能够识别出是哪个 Windows 子系统导致了该问题并采取相应的措施。
例如,重要提示:如果我们使用外部 USB WiFi 网卡,问题仍然存在,这排除了计算机 WiFi 卡或其驱动程序的问题。如果我们将计算机硬连线到以太网电缆,问题就会解决,这排除了整个网络子系统受到影响。如果我们通过命令提示符中的 IP 地址 ping 外部网站,这排除了互联网连接完全失败的可能性。网络浏览器给出 ERR_NAME_NOT_RESOLVED 错误消息,这指向 DNS 问题。此外,我们可以在命令提示符中使用它们的 IP 地址成功 ping 外部网站,但如果我们使用它们的名称 ping 相同的网站,ping 就会失败。因此,这似乎是一个影响 Windows DNS 子系统的问题,但仅限于 WiFi 上(无论我们使用哪种 WiFi 网卡),而如果通过以太网电缆连接,它不会影响 Windows 的“部分”。有了这些信息,微软的开发团队应该能够指出导致这种行为的正确子系统并尝试修复它,如果有必要的话,可以通过手动替换 DLL、注册表项或其他组件来修复它。
- 我在加拿大居住期间在多伦多的一家 IT 支持公司工作,公司的大老板建议我做以下事情:
如果你在 hosts 文件中放入一个条目会怎么样?那么按名称 ping 是否有效?这意味着 DNS 有问题,但并非所有名称解析都存在问题
所以,我尝试了一下。如果我输入了这样的条目,按名称 ping 就可以了。
- 奇怪的是,即使是一个简单的 nslookupwww.cnn.com有效!但如果我尝试 pingwww.cnn.com从名字上看,它失败了
他的一位同事,也是我的前同事: 如果您指定 ping 应该使用哪个接口/网关会怎么样?
以及之前的: 你能对任何主机名使用 nslookup 并且它可靠地工作吗?比如尝试十个不同的主要网站,看看它们是否都能工作
哦,谢谢大家......让我看看......好的,11 个网站的 nslookups 工作正常(其中一些只给我 1 个地址,但还是有的)使用 ping 指定网关,仍然失败 这太有趣了。我可以理解 Windows 更新会破坏网络子系统中的某些功能,因此 DNS 将不再起作用。但它仅在使用 WiFi 适配器(内部或 USB 上)时才会选择性地损坏,但在以太网上仍然可以工作,这真的让我很好奇!
重要提示:这必须意味着 Windows 有两个不同的 DNS 子系统,一个用于 WiFi 网络(网络,而不是“适配器”,因为即使在 USB 上使用不同的适配器,问题仍然存在),一个用于以太网网络适配器。
- 检查 DNS 客户端服务:正在运行
- 尝试使用完全限定域名 (FQDN):ping 时使用完整域名。例如,不要使用 pingwww.cnn.com,尝试 pingwww.cnn.com。仍然失败。
- 除了Google的DNS和Cloudflare的DNS之外,我还尝试设置静态OpenDNS(208.67.222.222和208.67.220.220),仍然失败。
- 我也尝试为受影响的计算机设置静态 IP,但没有变化。
- 我确保代理已关闭。
- 我确保 DNS 客户端服务及其所有先决条件服务均已启动并正在运行
- 我还尝试了常用的 CMD 命令(flus、renew 等),通过“netsh int ip reset”重置 TCP/IP 堆栈,但没有帮助。这些实际上是我尝试的一些初步步骤。
- 通过运行命令“route PRINT -4”,我们可以看到当我们通过以太网电缆将计算机连接到公司网络时,有一个永久路由,显示公司网关的 IP、0.0.0.0 掩码和 0.0.0.0 网络地址。我删除了该路由并重新启动了 PC。
重要提示:另一条可能有用的信息如下。WiFi 网络似乎时不时地出现故障。这就是我的意思。经过这些天和尝试,它一直显示此行为:有时,托盘栏会显示“无互联网”时出现的小地球仪。如果我单击它,它已连接到 WiFi 网络,但它显示“无互联网”。如果我在那些时刻运行 Windows 11 网络疑难解答,它会说没有互联网,并显示一张小图片,其中计算机连接到本地 wifi 网络,然后是通往互联网的中断线路。但在其他时候,托盘栏中的小地球仪变成了实际的 WiFi 条图标。如果我在那些时刻单击它,它会显示它已连接到 WiFi 网络,并显示互联网可用。如果我在那些时刻运行疑难解答,它会表现出 2 种可能的不同行为:1) 有时,它说我已连接到互联网,但连接“质量差”(我从意大利语翻译过来,所以我不知道在英语设置的 Windows PC 中确切的对应语句)。 2) 在其他时候,故障排除程序甚至会说我已连接到互联网并且一切正常。但是,无论这些不同的时刻和行为如何,它都无法正常工作。如果我尝试使用任何浏览器访问任何网站,问题仍然存在。如果我甚至尝试使用网站名称在 CMD 中 ping 一个网站,它仍然会失败。
答案1
所以,我确实对自己的问题有一个答案。这是一个答案,因为它回答了:
- 为什么“无互联网”错误会影响计算机(确认 DNS 问题假设)
- 为什么标准 DNS 故障排除和非常规 DNS 故障排除程序都不起作用
- 为什么计算机无法通过 WiFi 网络上网,但通过以太网连接却可以上网
- Windows DNS 系统内究竟存在什么“问题”导致了此问题
它也是:
- 提供主要问题(“无互联网”错误)和子问题(DNS 设置失败)的解决方案
- 发现 Windows 中的一个缺陷,可能是由最近的更新引起的,但这也留下了一个悬而未决的问题(为什么 Windows 会忽略网络设置并要求手动干预注册表)
- 展示对全球 IT 社区有用的根本原因分析和问题解决流程。
答案如下:
终于!问题解决了,至少是部分解决,但在很大程度上解决了。而且根本原因也得到了理解。因此:
感谢用户@Cpt.Whale,在 Windows 事件查看器中启用了 DNS 日志记录并安装了 WireShark。
[奇怪的是,完成此操作后,一段时间内,即使在 WiFi 连接下,我也能够在 CMD 中按名称 ping 网站。但浏览器仍然无法浏览任何网站。]
启用 DNS 日志后,我注意到每个 DNS 调用都通过 192.168.1.1 和 192.168.1.3 发送,它们是公司网络的 DNS 服务器(我们工作场所的笔记本电脑所有者偶尔会通过以太网电缆硬接线使用它们)。此时,我注意到,无论任何人对 WiFi 网络设置进行何种更改(通过控制面板、通过 Windows 11 设置等,手动将其设置为第三方 DNS 服务器,将其设置回自动 DHCP,等等……),它都会忽略任何更改并继续使用这些公司 DNS 服务器。因此,我在整个注册表中搜索了这些服务器,发现了 4 个显示 192.168.1.1、192.168.1.3 的条目。这些条目如下:
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Dnscache\Parameters\DnsPolicyConfig\OpenVPNDNSRouting-0] "Name"=hex(7):2e,00,00,00,00,00 "GenericDNSServers"="192.168.1.1;192.168.1.3" "ConfigOptions"=dword:00000008 "Version"=dword:00000002
[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Tcpip\Parameters\Interfaces{0e3f3f22-79e4-49a5-8a3b-6083a37f0d6b}] "EnableDHCP"=dword:00000000 "Domain"="" "NameServer"="192.168.1.1,192.168.1.3" "RegistrationEnabled"=dword:00000001 "RegisterAdapterName"=dword:00000000 "DhcpServer"="255.255.255.255" "Lease"=dword:00015180 "LeaseObtainedTime"=dword:656cabc3 "T1"=dword:656d5483 "T2"=dword:656dd313 "LeaseTerminatesTime"=dword:656dfd43 "AddressType"=dword:00000000 "IsServerNapAware"=dword:00000000 "DhcpConnForceBroadcastFlag"=dword:00000000 "DhcpGatewayHardware"=hex:c0,a8,01,fe,06,00,00,00,90,fd,73,a3,d5,a3 "DhcpGatewayHardwareCount"=dword:00000001
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Dnscache\Parameters\DnsPolicyConfig\OpenVPNDNSRouting-0] "Name"=hex(7):2e,00,00,00,00,00 "GenericDNSServers"="192.168.1.1;192.168.1.3" "ConfigOptions"=dword:00000008 "Version"=dword:00000002
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces{0e3f3f22-79e4-49a5-8a3b-6083a37f0d6b}] "EnableDHCP"=dword:00000000 "Domain"="" "NameServer"="192.168.1.1,192.168.1.3" "RegistrationEnabled"=dword:00000001 "RegisterAdapterName"=dword:00000000 "DhcpServer"="255.255.255.255" "Lease"=dword:00015180 "LeaseObtainedTime"=dword:656cabc3 "T1"=dword:656d5483 "T2"=dword:656dd313 "LeaseTerminatesTime"=dword:656dfd43 "AddressType"=dword:00000000 "IsServerNapAware"=dword:00000000 "DhcpConnForceBroadcastFlag"=dword:00000000 "DhcpGatewayHardware"=hex:c0,a8,01,fe,06,00,00,00,90,fd,73,a3,d5,a3 "DhcpGatewayHardwareCount"=dword:00000001
我对“OpenVPN”的持续存在感到惊讶,因为我在之前的故障排除中已经卸载了 OpenVPN。因此,首先,我用 CCleaner 清理了注册表,然后重新启动了 PC。但问题仍然存在。但 CCleaner 删除了上面 4 个包含公司 DNS 服务器的注册表条目中的 2 个。然后,我手动修改了剩下的两个条目,将 192.168.1.1、192.168.1.3 替换为 8.8.8.8、8.8.4.4,然后重新启动。瞧。成功了。
几周以来,这台 PC 首次能够在 WiFi 网络上浏览网页。最后,我将 WiFi 适配器设置重新设置为 DHCP,并删除注册表中剩余的两个 8.8.8.8,8.8.4.4 条目中的一个,即 tcpip\parameters\interface 条目,将其留空。我将这些地址保留在剩余的 OpenVPN 条目中,以防万一。重新启动后,它仍然正常工作。
部分结论(2023 年 12 月 5 日):
问题的原因似乎是 Windows 完全忽略了用户对网络和 DNS 设置所做的任何更改。无论您是通过控制面板然后是网络适配器 IPv4 属性进行更改,还是通过 Windows 11 的新系统设置菜单进行更改,它都会忽略这些更改。它顽固地保留了过去在我们的公司环境中设置的一些旧 DNS 设置。即使在执行了几个 CMD 重置命令、Windows 疑难解答和网络重置程序之后,甚至在当前 Windows 之上重新安装 Windows(就地重新安装)之后,它仍然会保留这些设置。
问题并不像之前看起来的那样只影响 WiFi 网络。它同时影响 WiFi 和以太网网络。事实上,用户尝试在家中通过以太网电缆硬接线笔记本电脑,但仍然无法浏览网页(确实是个好问题,@Cpt.Whale 用户!)。它似乎在以太网上工作正常,因为每当我测试以太网有线网络时,我都是在我们的工作场所进行的,因此,这台电脑的灵魂中似乎刻在石头上的顽固的公司 DNS 服务器运行正常。
现在仍有一个谜团:为什么 Windows 会在更新后开始忽略网络设置(无论用户做什么,甚至执行完全网络重置),以至于用户必须手动干预注册表?我们还没有答案。