文章目录

  • 背景
  • windows如何配置ntp服务器
    • 手动配置
      • 配置参数`AnnounceFlags`和`Enabled`含义
    • 使用软件配置(NetTime)
      • 实操
      • 相关疑问:0.nettime.pool.ntp.org是什么?
    • 注意事项
      • 请务必检查windows主机123端口是否已被占用,方法请参考:windows查看端口占用,通过端口找进程号(查找进程号),通过进程号定位应用名(查找应用)(netstat、tasklist)
  • ubuntu20.04如何同步ntp服务器时间?
    • 使用timedatectl systemd-timesyncd服务
    • 设置windows ntp服务器的出站和入站流量(备选)
  • 参考文章

背景

客户有个局域网,局域网里面有的设备,时间都不一致,导致交互的时候可能出现问题;

现在刚好有台主机,有两个以太网接口,其中一个可以连外网,能获取到网络时间,我们可以把这台主机做成ntp服务器,供局域网内其他主机做时间同步;

以下是相关操作方法步骤;

windows如何配置ntp服务器

手动配置

  1. 打开注册表编辑器。您可以按Win+R键,然后输入regedit并回车。

  2. 导航到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer

  3. 在右侧面板中,双击“Enabled”,然后在数据值字段中输入“1”。

  4. 导航到 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config

  5. 在右侧面板中,双击“AnnounceFlags”,然后在数据值字段中输入“5”。

  6. 关闭注册表编辑器。

  7. 打开命令提示符(以管理员身份),然后输入以下命令来重启Windows时间服务:

net stop w32time && net start w32time

Windows主机已经被设置为NTP服务器,其他设备(如Linux主机和NVR设备)应该能够从此主机获取时间信息了。对于Linux主机和NVR设备,你需要将它们的NTP客户端指向Windows主机的IP地址。

配置参数AnnounceFlagsEnabled含义

在Windows的注册表设置中,AnnounceFlagsEnabled这两个键值对NTP服务器的配置有特殊的含义。

  1. AnnounceFlags 这个键控制了W32Time服务(Windows Time)是否(以及如何)向网络公布自己作为一个可用的时间源。它的值是一个位掩码,表示不同的标志。当AnnounceFlags的值设为5时,表示以下两个条件:

    • 值4(二进制100)告诉W32Time服务,只有当本机是一个可靠的时间服务时(例如,它已经被配置为手动同步到一个硬件时钟或外部NTP服务器),才公布自己为时间服务器。

    • 值1(二进制001)让W32Time服务始终公布自己为时间服务器,无论它是否已经接收到合法的时间更新。

  2. Enabled 这个键决定了是否启用NTPServer。如果把这个值设为1,那么NTPServer就会被启用,即W32Time服务将作为NTP服务器,为其他设备提供时间。

请注意,在修改注册表之前,一定要创建一个还原点或者备份注册表。错误的修改可能会导致系统不稳定。

使用软件配置(NetTime)

在Windows上,有一些第三方应用程序允许你很容易地设置NTP服务器。

例如, “NetTime”。NetTime是一个简单的、易于使用的时间同步客户端,也可以作为服务器运行。以下是如何设置它的步骤:

  1. 下载并安装NetTime:http://www.timesynctool.com/

  2. 运行NetTime,然后右键点击系统托盘中的NetTime图标,选择“Settings”。

  3. 在“Settings”窗口中,勾选”Always provide time”选项,使得NetTime作为服务器提供时间服务。

  4. 点击“OK”保存设置。

这样,你就把你的Windows主机设为了NTP服务器。然后你就可以在其他设备(如Linux主机和NVR设备)上将其NTP客户端指向Windows主机的IP地址,实现局域网内的时间同步。


实操

下载它:

下载完成后点开默认安装即可:

点击Settings,勾选Allow other computers to sync to this computer:

弹出个警告,提示我们在把此主机用于ntp服务器时,需保证此主机时间的准确性,我们点No即可:

相关疑问:0.nettime.pool.ntp.org是什么?

0.nettime.pool.ntp.org是一个公共的网络时间协议(NTP)服务器地址,它是NTP Pool Project的一部分。

NTP Pool Project是一个大型的、由志愿者和赞助商维护的NTP服务器池。它为全球的互联网用户提供精确的时间服务。”pool.ntp.org”项目使用DNS轮询来分配各种时间服务器的流量,这意味着当你查询”pool.ntp.org”时,DNS服务器会返回该池中任意一个服务器的IP地址。

0.nettime.pool.ntp.org这个地址中,0表示该服务器在NTP Pool中的逻辑编号,而nettime则可能是服务器组的名称,但我没有找到关于nettime的特定信息。通常,你会看到像0.pool.ntp.org1.pool.ntp.org这样的地址,其中的数字(如0, 1)代表了不同的服务器或服务器组。

然而,如果你的网络不能访问互联网,那么你将无法使用这个地址,因为它需要通过互联网来访问NTP Pool的服务器。在这种情况下,你需要设置一个内部的NTP服务器,如我之前所述。

注意事项

请务必检查windows主机123端口是否已被占用,方法请参考:windows查看端口占用,通过端口找进程号(查找进程号),通过进程号定位应用名(查找应用)(netstat、tasklist)

ubuntu20.04如何同步ntp服务器时间?

使用timedatectl systemd-timesyncd服务

Ubuntu 20.04默认使用的是systemd-timesyncd服务来同步时间,你不需要另外安装NTP。以下是如何使用timedatectl来同步NTP服务器的时间:

  1. 首先打开终端。

  2. 使用以下命令检查systemd-timesyncd服务的状态:

timedatectl status

  1. 如果NTP service: active行显示为yes,则表示systemd-timesyncd服务正在运行。如果没有,你可以用以下命令启动它:
sudo timedatectl set-ntp on
  1. 现在你的系统应该会自动从默认的NTP服务器同步时间。你也可以修改/etc/systemd/timesyncd.conf文件来更改NTP服务器。例如,使用nano编辑器:
sudo nano /etc/systemd/timesyncd.conf

  1. 在此文件中,找到以#NTP=开头的行,删除#并添加你的NTP服务器,多个服务器之间用空格分隔。例如:
NTP=server1 server2

  1. 保存并关闭文件。然后重启systemd-timesyncd服务来应用更改:
sudo systemctl restart systemd-timesyncd


7. 查看时间是否同步成功
timedatectl命令查看,如果同步成功,我的盒子RTC Time那儿时间会显示正确,而不是1970xxxx:

timedatectl


systemctl status systemd-timesyncd.service --no-pager命令查看systemd-timesyncd服务的状态以及重要日志:

systemctl status systemd-timesyncd.service --no-pager

如果同步成功,会显示下面这行文字:

Initial synchronization to time server 192.168.19.232:123 (192.168.19.232).

以上就是在Ubuntu 20.04上使用timedatectl来同步NTP服务器时间的步骤。

设置windows ntp服务器的出站和入站流量(备选)

注意:此方法为备选方案,在ntp无法同步时,可测试开启,看看开启后是否能够同步。

在Windows中,你可以通过以下步骤检查和配置防火墙以允许UDP 123端口的入站和出站流量:

  1. 打开“控制面板”。

  2. 点击“系统和安全”。

  3. 点击“Windows Defender 防火墙”。

  4. 在左侧菜单中,点击“高级设置”。

  5. 在新窗口中,你会看到”入站规则”和”出站规则”两个选项。首先,我们来创建一个允许UDP 123端口入站的规则。

  6. 点击”入站规则”,然后在右侧点击”新建规则”。

  7. 在弹出的向导中,选择”端口”,然后点击”下一步”。

  8. 选择”UDP”,然后在”特定本地端口”中输入”123″,点击”下一步”。

  9. 选择”允许连接”,然后点击”下一步”。

  10. 确保所有的网络类型都被勾选,然后点击”下一步”。

  11. 给规则命名(例如,“NTP UDP 123 Inbound”),然后点击”完成”。

接下来,我们创建一个允许UDP 123端口出站的规则。

  1. 在左侧菜单中,点击”出站规则”,然后在右侧点击”新建规则”。

  2. 重复步骤7-11,只是在第9步时选择”允许连接”。

现在,Windows防火墙应该已经配置为允许UDP 123端口的入站和出站流量了。

参考文章

参考文章:时间同步服务器