Windows 从 Windows 2000 开始就内置了 NTP 客户端功能,可以用来同步系统时间,从 Windows Vista 和 Windows Server 2008 开始,NTP 客户端功能得到了显著增强,并成为默认和推荐的时间同步方式。

核心概念:Windows 中的 NTP 角色
在 Windows 环境中,一个系统可以扮演两种角色:
-
NTP 客户端:
- 作用:从指定的 NTP 服务器获取时间,并同步本地系统时钟。
- 几乎所有 Windows 版本(包括 Windows 10, 11, Server 2025, 2025, 2025 等)都默认是 NTP 客户端,并自动配置为从
time.windows.com同步时间。
-
NTP 服务器:
- 作用:向网络中的其他客户端设备提供时间同步服务。
- 不是所有 Windows 版本都支持,通常只有 Windows Server 版本(如 Windows Server 2012 及更高版本)才能配置为 NTP 服务器,Windows 10/11 家庭版和专业版不能配置为 NTP 服务器。
配置 Windows 作为 NTP 客户端(同步时间)
这是最常见的需求,确保你的计算机时间准确。

使用图形界面(最简单)
- 打开设置:点击“开始”菜单,选择“设置”(齿轮图标)。
- 进入时间和语言:在设置窗口中,选择“时间和语言”。
- 调整日期和时间:
- 确保“自动设置时间”开关是 开启 状态。
- 确保“自动设置时区”开关是 开启 状态。
- 更改设置(可选):点击“其他日期、时间和区域设置”。
- 打开日期和时间:在弹出的窗口中,点击“日期和时间”。
- 更改设置:点击“更改日期和时间...”,然后点击“Internet 时间”选项卡。
- 更改设置:点击“更改设置...”按钮。
- 配置服务器:
- 勾选“与 Internet 时间服务器同步”。
- 在服务器地址框中,输入你想要使用的 NTP 服务器地址。
- 公共 NTP 服务器推荐:
time.windows.com(微软官方)time.nist.gov(美国国家标准与技术研究院)pool.ntp.org(这是一个全球 NTP 服务器池,会自动分配最近的节点)
- 点击“立即更新”可以手动执行一次同步。
- 点击“确定”保存设置。
使用命令行(推荐,功能更强大)
Windows 的 w32tm 命令是管理时间同步的核心工具。
查看当前时间同步状态
w32tm /query /status
输出会显示当前时间源、同步状态、偏移量等信息。
手动同步一次时间

w32tm /resync
配置 NTP 服务器(永久设置)
这是最关键的步骤,它会将你的客户端配置为从指定的服务器持续同步时间。
# 将 NTP 服务器设置为 pool.ntp.org w32tm /config /syncfromflags:manual /manualpeerlist:"pool.ntp.org" /update
参数解释:
/config: 表示要修改配置。/syncfromflags:manual: 指定同步来源标志为“手动”,即使用后面/manualpeerlist中指定的服务器列表。/manualpeerlist:"pool.ntp.org": 指定 NTP 服务器列表,如果多个服务器,用空格或逗号隔开,"time.windows.com,time.nist.gov"。/update: 非常重要! 修改配置后必须使用此参数让服务重新加载配置,否则设置不会生效。
查看配置
w32tm /query /configuration
启动或重新启动 Windows Time 服务
时间同步是由名为 "Windows Time" 的后台服务执行的,如果服务未运行,同步将不会发生。
# 检查服务状态 sc query w32time # 启动服务 net start w32time # 或重新启动服务 net stop w32time && net start w32time
配置 Windows Server 作为 NTP 服务器
如果你有一台 Windows Server,并希望让它成为局域网内其他设备(如其他服务器、工作站、网络设备)的时间源,可以按以下步骤操作。
前提条件:
- 必须是 Windows Server 版本。
- 需要让服务器先从一个可靠的公共 NTP 服务器同步好时间,否则它会给整个网络提供错误的时间。
配置步骤:
-
以管理员身份打开 PowerShell 或命令提示符。
-
配置 NTP 客户端(服务器自身先同步时间)
这一步和上面客户端配置一样,确保服务器自身时间准确。
# 设置服务器从 pool.ntp.org 同步 w32tm /config /syncfromflags:manual /manualpeerlist:"pool.ntp.gov" /update net stop w32time && net start w32time
-
启用 NTP 服务器角色
在 PowerShell 中执行以下命令:
w32tm /config /reliable:yes /update
关键参数:
/reliable:yes: 这个参数告诉局域网内的其他客户端,这台服务器是一个可靠的时间源,默认情况下,只有域控制器(DC)会被标记为可靠源,手动设置此参数后,其他客户端(如果配置正确)就会选择它作为同步源。
-
验证 NTP 服务器是否正在运行
你可以查看 Windows Time 服务的配置,确认
NtpServer项是否已自动填入。w32tm /query /configuration
你会看到类似
NtpServer: (Local)的设置,这表示它已经准备好向其他客户端提供服务。 -
配置防火墙
Windows 服务器上的防火墙默认会阻止 NTP 请求,你需要为“域”或“专用”网络配置防火墙规则,允许 NTP 流量(UDP 端口 123)。
-
通过 PowerShell 启用防火墙规则(推荐):
# 启用域配置文件的防火墙规则 Enable-NetFirewallRule -DisplayGroup "Windows Time (Domain Profile)" # 启用专用配置文件的防火墙规则 Enable-NetFirewallRule -DisplayGroup "Windows Time (Private Profile)"
-
通过图形界面:
- 打开“高级安全 Windows Defender 防火墙”。
- 在左侧选择“高级安全 Windows Defender 防火墙属性”。
- 分别在“域配置文件”和“专用配置文件”选项卡中,确保“入站连接”规则设置为“允许”。
- 在“入站规则”中,找到“Windows Time (Domain/Private)”规则,确保其已启用。
-
常见问题排查
-
w32tm /resync失败,提示“RPC 服务器不可用”- 原因:
Windows Time服务未运行。 - 解决:执行
net start w32time启动服务。
- 原因:
-
时间同步不准确,或者无法同步
- 原因:
- 防火墙阻止了 UDP 123 端口。
- NTP 服务器地址错误或不可达。
- 系统时间与服务器时间偏差过大(超过 15 分钟),导致 NTP 同步被拒绝,可以先手动调整到大致正确的时间,再尝试同步。
- 解决:检查防火墙设置,使用
ping或tracert测试 NTP 服务器连通性。
- 原因:
-
如何让客户端优先使用内网的 NTP 服务器?
- 方法:在内网所有客户端(包括工作站和服务器)上,使用
w32tm /config命令将 NTP 服务器指向你的内网服务器地址,w32tm /config /syncfromflags:manual /manualpeerlist:"ntp.yourdomain.com,0x8" /update
0x8是一个特殊标志,表示这是一个可靠的时间源(PDC 模拟器或手动标记为可靠的服务器)。
- 方法:在内网所有客户端(包括工作站和服务器)上,使用
| 任务 | 推荐工具 | 关键命令 |
|---|---|---|
| 检查当前同步状态 | 命令行 | w32tm /query /status |
| 手动同步一次 | 命令行 | w32tm /resync |
| 永久配置 NTP 客户端 | 命令行 | w32tm /config /syncfromflags:manual /manualpeerlist:"pool.ntp.org" /update |
| 配置 Windows Server 为 NTP 服务器 | 命令行 | w32tm /config /reliable:yes /update |
| 启用防火墙规则 | PowerShell | Enable-NetFirewallRule -DisplayGroup "Windows Time (Private Profile)" |
对于绝大多数用户,只需确保“设置”中的“自动设置时间”是开启的即可,对于需要精细控制的管理员,w32tm 命令是必不可少的工具。
