
У меня есть Raspberry Pi, который я использую для системы орошения. Проблема в том, что у него нет аппаратных часов, поэтому при каждой перезагрузке системное время становится неправильным, и я не могу настроить его на автоматическую синхронизацию.
Я обнаружил, что когда системное время неправильное, DNS-запросы не работают, поэтому каждый раз, когда я пытаюсь отправить запрос, я получаю следующее:
[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
Кстати, я получаю те же ошибки соединения, если пытаюсь использовать pacman, wget, python/requests, даже ping... Так что это определенно проблема DNS.
[me@alarmpi ~]$ ping google.com
ping: google.com: Name or service not known
Если я устанавливаю время и дату вручную, все снова работает, но я живу в 300 км от того места, где находится эта штука, и я не могу делать это вручную каждый день, когда отключают электричество.
[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
Так что я немного запутался. Как мне синхронизировать часы автоматически, если они не позволяют мне подключиться к сервису из-за того, что я не синхронизирован?
решение1
Некоторые NTP-серверы прослушивают напрямую IP-адреса и рекламируют себя как таковые. Например,НИСТпредоставляет IP для каждого из своих NTP-серверов, так что вы можете выбрать один и сделать это ntpdate <IP>
при инициализации. Это не потребует разрешения DNS и должно работать сразу.
В качестве альтернативы вы также можете попробовать использовать пакет fake-hwclock
, который сохраняет приблизительное время между перезагрузками. Он не идеален и не предоставляет точное время, но его может быть достаточно для разрешения доменных имен для NTP.