Linux、Ubuntu配置ntpd.conf后时间无法同步的问题

在使用树莓派时,使用到了NTP相关的功能,由于树莓派没有RTC,每次开机后时间都会变为2016年,此时需要NTP进行校时。
本来是不想写这篇文章的,因为各大新版本的linux发行版,都已经使用timedatectl取代了ntpd、ntpdate等工具,现在还在跟他较劲其实是不合适的。但环境不能变,或许还有同伴跟我遇到一样的问题,那就把我遇到的问题整理一下。

现象

在联网环境下,树莓派可以获得正确时间,但在内网环境中使用内网NTP服务器时,却无法获得正确时间。
使用ntpq -p命令查看时,配置好的ntp已经展现出来了,但是前面并没有 * 星号,表示没有使用该服务器。

remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
120.25.115.20   10.137.53.7      2 u   43   64  377   49.203   -0.294   0.224

大概就像这个样子。

测试NTP Server是否正常命令

如果测试不过的话,那先把对方的Ntp server搞定才往下鼓捣吧^_^
Windows下:

w32tm /stripchart /computer:<NTP服务器的IP地址>

Linux下:

ntpdate -d <NTP服务器的IP地址>

Linux配置调试命令

参考链接1:关于ntpq更具体的说明,可以参见 ntp详解
参考链接2:其他可用文档可以参见How to debug ntp issues
使用ntpq命令进入到交互模式,然后输入as命令,既可以查看服务器的状态

ntpq> as
ind assid status  conf reach auth condition  last_event cnt
===========================================================
  1 57887  963a   yes   yes  none  sys.peer    sys_peer  3

其中condition一列为当前状态。我之前出现了reject的字样,表示ntp拒绝使用该地址。
assid可以利用它具体查看当前id的状态。
使用rv <assid>命令即可获取更详细的信息。

ntpq> rv 57887
associd=57887 status=963a conf, reach, sel_sys.peer, 3 events, sys_peer,
srcadr=120.25.115.20, srcport=123, dstadr=192.168.0.223, dstport=123,
leap=00, stratum=2, precision=-25, rootdelay=0.107, rootdisp=1.007,
refid=10.137.53.7,
reftime=e43ceba8.670ac35b  Wed, May  5 2021 18:02:16.402,
rec=e43cebaf.35f3e35f  Wed, May  5 2021 18:02:23.210, reach=377,
unreach=0, hmode=3, pmode=4, hpoll=6, ppoll=6, headway=17, flash=00 ok,
keyid=0, offset=-0.363, delay=49.355, dispersion=4.420, jitter=0.310,
xleave=0.096,
filtdelay=    49.57   49.37   49.40   49.94   49.36   49.78   49.35   49.50,
filtoffset=    0.04   -0.08   -0.08    0.12   -0.19   -0.06   -0.36   -0.42,
filtdisp=      0.00    0.99    1.97    2.93    3.90    4.88    5.87    6.86

其中flash=00为状态码,可以根据参考链接2文章中的内容进行排错。

原因总结

1、NTP拥有一个panic参数,默认为1000,含义为当服务器时间与本地时间超过1000s秒是,ntp会拒绝修改。这是引起内网中无法进行校正的一个原因。在ntp.conf文件中,添加tinker panic 0即可
2、NTP还拥有一个tos maxdist参数,Linux的NTP不会信任偏差超过1.5s的的时钟源,Windows的W32Time作为NTP时钟服务是不被认可的,会出现被拒绝的情况。
解决方案参考链接:链接

总结

目前发现了这两个参数会影响ntp同步,坑太多了,还好已经被新的timedatectl取代了,可喜可贺

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值