我的服务器托管在IDC,由于这个IDC服务器无法访问互联网,所以我可以使用互联网NTP服务器。但是IDC服务提供商有原子钟,所以我可以与原子钟同步时间。
原子钟的IP是192.168.90.118
,我的服务器的IP是192.168.90.18
。我的服务器的操作系统是Debian 8.11
,我安装了ntp sudo apt install ntp
,ntpd的版本是4.2.6p5
。
服务器/etc/ntp.conf
内容如下:
driftfile /var/lib/ntp/ntp.drift
statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable
server 192.168.90.118 version 3
restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
restrict 127.0.0.1
restrict ::1
我尝试执行下面的命令来与原子钟同步时间,它显示“找不到服务器”
sudo service ntp stop
sudo ntpd -gq
我尝试 ping 原子钟的 IP 地址,它是可达的且延迟较低。我尝试使用 tcpdim 捕获原子钟和我的服务器之间的一些数据包,如下所示:
sudo tcpdump -vvv -ni eth0 port 123
16:43:44.802334 IP (tos 0x0, ttl 126, id 12371, offset 0, flags [none], proto UDP (17), lenth 76)
192.168.90.118.123 > 192.168.90.18.123: [udp sum ok]NTPv3, lenth 48
Server, Leap indicator: (0), Stratum 6 (secondary reference), poll 6 (64s), pricision -6
Root Delay: 0.000000, Root disprsion: 10.371246, Reference-ID: 95.31.153.26
Reference Timestamp: 3843677595.431751999 (2021/10/20 08:13:15)
Originator Timestamp: 3843708224.802159560 (2021/10/20 16:43:44)
Receive Timestamp: 3843708322.196751999 (2021/10/20 16:45:22)
Transmit Timestamp: 3843708322.196751999 (2021/10/20 16:45:22)
Originator - Receive Timestamp: +97.394592739
Originator - Transmit Timestamp: +97.394592739
16:43:46.802173 IP (tos 0x0, ttl 64, id 19514, offset 0, flags [DF], proto UDP (17), lenth 76)
192.168.90.18.123 > 192.168.90.118.123: [bad udp cksum -> 0x4b29!]NTPv3, lenth 48
Client, Leap indicator: clocl unsynchornized(192), Stratum 0 (unspecified), poll 6 (64s), pricision -23
Root Delay: 0.000000, Root disprsion: 0.000091, Reference-ID: (unspec)
Reference Timestamp: 0.000000000
Originator Timestamp: 3843708322.196751999 (2021/10/20 16:45:22)
Receive Timestamp: 3843708224.1802334560 (2021/10/20 16:43:44)
Transmit Timestamp: 3843708226.802159634 (2021/10/20 16:43:46)
Originator - Receive Timestamp: -97.394417439
Originator - Transmit Timestamp: -95.394592365
以上文字均为手动输入。从上面的结果来看,似乎kernel
收到了ntp数据包,并且服务器和客户端之间的协议是匹配的。但我的服务器的 ntpd 没有收到或没有识别数据包。我该如何修复它?
我执行了命令ntpq -np
,如下所示:
ntpq: read: Connection refused
答案1
询问我的服务提供商后,NTP服务器是基于Windows的,协议是SNTP。在Debian 8.11的默认NTP软件中,它不能接受SNTP数据包。所以我需要升级ntp版本。
答案2
您没有在问题中说明(而是在评论中说明),但您说您的系统无法访问互联网,只能访问数据中心的服务,其中不包括 ntp,仅包括 sntp。
如果真正的 ntp 服务器不可用,并且您无法获得 GPS 同步的替代方案,那么您唯一的选择是在系统上禁用 ntpd 并使用 sntp 客户端(可能在 cron 中)。