凌峰创科服务平台

Windows NTP服务器如何正确配置?

摘要

在 Windows 系统中,您可以将一台计算机配置为 NTP (Network Time Protocol) 服务器,让局域网内的其他设备能够从中同步时间,这可以确保整个网络中所有设备的时间保持一致,对于日志分析、安全认证、分布式系统等场景至关重要。

Windows NTP服务器如何正确配置?-图1
(图片来源网络,侵删)

Windows 提供了两种主要方式来配置 NTP 服务:

  1. 使用 Windows Time 服务(内置):这是最常用、最简单的方法,无需安装第三方软件。
  2. 使用第三方 NTP 服务器软件:如 Meinberg、Chrony 等,功能更强大,适用于更专业或高精度的需求。

本指南将重点介绍第一种方法,因为它对于绝大多数 Windows 用户来说已经足够。


第一部分:配置 Windows 作为 NTP 服务器(对内提供时间)

此方法将使您的 Windows 服务器成为局域网内其他客户端的权威时间源。

步骤 1:以管理员身份打开命令提示符

这是执行所有后续操作的前提,在开始菜单中搜索 cmd,然后右键点击“命令提示符”,选择“以管理员身份运行”。

Windows NTP服务器如何正确配置?-图2
(图片来源网络,侵删)

步骤 2:配置 Windows Time 服务

Windows Time 服务默认是运行的,但需要配置它来提供时间同步。

  1. 设置时间源(最关键的一步) 您的服务器本身必须有一个准确的时间源,它可以是:

    • 外部公共 NTP 服务器(推荐,时间最准确):如 time.windows.comtime.nist.govpool.ntp.org 等。
    • 域控制器:如果您在 Active Directory 域环境中,域控制器本身就是权威时间源,通常无需再配置外部源。
    • 硬件时钟:服务器自身的硬件时钟(但不如外部 NTP 服务器准确)。

    使用以下命令将服务器同步到一个公共 NTP 服务器(以 time.windows.com 为例):

    w32tm /config /syncfromflags:manual /manualpeerlist:"time.windows.com,0x9"
    • /syncfromflags:manual:指定手动设置时间源。
    • /manualpeerlist:"...":指定一个或多个 NPEER 服务器。0x9 是一个特殊标志,表示该服务器是同步伙伴,而不是客户端,这很重要,因为它允许服务器从该伙伴获取时间,并继续为其他客户端提供服务。
    • 如果需要添加多个服务器,用空格隔开,"time.windows.com,0x9 time.nist.gov,0x9"
  2. 配置为 NTP 服务器模式 使用以下命令将服务器配置为向客户端提供时间服务。

    Windows NTP服务器如何正确配置?-图3
    (图片来源网络,侵删)
    w32tm /config /reliable:yes
    • /reliable:yes:将该计算机标记为可靠的时间源,其他客户端会更愿意从此服务器同步时间。此步骤至关重要
  3. 配置防火墙规则 默认情况下,Windows 防火墙可能会阻止 NTP 流量(UDP 端口 123),您需要为“域配置文件”和“专用配置文件”启用入站规则。

    • 使用命令行(推荐)
      netsh advfirewall firewall add rule name="NTP" dir=in action=allow protocol=UDP localport=123 profile=domain
      netsh advfirewall firewall add rule name="NTP" dir=in action=allow protocol=UDP localport=123 profile=private
    • 通过图形界面
      1. 打开“控制面板” > “系统和安全” > “Windows Defender 防火墙”。
      2. 点击左侧的“允许应用或功能通过 Windows Defender 防火墙”。
      3. 点击“更改设置”(需要管理员权限)。
      4. 找到并勾选“Windows 时间服务”(确保“域”和“专用”列都已勾选)。
      5. 如果找不到该服务,可以点击“允许其他应用...”,然后手动添加 svchost.exe,并确保它允许“TCP”和“UDP”端口 123
  4. 重启 Windows Time 服务 配置更改后,必须重启服务才能生效。

    net stop w32time
    net start w32time

    或者使用 PowerShell:

    Restart-Service w32tm

步骤 3:验证 NTP 服务器是否正常工作

您的服务器已经配置为 NTP 服务器,让我们验证一下。

  1. 在服务器上检查时间源 在服务器本身的命令提示符中运行:

    w32tm /query /status

    您应该会看到类似以下的输出,表明它正在从您配置的源同步(time.windows.com):

    source time.windows.com,0x9
  2. 在客户端上测试同步 在同一局域网内的另一台 Windows 电脑(客户端)上,将其时间源指向您刚刚配置的服务器(假设服务器 IP 为 168.1.100)。

    w32tm /config /syncfromflags:manual /manualpeerlist:"192.168.1.100,0x8"
    net stop w32time
    net start w32time
    w32tm /resync /force
    • /manualpeerlist:"192.168.1.100,0x8"0x8 标志表示这是一个客户端,只从此服务器同步时间,不提供时间。
    • /resync /force:强制立即同步一次。

    同步后,在客户端上运行 w32tm /query /status,您应该看到源是您服务器的 IP 地址。

  3. 使用 NTP 查询工具(更直观) 您可以使用 ntp.org 提供的在线查询工具来验证您的服务器是否对外响应。 在浏览器中访问:https://www.ntp.org/support/use-ntp/ 在 "NTP Server Query" 输入框中,输入您服务器的域名或 IP 地址,然后点击 "Query"。 如果一切正常,您会看到您的服务器信息、时间偏移、延迟等数据。


第二部分:配置 Windows 客户端同步时间

如果您只是想让一台 Windows 电脑从外部或内部服务器同步时间,操作非常简单。

使用图形界面(适用于普通用户)

  1. 右键点击任务栏右下角的时间,选择“调整日期/时间”。
  2. 在打开的设置页面中,确保“自动设置时间”和“自动设置时区”是开启状态。
  3. 点击“其他日期、时间和区域设置”。
  4. 在弹出的窗口中,点击“更改日期和时间” > “更改设置” > “Internet 时间”选项卡。
  5. 点击“更改设置...”。
  6. 在“服务器”框中输入您要同步的 NTP 服务器地址(如 time.windows.com 或您内部服务器的 IP)。
  7. 点击“立即更新”,确定”两次。

使用命令行(适用于管理员和自动化)

  1. 配置时间源

    w32tm /config /syncfromflags:manual /manualpeerlist:"time.windows.com"

    如果要从内部服务器同步,请替换为内部服务器的 IP。

  2. 重启服务

    w32tm /resync /force

    这个命令会先更新配置,然后立即强制同步一次。


第三部分:常见问题与故障排除

  1. 问题:客户端无法同步,提示 0x80072726 (RPC 服务器不可用) 或类似错误。

    • 原因:通常是防火墙阻止了 NTP 流量(UDP 123端口)。
    • 解决:请按照本文 步骤 2.3 中的方法,检查并配置 Windows 防火墙规则。
  2. 问题:w32tm /query /status 显示 sourceLocal CMOS Clock

    • 原因:Windows Time 服务没有成功从配置的 NPEER 服务器同步时间。
    • 解决
      • 检查 NPEER 服务器地址是否正确,网络是否通畅(ping 一下)。
      • 检查防火墙是否阻止了服务器访问外部 NTP 源。
      • 重新执行配置命令:w32tm /config /syncfromflags:manual /manualpeerlist:"your_server,0x9",然后重启服务。
  3. 问题:时间同步非常慢或不准确。

    • 原因
      • 网络延迟过高。
      • 时间源本身不稳定。
      • w32tm 服务配置不当(/reliable:no)。
    • 解决
      • 选择一个地理位置更近的公共 NTP 服务器。
      • 在客户端上,可以添加多个时间源,w32tm /config /manualpeerlist:"server1 server2 server3"
      • 确保您的 NTP 服务器已标记为可靠 (w32tm /config /reliable:yes)。
  4. 问题:w32tm 命令提示“访问被拒绝”。

    • 原因:没有使用管理员权限运行命令提示符或 PowerShell。
    • 解决:右键点击命令提示符,选择“以管理员身份运行”。

任务 命令
配置服务器时间源 w32tm /config /syncfromflags:manual /manualpeerlist:"time.windows.com,0x9"
将服务器设为可靠源 w32tm /config /reliable:yes
重启时间服务 net stop w32time && net start w32time
配置客户端同步源 w32tm /config /syncfromflags:manual /manualpeerlist:"192.168.1.100,0x8"
强制客户端同步 w32tm /resync /force
检查当前同步状态 w32tm /query /status

通过以上步骤,您就可以成功地将 Windows 服务器配置为 NTP 服务器,并管理整个网络的时间同步了。

分享:
扫描分享到社交APP
上一篇
下一篇