Windows 11 启动一小时后丢失 IPv4 地址

Windows 11 启动一小时后丢失 IPv4 地址

问题描述

我观察到的问题是,Windows 11 启动一小时后,我将失去与所有非本地 IPv4 主机的连接。这通常表现为与我的 Rocket League 游戏断开连接并咒骂我的电脑。这个问题似乎没有及时解决(我想我在谷歌上搜索解决方案时等待了大约 1 小时或更短的时间)。

初始故障排除

我进行了一些故障排除并确定了以下几点:

  1. 问题发生后,如果我运行ipconfig /all,我的以太网接口将不会列出任何 IPv4 地址。但它确实有一个 IPv6 地址。注意:我没有使用任何无线接口。
  2. 如果我运行ipconfig /renew,那么问题就解决了。
  3. 我的路由器(Arris Surfboard)配置为提供授予后 1 小时到期的 DHCP 租约。

我最初的假设是,Windows DHCP 客户端无法自动续订租约,尽管它可以在手动干预后执行此操作(ipconfig /renew)。

我认为我的 PC 双启动 Linux 和 Windows 也与此有关。我认为从 Linux 切换到 Windows 后最常遇到此问题。由于 Linux 需要 UTC 硬件时钟,而 Windows 需要本地时间,因此 Windows 在启动时总是会出现错误的时间。即使配置了 NTP,我也总是需要在启动后手动同步系统时间。我相信此同步也会重置硬件时钟。我想知道这是否与我的问题有关,因为 DHCP 客户端必须依靠计时器来知道何时请求续订租约。

实验

我还进行了一项实验,将路由器 DHCP 配置更改为 30 秒内租约到期。然后我执行以下操作:

  1. 重新启动进入 Linux。
  2. 重新启动进入Windows。注意系统时间不正确。
  3. 观察ipconfig /all输出几分钟,并发现它按预期运行;IPv4 地址得到维护并且租约到期时间每 15 秒更新一次。
  4. 将系统时间与 NTP 同步。
  5. 重复步骤 3。这一次,IPv4 地址最终会消失,并且在没有人工干预的情况下永远不会再次出现。
  6. 运行ipconfig /renew并观察问题是否已得到解决,似乎已经彻底解决。

我还没有进行任何类型的 UDP 数据包捕获来检查 DHCP 流量,但我很快就会这样做。

更新

我在使用 Wireshark 进行数据包捕获时执行了与上述相同的实验。从 DHCP 流量中可以看到,当我在捕获大约 30 秒后手动将系统时间与 NTP 同步(通过 Windows 设置)时,客户端变得沉默:

DHCP 捕获

只有在我运行之后,ipconfig /renew客户端才会重新启动DHCP Discover数据包。

更新 2

这是我正在使用的 NTP 同步按钮:

立即同步

更新 3

在运行 Wireshark 进行实验后,我非常确定此问题是由 Windows DHCP 客户端中的错误引起的。我怀疑当 NTP 同步发生并且 RTC 被及时设置时,客户端会感到困惑并认为其已过期的租约还有更多时间。这可以解释为什么客户端在 NTP 同步后突然变得沉默。

我已经在 Windows“反馈中心”应用程序中创建了一个错误报告。

至于解决方法,一些用户提到从双启动切换到虚拟化。我可能会尝试这样做,但还有更简单的解决方法。

我还可以配置 Linux 将 RTC 解释为本地时间,或者我可以配置 Windows 注册表将 RTC 解释为 UTC。

我认为最简单的解决方法是将我的 DHCP 租约的有效期(在路由器配置中)提高到 24 小时,这样即使在 8 小时不同步之后,客户端仍会在租约到期之前尝试续订。

相关内容