凌峰创科服务平台

windows ntp服务器搭建

第一部分:理解核心概念

在开始之前,有几个关键概念需要了解:

windows ntp服务器搭建-图1
(图片来源网络,侵删)
  1. Windows Time 服务: 这是 Windows 内置的时间同步服务,它既可以作为客户端(从外部服务器同步时间),也可以作为服务器(为网络中的其他设备提供时间)。
  2. NTP vs. SNTP: Windows Time 服务默认使用简化版 NTP (SNTP - Simple Network Time Protocol),对于绝大多数企业内部网络和日常使用,SNTP 的精度已经足够(毫秒级),如果您需要微秒级或更高的精度,则需要配置为完整的 NTP 模式,但这通常不是必需的。
  3. 层级: NTP 网络是一个层级结构,顶层是Stratum 0(如原子钟、GPS 授时设备),Stratum 1 直接连接 Stratum 0,以此类推。Windows Time 服务默认是 Stratum 3,这意味着它会同步到一个更高层级的源(通常是互联网上的公共 NTP 服务器),然后为您的客户端提供时间。您不应将一台 Windows 服务器直接配置为 Stratum 1,除非它连接了真实的 Stratum 0 时钟硬件。

第二部分:搭建 NTP 服务器(核心步骤)

以下步骤适用于 Windows ServerWindows 10/11 专业版/企业版,家庭版默认不提供此功能。

步骤 1:启用 Windows Time 服务

确保时间服务正在运行,并设置为自动启动。

  1. Win + R 键,输入 services.msc 并回车,打开服务管理器。
  2. 在服务列表中找到 Windows Time
  3. 双击打开,确保其 “启动类型”“自动”“服务状态”“正在运行”
  4. 点击“应用”和“确定”。

步骤 2:配置 NTP 服务器角色

这是最关键的一步,告诉这台计算机要作为时间源向外提供服务。

  1. 使用注册表编辑器(最常用)

    windows ntp服务器搭建-图2
    (图片来源网络,侵删)
    • Win + R 键,输入 regedit 并回车,打开注册表编辑器。
    • 导航到以下路径: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config
    • 在右侧窗口中,找到名为 LocalClockDispersion 的 DWORD (32 位) 值,如果不存在,请右键点击空白处 -> 新建 -> DWORD (32 位) 值,并将其命名为 LocalClockDispersion
    • 双击 LocalClockDispersion,将其值数据设置为 0x00000010 (十进制的 16),然后点击“确定”,这个值定义了本地时钟的初始精度。
    • 导航到另一个路径: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer
    • 在右侧窗口中,找到名为 Enabled 的 DWORD (32 位) 值。
    • 双击 Enabled,将其值数据从 0x0 修改为 0x1,然后点击“确定”。这个操作是启用 NTP 服务器功能的核心
    • (可选但推荐)在同一 NtpServer 键下,确保 RegistryType 的值为 0x2 (表示时间数据将从注册表读取)。
  2. 使用命令行(PowerShell)

    打开以管理员身份运行的 PowerShell,然后执行以下命令:

    # 启用 NTP 服务器
    w32tm /config /update /syncfromflags:domhier /manualpeerlist:"time.windows.com,0x9" /reliable:yes
    # 解释命令参数:
    # /config /update: 应用配置更改
    # /syncfromflags:domhier: 从域层级同步时间(如果加入域)或手动列表
    # /manualpeerlist:"time.windows.com,0x9": 设置手动对等服务器列表,0x9 表示特殊、可靠且使用 NTP 协议
    # /reliable:yes: 将此计算机标记为可靠的时间源,允许客户端从此同步

    这个命令不仅会启用服务器,还会配置好同步源,如果您只想单独启用服务器,可以先执行 w32tm /config /update /ntpserver

步骤 3:配置防火墙

默认情况下,Windows 防火墙会阻止 NTP 流量,您必须为入站规则创建一个例外。

windows ntp服务器搭建-图3
(图片来源网络,侵删)
  1. 打开 “高级安全 Windows Defender 防火墙” (可以在开始菜单搜索或通过 wf.msc 打开)。
  2. 在左侧,点击 “入站规则”
  3. 在右侧,点击 “新建规则...”
  4. 规则类型选择 “端口”,点击“下一步”。
  5. 协议和端口选择 “TCP”,并在“特定本地端口”中输入 123,点击“下一步”。
  6. 操作选择 “允许连接”,点击“下一步”。
  7. 配置文件,根据您的网络环境勾选 “域”“专用”“公用”(通常建议勾选“域”和“专用”),点击“下一步”。
  8. 为规则命名一个清晰的名字,“NTP Server Inbound”,然后点击“完成”。

您的防火墙已经允许外部设备访问您的 NTP 服务器了。

步骤 4:重启 Windows Time 服务

为了让所有配置更改生效,必须重启服务。

  1. 再次打开 services.msc
  2. 找到 Windows Time 服务。
  3. 右键点击它,选择 “重新启动”

第三部分:验证 NTP 服务器是否正常工作

在服务器本地验证

打开命令提示符或 PowerShell,执行以下命令:

w32tm /query /status

如果一切正常,您会看到类似下面的输出,表明它正在同步时间,并且角色是客户端(因为它自己也需要同步一个源)。

源: time.windows.com
层级: 3
精度: -6
状态: 正在同步
上次成功同步时间: 2025/10/27 10:30:15
偏差: 0ms

从客户端计算机验证

找一台其他的 Windows 电脑(客户端),配置它同步到您刚刚搭建的 NTP 服务器。

  1. 在客户端上,以管理员身份打开 PowerShell 或命令提示符。

  2. 执行以下命令,将 <Your-Server-IP> 替换为您的 NTP 服务器的 IP 地址或主机名:

    w32tm /config /syncfromflags:manual /manualpeerlist:"<Your-Server-IP>,0x9" /update
    w32tm /resync /force
  3. 等待几秒钟后,再次执行 w32tm /query /status 查看客户端是否成功从您的服务器同步了时间。


第四部分:常见配置场景

工作组环境(独立服务器)

如果您没有 Active Directory 域控制器,这是最常见的情况。

  1. 服务器端: 按照上述 第二部分 的步骤操作。

  2. 客户端配置: 在需要同步时间的所有客户端电脑上,执行以下命令(将 168.1.100 替换为您的 NTP 服务器 IP):

    # 设置手动同步源
    w32tm /config /syncfromflags:manual /manualpeerlist:"192.168.1.100,0x9" /update
    # 立即同步一次
    w32tm /resync /force
  3. 设置客户端定期同步(可选): 您可以通过组策略或注册表来配置客户端的同步间隔,默认情况下,客户端会定期与服务器通信以保持时间同步。

Active Directory 域环境

在域环境中,时间同步策略由域控制器自动管理,但您仍然可以自定义。

  1. PDC 模拟器 (PDC Emulator) 角色: 在林中,所有域控制器都会自动与 PDC 模拟器 同步时间,PDC 模拟器则默认与外部源(如 time.windows.com)同步。您只需要将 PDC 模拟器配置为可靠的 NTP 源即可
  2. 配置 PDC 模拟器:
    • 在 PDC 模拟器上,按照 第二部分 的步骤启用 NTP 服务器。
    • 确保域中的所有客户端都已加入域,它们会自动从域控制器获取时间策略,无需额外配置。
    • 您可以使用 w32tm /query /status 检查 PDC 模拟器是否正在从正确的源同步。

第五部分:排错

如果同步不成功,请检查以下几点:

  1. 防火墙: 确认服务器的防火墙(包括第三方防火墙)允许 UDP 端口 123 的入站流量,NTP 主要使用 UDP。
  2. 服务状态: 确认 Windows Time 服务在服务器和客户端上都在运行。
  3. 时间源: 确保服务器本身的时间是准确的,如果服务器时间都错了,客户端自然也无法同步。
  4. 网络连通性: 从客户端 ping 一下服务器的 IP 地址,确保网络是通的。
  5. 查看详细日志:
    • 在命令行中运行 w32tm /debug /enable /file:w32tm.log /size:10000000 /roll:7 来启用详细日志记录。
    • 日志文件通常位于 %SystemRoot%\Debug\w32tm.log
    • 使用完毕后,用 w32tm /debug /disable 关闭日志,以免占用过多磁盘空间。

通过以上步骤,您就可以成功地在 Windows 系统上搭建一个稳定可靠的 NTP 服务器了。

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