文章目录
- 背景
- windows如何配置ntp服务器
- 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服务就好了,不知为啥。。。
- 参考文章
背景
客户有个局域网,局域网里面有的设备,时间都不一致,导致交互的时候可能出现问题;
现在刚好有台主机,有两个以太网接口,其中一个可以连外网,能获取到网络时间,我们可以把这台主机做成ntp服务器,供局域网内其他主机做时间同步;
以下是相关操作方法步骤;
windows如何配置ntp服务器
手动配置
-
打开注册表编辑器。您可以按win+r键,然后输入
regedit
并回车。 -
导航到
hkey_local_machine\system\currentcontrolset\services\w32time\timeproviders\ntpserver
-
在右侧面板中,双击“enabled”,然后在数据值字段中输入“1”。
-
导航到
hkey_local_machine\system\currentcontrolset\services\w32time\config
-
在右侧面板中,双击“announceflags”,然后在数据值字段中输入“5”。
-
关闭注册表编辑器。
-
打开命令提示符(以管理员身份),然后输入以下命令来重启windows时间服务:
net stop w32time && net start w32time
windows主机已经被设置为ntp服务器,其他设备(如linux主机和nvr设备)应该能够从此主机获取时间信息了。对于linux主机和nvr设备,你需要将它们的ntp客户端指向windows主机的ip地址。
- (20240123)将windows time服务设置为开机自启
今天重启神角矿工控机,发现ntp服务没有启动(启动类型显示“手动”),然后我把它改成“自动”以支持开机自启。
配置参数announceflags
和enabled
含义
在windows的注册表设置中,announceflags
和enabled
这两个键值对ntp服务器的配置有特殊的含义。
-
announceflags
: 这个键控制了w32time服务(windows time)是否(以及如何)向网络公布自己作为一个可用的时间源。它的值是一个位掩码,表示不同的标志。当announceflags
的值设为5时,表示以下两个条件:-
值4(二进制100)告诉w32time服务,只有当本机是一个可靠的时间服务时(例如,它已经被配置为手动同步到一个硬件时钟或外部ntp服务器),才公布自己为时间服务器。
-
值1(二进制001)让w32time服务始终公布自己为时间服务器,无论它是否已经接收到合法的时间更新。
-
-
enabled
: 这个键决定了是否启用ntpserver。如果把这个值设为1,那么ntpserver就会被启用,即w32time服务将作为ntp服务器,为其他设备提供时间。
请注意,在修改注册表之前,一定要创建一个还原点或者备份注册表。错误的修改可能会导致系统不稳定。
使用软件配置(nettime)
在windows上,有一些第三方应用程序允许你很容易地设置ntp服务器。
例如, “nettime”。nettime是一个简单的、易于使用的时间同步客户端,也可以作为服务器运行。以下是如何设置它的步骤:
-
下载并安装nettime:http://www.timesynctool.com/
-
运行nettime,然后右键点击系统托盘中的nettime图标,选择“settings”。
-
在“settings”窗口中,勾选"always provide time"选项,使得nettime作为服务器提供时间服务。
-
点击“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.org
,1.pool.ntp.org
这样的地址,其中的数字(如0, 1)代表了不同的服务器或服务器组。
然而,如果你的网络不能访问互联网,那么你将无法使用这个地址,因为它需要通过互联网来访问ntp pool的服务器。在这种情况下,你需要设置一个内部的ntp服务器,如我之前所述。
我在神角矿win10工控机上用这个服务作为ntp同步服务器,但是盒子一直无法同步成功不知道怎么回事,一直显示超时(可能是工控机的防火墙阻止了,见本文后面解释)
注意事项
ubuntu20.04如何同步ntp服务器时间?
使用timedatectl systemd-timesyncd服务
ubuntu 20.04默认使用的是systemd-timesyncd
服务来同步时间,你不需要另外安装ntp。以下是如何使用timedatectl
来同步ntp服务器的时间:
-
首先打开终端。
-
使用以下命令检查
systemd-timesyncd
服务的状态:
timedatectl status
- 如果
ntp service: active
行显示为yes
,则表示systemd-timesyncd
服务正在运行。如果没有,你可以用以下命令启动它:
sudo timedatectl set-ntp on
- 现在你的系统应该会自动从默认的ntp服务器同步时间。你也可以修改
/etc/systemd/timesyncd.conf
文件来更改ntp服务器。例如,使用nano编辑器:
sudo nano /etc/systemd/timesyncd.conf
- 在此文件中,找到以
#ntp=
开头的行,删除#
并添加你的ntp服务器,多个服务器之间用空格分隔。例如:
ntp=server1 server2
- 保存并关闭文件。然后重启
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端口的入站和出站流量:
-
打开“控制面板”。
-
点击“系统和安全”。
-
点击“windows defender 防火墙”。
-
在左侧菜单中,点击“高级设置”。
-
在新窗口中,你会看到"入站规则"和"出站规则"两个选项。首先,我们来创建一个允许udp 123端口入站的规则。
-
点击"入站规则",然后在右侧点击"新建规则"。
-
在弹出的向导中,选择"端口",然后点击"下一步"。
- 选择"udp",然后在"特定本地端口"中输入"123",点击"下一步"。
- 选择"允许连接",然后点击"下一步"。
-
确保所有的网络类型都被勾选,然后点击"下一步"。
-
给规则命名(例如,“ntp udp 123 inbound”),然后点击"完成"。
现在我已经可以让外部主机获取到ntp服务的时间了,后面出站规则貌似不用设置了
(下面无需设置)
接下来,我们创建一个允许udp 123端口出站的规则。
-
在左侧菜单中,点击"出站规则",然后在右侧点击"新建规则"。
-
重复步骤7-11,只是在第9步时选择"允许连接"。
现在,windows防火墙应该已经配置为允许udp 123端口的入站和出站流量了。
20240123 今天调试神角矿,工控机上的ntp服务一直不能被外部请求通(本机可以),发现是被防火墙给阻止了(我后面按照上面上面配置了123端口 udp的入站流量,就可以了)
如图:原先是将公用网络的防火墙打开了,我把它关闭,ntp服务就能使用了。
发表评论