admin 管理员组

文章数量: 887021

文章目录

  • 背景
  • windows如何配置ntp服务器
    • 手动配置
      • 配置参数`AnnounceFlags`和`Enabled`含义
    • 使用软件配置(NetTime)
      • 实操
      • 相关疑问:0time.pool.ntp是什么?
      • 我在神角矿win10工控机上用这个服务作为ntp同步服务器,但是盒子一直无法同步成功不知道怎么回事,一直显示超时(可能是工控机的防火墙阻止了,见本文后面解释)
    • 注意事项
      • 请务必检查windows主机123端口是否已被占用,方法请参考:windows查看端口占用,通过端口找进程号(查找进程号),通过进程号定位应用名(查找应用)(netstat、tasklist)
  • ubuntu20.04如何同步ntp服务器时间?
    • 使用timedatectl systemd-timesyncd服务
    • (重要)设置windows ntp服务器123端口 UDP的入站(必选)和出站流量(非必选)
    • 20240123 今天调试神角矿,工控机上的ntp服务一直不能被外部请求通(本机可以),发现是被防火墙给阻止了(我后面按照上面上面配置了123端口 UDP的入站流量,就可以了)
    • 20240123 ubuntu systemd-timesyncd 时间同步(ntp同步)报错:Server has too large root distance. Disconnecting. 解决办法
    • 20240701 p工说pc上部署的ntp服务盒子没法访问,后面重启下pc的ntp服务就好了,不知为啥。。。
  • 参考文章
    • 20240801
      • windows控制台检测ntp服务命令
      • linux nmap命令检查ntp 123 udp端口是否打开
      • 注意:如果pc机部署了ntp服务,但是防火墙打开,在关闭防火墙后,需要重启ntp服务,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地址。

  1. (20240123)将Windows Time服务设置为开机自启
    今天重启神角矿工控机,发现ntp服务没有启动(启动类型显示“手动”),然后我把它改成“自动”以支持开机自启。

配置参数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服务器,为其他设备提供时间。

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

注意:AnnounceFlags默认值为a,如果我不修改它,貌似也能正常工作。

使用软件配置(NetTime)

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

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

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

  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即可:

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

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

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

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

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

我在神角矿win10工控机上用这个服务作为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服务器123端口 UDP的入站(必选)和出站流量(非必选)

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

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

  1. 打开“控制面板”。

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

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

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

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

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

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

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

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

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

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

现在我已经可以让外部主机获取到ntp服务的时间了,后面出站规则貌似不用设置了


(下面无需设置)

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

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

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

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

20240123 今天调试神角矿,工控机上的ntp服务一直不能被外部请求通(本机可以),发现是被防火墙给阻止了(我后面按照上面上面配置了123端口 UDP的入站流量,就可以了)

如图:原先是将公用网络的防火墙打开了,我把它关闭,ntp服务就能使用了。

20240123 ubuntu systemd-timesyncd 时间同步(ntp同步)报错:Server has too large root distance. Disconnecting. 解决办法

https://dontla.blog.csdn/article/details/135777981

20240701 p工说pc上部署的ntp服务盒子没法访问,后面重启下pc的ntp服务就好了,不知为啥。。。

参考文章

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

20240801

windows控制台检测ntp服务命令

w32tm /stripchart /computer:192.168.50.229 /samples:5 /dataonly

如果ntp服务正常,将返回如下信息,否则将提示错误:

linux nmap命令检查ntp 123 udp端口是否打开

nmap -sU 192.168.50.229 -p 123

不过没有什么大用,只是检测服务是否被打开,如果有防火墙阻挡,还是无法同步时间。

注意:如果pc机部署了ntp服务,但是防火墙打开,在关闭防火墙后,需要重启ntp服务,ntp服务才能被正常使用!

本文标签: 服务器 局域网 端口 防火墙 客户端