Mein Server wird bei IDC gehostet, da dieser IDC-Server keinen Internetzugang hat, kann ich einen Internet-NTP-Server verwenden. Der IDC-Dienstanbieter hat jedoch eine Atomuhr, sodass ich die Zeit mit der Atomuhr synchronisieren kann. Die
IP der Atomuhr ist 192.168.90.118
und die IP meines Servers ist 192.168.90.18
. Das Betriebssystem meines Servers ist Debian 8.11
und ich installiere NTP von sudo apt install ntp
, die Version von NTPD ist 4.2.6p5
. Der Inhalt
des Servers /etc/ntp.conf
ist wie folgt:
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
Und ich habe versucht, den folgenden Befehl auszuführen, um die Zeit mit der Atomuhr zu synchronisieren, es zeigt „kein Server gefunden“
sudo service ntp stop
sudo ntpd -gq
Ich habe versucht, die IP-Adresse der Atomuhr anzupingen. Sie ist erreichbar und hat eine geringe Latenz. Ich habe versucht, mit tcpdim einige Pakete zwischen der Atomuhr und meinem Server abzufangen. Das Ergebnis ist wie folgt:
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
Der obige Text wurde manuell eingegeben. Basierend auf dem obigen Ergebnis scheint es, dass kernel
die empfangenen NTP-Pakete und das Protokoll zwischen Server und Client übereinstimmen. Aber der NTPD meines Servers hat die Pakete nicht empfangen oder nicht erkannt. Wie kann ich das beheben?
Ich habe den Befehl ausgeführt ntpq -np
, er zeigt Folgendes:
ntpq: read: Connection refused
Antwort1
Nach Rückfrage bei meinem Dienstanbieter basiert der NTP-Server auf Windows, dessen Protokoll SNTP ist. In der Standard-NTP-Software von Debian 8.11 können keine SNTP-Pakete akzeptiert werden. Daher muss ich die NTP-Version aktualisieren.
Antwort2
Sie haben es in Ihrer Frage nicht angegeben (aber in Kommentaren), aber Sie sagen, dass Ihr System nicht auf das Internet zugreifen kann und nur auf Dienste in Ihrem Rechenzentrum zugreifen kann, die kein NTP, sondern nur SNTP umfassen.
Wenn kein echter NTP-Server verfügbar ist und Sie die Alternative der GPS-Synchronisierung nicht erhalten können, besteht Ihre einzige Möglichkeit darin, NTPD auf Ihrem System zu deaktivieren und einen SNTP-Client zu verwenden, möglicherweise in Cron.