
我的伺服器託管在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 中)。