Вопрос или проблема
Я запускаю предустановленный образ SD-карты для Raspberry Pi от nextcloudpi, но думаю, что здесь я смогу получить лучшую помощь.
Я заметил, что время и дата не обновляются автоматически, поэтому начал отладку. Я обнаружил, что все строки в файле /etc/systemd/timesyncd.conf
были закомментированы, а строка NTP была пустой. Нет дополнительного подкаталога timesyncd.conf.d
. Поэтому я убрал комментарии и заполнил строку NTP. Вот как теперь выглядит файл timesyncd.conf:
[Time]
NTP=0.europe.pool.ntp.org
FallbackNTP=0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org
RootDistanceMaxSec=5
PollIntervalMinSec=32
PollIntervalMaxSec=2048
ConnectionRetrySec=30
SaveIntervalSec=60
Кажется, что содержимое успешно обрабатывается, потому что:
pi@nextcloudpi:~$ timedatectl show-timesync --all
LinkNTPServers=
SystemNTPServers=0.europe.pool.ntp.org
RuntimeNTPServers=
FallbackNTPServers=0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org
ServerName=
ServerAddress=
RootDistanceMaxUSec=5s
PollIntervalMinUSec=32s
PollIntervalMaxUSec=34min 8s
PollIntervalUSec=0
Frequency=0
Однако:
pi@nextcloudpi:~$ timedatectl
Local time: Sat 2024-12-28 12:05:31 EET
Universal time: Sat 2024-12-28 10:05:31 UTC
RTC time: n/a
Time zone: Europe/Helsinki (EET, +0200)
System clock synchronized: no
NTP service: active
RTC in local TZ: no
pi@nextcloudpi:~$ timedatectl timesync-status
Server: n/a (n/a)
Poll interval: 0 (min: 32s; max 34min 8s)
Packet count: 0
Системные часы всегда показывают no
и сервер всегда n/a
.
Я попробовал
sudo timedatectl set-ntp false
sudo timedatectl set-ntp true
но это ничего не изменило.
Служба systemd-timesyncd запущена:
● systemd-timesyncd.service - Network Time Synchronization
Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; preset: enabled)
Drop-In: /etc/systemd/system/systemd-timesyncd.service.d
└─override.conf
Active: active (running) since Fri 2024-12-27 22:38:50 EET; 13h ago
Docs: man:systemd-timesyncd.service(8)
Main PID: 3014 (systemd-timesyn)
Status: "Daemon is running"
Tasks: 1 (limit: 761)
Memory: 576.0K
CPU: 920ms
CGroup: /system.slice/systemd-timesyncd.service
└─3014 /lib/systemd/systemd-timesyncd
Я попытался включить отладочное ведение журнала этой службы, но полезных данных не печатается. Никогда не появляется ничего вроде Connecting to time server
. Оно даже не пытается.
Я также попытался вручную обновить с помощью ntpdate
sudo ntpdate -vd pool.ntp.org
и это сработало нормально. Я предполагаю, что это исключает возможные проблемы с DNS и другими сетями.
У меня закончились идеи. Что я здесь упускаю?
Вот информация о версии:
pi@nextcloudpi:~$ sudo lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Armbian-unofficial 24.8.2 bookworm
Release: 12
Codename: bookworm
pi@nextcloudpi:~$ cat /etc/armbian-release
# PLEASE DO NOT EDIT THIS FILE
BOARD=rpi4b
BOARD_NAME="Raspberry Pi 4"
BOARDFAMILY=bcm2711
BUILD_REPOSITORY_URL=https://github.com/armbian/build
BUILD_REPOSITORY_COMMIT=549f321
LINUXFAMILY=bcm2711
ARCH=arm64
BOOT_SOC=
IMAGE_TYPE=user-built
BOARD_TYPE=conf
INITRD_ARCH=arm64
KERNEL_IMAGE_TYPE=Image
FORCE_BOOTSCRIPT_UPDATE=
FORCE_UBOOT_UPDATE=
VENDOR="Armbian-unofficial"
VENDORDOCS="https://docs.armbian.com/"
VENDORURL="https://duckduckgo.com/"
VENDORSUPPORT="https://community.armbian.com/"
VENDORBUGS="https://armbian.atlassian.net/"
VERSION=24.8.2
REVISION=24.8.2
Редактировать:
pi@nextcloudpi:~$ ntpq -np
-bash: ntpq: command not found
pi@nextcloudpi:~$ systemctl status ntp
Unit ntp.service could not be found.
Редактировать 2:
Поэтому, это оказывается сетевой проблемой. До сих пор я был подключен только через WiFi. Но как только я подключил также и Ethernet-кабель, System clock synchronized
изменилось на yes
.
Но почему это не работает через WiFi? Вот статус resolvectl, когда подключен только WiFi:
Global
Protocols: +LLMNR +mDNS -DNSOverTLS DNSSEC=no/unsupported
resolv.conf mode: stub
Current DNS Server: 1.0.0.1
DNS Servers 1.0.0.1
Link 2 (enxb827ebf2575c)
Current Scopes: none
Protocols: -DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Link 3 (wlan0)
Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6
Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 192.168.1.1
DNS Servers: 192.168.1.1
Когда Ethernet-кабель подключен, все то же самое, за исключением части Link 2:
Link 2 (enxb827ebf2575c)
Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6
Protocols: +DefaultRoute +LLMNR -mDNS -DNSOverTLS DNSSEC=no/unsupported
Current DNS Server: 192.168.1.1
DNS Servers: 192.168.1.1
И WiFi и Ethernet находятся в одной и той же сети.
Теперь проблема решена. Моя ошибка заключалась в том, как я изначально настроил соединение WiFi. Сначала я попытался использовать raspi-config
для этого. Однако, он вылетел при применении изменений. См. эту проблему: https://github.com/nextcloud/nextcloudpi/issues/1970
Я не знаком с этим “новым” подходом Netplan, поэтому установил “старый” NetworkManager и настроил соединение WiFi с его помощью. Все работало хорошо, кроме systemd-timesyncd. Видимо, он не нравится NetworkManager.
Решением было отключение (и удаление) NetworkManager. Соединение WiFi можно настроить с помощью команды armbian-config
, которая создает правильный файл /etc/netplan/armbian.yaml
.
.
Ответ или решение
Если у вас возникли проблемы с настройкой NTP (systemd-timesyncd) через WiFi на Raspberry Pi с образом SD-карты от NextcloudPi, и вы не можете добиться синхронизации времени, важно понять возможные причины и способы их устранения. Ваша ситуация уже решена, но для полноты картины давайте рассмотрим процесс диагностики и устранения неисправностей, а также правильную настройку сетевых подключений.
Возможные причины:
-
Неверная конфигурация WiFi: Как вы уже выяснили, ошибки при использовании
raspi-config
для настройки WiFi-модуля могли привести к некорректным маршрутизациям или проблемам с DNS. -
Конфликты с NetworkManager: NetworkManager, как правило, не всегда корректно взаимодействует с systemd-timesyncd, особенно при ручных настройках сети.
-
Отсутствие необходимых привилегий для доступа к сети или DNS: Неправильно настроенные привилегии могут блокировать доступ к NTP-серверу через WiFi, несмотря на успех через Ethernet.
Решение:
1. Настройка WiFi:
Используйте armbian-config:
- Установите соединение через
armbian-config
, что обеспечит правильное создание файла/etc/netplan/armbian.yaml
. Это исключит конфликты, которые могли возникнуть при использовании других инструментов сетевой конфигурации.
2. Удаление NetworkManager:
- Если вы установили NetworkManager, чтобы управлять сетями, рекомендуется его удалить, чтобы система использовала только штатные средства управления сетями через Netplan и networkd.
3. Корректная настройка systemd-timesyncd:
- Убедитесь, что строка
NTP
в/etc/systemd/timesyncd.conf
корректно настроена и укажите работоспособные NTP-серверы. - Проверьте запущенность сервиса системного времени через
systemctl status systemd-timesyncd
и его работоспособность с помощьюtimedatectl
.
4. Тестирование и диагностика:
- DNS и сеть через WiFi: Используйте команды такие как
resolvectl status
для проверки DNS при подключении через WiFi. Все DNS-серверы должны быть корректно настроены. - Проверка связности сети: Используйте
ping
иnslookup
для тестирования соединения с NTP-серверами.
Заключение:
Ваш случай подчеркивает важность корректной настройки сети и применения правильных инструментов. Использование armbian-config
позволяет избежать множества типичных ошибок конфигурации сетей на Raspberry Pi, которые могут привести к сложности, особенно при переключении между WiFi и Ethernet. Убедитесь, что сетевые настройки согласованы и что все службы работают без конфликтов. Эти шаги не только решат текущую проблему, но и помогут избежать аналогичных трудностей в будущем.
Это руководство поможет другим пользователям эффективно устранять подобные проблемы и смело пользоваться всеми преимуществами их устройств.