甲方IT的成长之路--Windows 中NTP服务器实验

发布时间:2026/10/31 10:47:28
甲方IT的成长之路--Windows 中NTP服务器实验

这几天重启nas服务器发现,时间总是对不齐,找了一个windows系统,作为时间源,在这里简单记录一下,前面原理已经明了,现在来实践,后面还会有linux作为时间源。

下面我有一个表格来表示整个实验

序号NTP服务器实践实验
1编辑注册表
regeditHKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ W32Time \ TimeProviders \ NtpServer \ Enabled
鼠标双击Enabled文件 ,将默认值 0 改为 1 ,启用NTP服务。
HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ W32Time \ Parameters \ Type
鼠标双击Type 文件;弹出对话框,在数据数值(V)项输入 NTP单击确定
HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services\W32Time \ Config \ AnnounceFlags
鼠标双击AnnounceFlags文件;弹出对话框,将默认的10改为5 确定。
2服务
services.msc在服务项中找到Windows Time,把它设置为自动后点击确定,点击右键Windows Time重新启动此服务。
3本地组策略计算机策略对话框打开,按照如下路径:计算机配置\管理模板\系统\windows时间服务\时间提供程序,找到服务器设置文件。
gpedit.msc双击启用 Windows NTP 服务器,显示状态已启用,这时主机的时间就可以被其他从机同步了
4

命令行重启服务

管理员身份打开

net stop w32time

net start w32time
5测试w32tm /stripchart /computer:127.0.0.1

在下面是部分实验截图,按顺序

出现上面的回复,说明服务可用了。

ntp协议在网络中处于基础地位,可以说所有服务、系统都依靠他,比如后期我们要聊的AD,除了DNS必然需要一个ntp服务器来对时。这里我重申一下ntp协议使用udp 123端口,使用命令ss -naulp可以查看他所监听的端口。

最后我们要了解一下外部时间源,不然不能以本机的时间作为对时标准。

使用公共NTP池


pool 2.pool.ntp.org iburst


或指定具体服务器

server ntp.aliyun.com iburst

chronyc sources或chronyc sources -v

这个命令会列出所有配置的时间源及其状态。你需要关注第一列带有*符号的行,它表示当前被选为最优、正在同步的时间源。

  • Stratum:时间源的层级,数值越小越接近原子钟。

因为这是ntp的第一课,所以要讲一下,ntp的前世今生,从老的服务器我们可以看到一条命令ntpdate

`ntpdate` 是一个传统的、用于从 NTP(网络时间协议)服务器**一次性**校准系统时间的 Linux 命令。它的核心特点是“即用即走”,执行一次,将本地时间强制设置为服务器时间,然后命令就结束了。

基本用法与核心特点

它的典型用法非常直接,指定一个 NTP 服务器即可:
bash


sudo ntpdate ntp.aliyun.com

这条命令会立即向 `ntp.aliyun.com` 请求时间,并调整你的系统时钟。

`ntpdate` 的工作方式决定了它的优缺点非常鲜明:

一次性操作:它只在执行的瞬间同步时间,不会在后台持续运行来保持时间准确。
造成时间“跳变:如果本地时间与服务器时间偏差较大(超过0.5秒),它会**直接“步进”**,也就是瞬间跳跃到正确时间。这在某些对时间连续性敏感的应用(如数据库)中可能引发问题。
无漂移校正:它无法补偿两次同步之间系统时钟自身产生的自然漂移,因此如果只运行一次,时间会逐渐再次变慢或变快。

现状:已被淘汰,不应在新系统中使用 现代替代方案:应该用什么?

如今,时间同步的任务已交由更专业的守护进程来持续完成,它们会平滑地调整时间,而不会造成突然的跳变。

chrony:这是目前 RHEL、Ubuntu 等主流发行版**默认**的时间服务。它由持续运行的 `chronyd` 守护进程和用于查询的 `chronyc` 工具组成。`chrony` 能快速收敛时间,并在网络不稳定或系统休眠后也能很好地工作。
* **`systemd-timesyncd`(轻量级替代)**:对于桌面系统或不需要复杂功能的场景,这是一个更轻量的选择,它作为 `systemd` 的一部分提供基础的 NTP 客户端功能。

这两个概念分别对应了 NTP 服务中“去哪里对时”和“如何快速完成第一次对时”的问题。

🌐 什么是公共 NTP 池 (NTP Pool)?

公共 NTP 池是一个由全球志愿者共同维护的、庞大的**时间服务器集群**。它本身并不直接运行 NTP 服务器,而是像一个**智能的“电话总机”**,通过 DNS 将你的对时请求,智能地分配给集群中一台当前可用且相对空闲的服务器。

它的核心工作原理和优势如下:

* **DNS 轮询与负载均衡**:当你配置使用 `pool.ntp.org` 这类域名时,DNS 服务器每次解析会返回不同的 IP 地址。这样,全球海量客户端的请求就会被均匀地分散到数千台志愿者服务器上,避免任何单台服务器过载。
* **地理感知**:这个“总机”是智能的。你可以使用区域前缀(如 `cn.pool.ntp.org` 对应中国区)来获取地理上更接近的服务器,从而获得更低的网络延迟。
* **高可用性**:由于背后是数千台服务器(目前超过 4700 台)组成的庞大资源池,即使其中部分服务器出现故障,整个池的服务也不会中断,可靠性极高。
* **标准化接入**:它提供了一套统一的域名接入方式,取代了过去手动维护一堆静态服务器地址列表的繁琐做法,使得大规模部署时间同步变得非常简单。

什么是 `iburst` 选项?

`iburst` 是 NTP 客户端(如 `chrony`)配置中的一个加速选项。它的作用是**显著缩短设备开机或服务重启后,完成第一次时间同步所需的时间**。

在默认情况下,NTP 客户端为了节省网络资源,会以较慢的频率(例如每 64 秒)向服务器发送一个查询包。如果网络稍有延迟,你可能需要等上几分钟才能完成首次对时。

而 `iburst` 选项改变了这一初始行为:

突发请求:当启用 `iburst` 后,客户端在启动时会**立即向服务器发送一串(通常是 4 到 8 个)连续的请求包**,而不是只发一个。
* **加速同步**:NTP 协议通常需要收集多个样本(大约 6 个)才能可靠地计算出时间偏差并完成同步。`iburst` 的“突发”行为能快速凑齐这些必需的样本,从而将首次同步时间从**几分钟缩短到几秒钟**。
触发时机:它主要在**服务器初始不可达**(如刚开机网络未就绪)或**同步源从离线状态切换为在线状态**时被触发,目的是尽快抓住可用的时间源完成首次校准。

总结

**公共 NTP 池**解决了“**可靠、高效地找到对时服务器**”的问题,是基础设施层面的方案;而 **`iburst`** 则解决了“**在找到服务器后,如何最快完成第一次对时**”的问题,是客户端配置层面的优化。在实际配置中,两者通常结合使用,例如在 `chrony` 配置文件中写入 `pool cn.pool.ntp.org iburst`,就能同时获得高可靠性和快速启动的优势。

然后画个重点

下一篇短文预告,linux系统中的ntp有关配置