
Ich habe einen Raspberry Pi, den ich für ein Bewässerungssystem verwende. Das Problem ist, dass er keine Hardware-Uhr hat, sodass bei jedem Neustart die Systemzeit falsch ist und ich ihn nicht so einstellen kann, dass er automatisch synchronisiert wird.
Ich habe festgestellt, dass DNS-Anfragen nicht funktionieren, wenn die Systemzeit falsch ist. Daher erhalte ich jedes Mal, wenn ich versuche, eine Anfrage zu senden, nur Folgendes:
[root@alarmpi me]# ntpdate 3.es.pool.ntp.org
Error resolving 3.es.pool.ntp.org: Name or service not known (-2)
12 Aug 15:37:15 ntpdate[2385]: Can't find host 3.es.pool.ntp.org: Name or service not known (-2)
12 Aug 15:37:15 ntpdate[2385]: no servers can be used, exiting
Übrigens erhalte ich die gleichen Verbindungsfehler, wenn ich versuche, Pacman, Wget, Python/Requests oder sogar Ping zu verwenden. Es liegt also definitiv am DNS.
[me@alarmpi ~]$ ping google.com
ping: google.com: Name or service not known
Wenn ich Uhrzeit und Datum manuell einstelle, funktioniert es wieder, aber ich wohne 300 km von dem Ort entfernt, an dem das Ding steht, und ich kann es nicht jeden Tag manuell einstellen, wenn es einen Stromausfall gibt.
[root@alarmpi me]# timedatectl
Local time: Mon 2019-08-12 15:47:40 CEST
Universal time: Mon 2019-08-12 13:47:40 UTC
RTC time: n/a
Time zone: Europe/Madrid (CEST, +0200)
System clock synchronized: no
NTP service: active
RTC in local TZ: no
[root@alarmpi me]# timedatectl set-ntp false
[root@alarmpi me]# timedatectl set-time "2019-08.13 10:45:45 CEST"
[root@alarmpi me]# ping google.com
PING google.com (172.217.168.174) 56(84) bytes of data.
64 bytes from 172.217.168.174 (172.217.168.174): icmp_seq=1 ttl=54 time=22.7 ms
64 bytes from 172.217.168.174 (172.217.168.174): icmp_seq=2 ttl=54 time=31.6 ms
^C
--- google.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 292ms
rtt min/avg/max/mdev = 22.739/27.161/31.583/4.422 ms
[root@alarmpi me]# ntpdate 3.es.pool.ntp.org
13 Aug 10:49:54 ntpdate[2498]: adjust time server 37.139.121.60 offset 0.004894 sec
Ich bin hier also ein wenig ratlos. Wie kann ich die Uhr automatisch synchronisieren, wenn ich keine Verbindung zum Dienst herstellen kann, weil die Synchronisierung nicht funktioniert?
Antwort1
Einige NTP-Server hören direkt auf IP-Adressen und geben sich als solche aus. Zum Beispiel:NISTstellt IPs für jeden ihrer NTP-Server bereit, sodass Sie eine auswählen und beim Initialisieren ausführen können ntpdate <IP>
. Dies erfordert keine DNS-Auflösung und sollte sofort funktionieren.
Alternativ können Sie auch versuchen, das Paket zu verwenden fake-hwclock
, das die ungefähre Zeit zwischen den Neustarts beibehält. Es ist nicht perfekt und gibt nicht die genaue Zeit an, aber es könnte ausreichen, um die Domänennamen für NTP aufzulösen.