Главная → Гайды → Raspberry Pi

NTP-сервер на Raspberry Pi для локальной сети

⏰ Точное время сейчас
--:--:--
UTC+5 • Тюмень
NTP-синхронизация • < 100 мс

Зачем поднимать свой NTP-сервер? Причины: защита от внешних сбоев, снижение latency в локальной сети (1-2 мс вместо 20-50 мс), использование GPS как источника (стратум 1, точность 1-10 мкс). Raspberry Pi 4/5 с chrony отлично справляется — обслуживает до 1000 клиентов без нагрузки.

Стоимость: Raspberry Pi 5 (8GB) — 8 000 ₽, модуль GPS NEO-6M — 500 ₽, microSD 32GB — 500 ₽, блок питания — 800 ₽. Итого: ~10 000 ₽. Сравните с коммерческим NTP-сервером stratum 1 (50 000+ ₽).

Что понадобится

Шаг 1. Установите Raspberry Pi OS

Скачайте Raspberry Pi Imager с официального сайта. Запишите образ «Raspberry Pi OS Lite» (без графического интерфейса, 1.2 GB) на microSD.

Шаг 2. Настройте SSH

После записи образа откройте /boot/ssh.txt (если его нет — создайте пустой файл) или используйте Imager → Advanced options для включения SSH.

Шаг 3. Подключитесь по SSH

ssh pi@raspberrypi.local

Пароль по умолчанию: raspberry.

Шаг 4. Обновите систему

sudo apt update && sudo apt upgrade -y

Шаг 5. Установите chrony

sudo apt install chrony gpsd gpsd-clients pps-tools

Шаг 6. Подключите GPS (если есть)

Подключите GPS-модуль к GPIO:

Включите UART: sudo raspi-config → Interface Options → Serial Port → Login shell NO, Hardware YES. Перезагрузитесь.

Шаг 7. Настройте gpsd

Отредактируйте /etc/default/gpsd:

START_DAEMON="true"
USBAUTO="true"
DEVICES="/dev/ttyAMA0"
GPSD_OPTIONS="-n -G"

Шаг 8. Настройте chrony с GPS

Отредактируйте /etc/chrony/chrony.conf:

pool ru.pool.ntp.org iburst maxsources 4
makestep 1.0 3
rtcsync
logdir /var/log/chrony
log measurements statistics tracking

# GPS как источник стратум 1
refclock SHM 0 offset 0.0 delay 0.2 refid GPS precision 1e-3
refclock PPS /dev/pps0 refid PPS precision 1e-9

allow 192.168.0.0/16
local stratum 1

Шаг 9. Запустите chrony

sudo systemctl enable --now gpsd chrony
sudo systemctl status chrony

Шаг 10. Проверьте точность

chronyc tracking
chronyc sources -v
chronyc sourcestats -v

В выводе tracking найдите Reference ID — должен быть GPS (или PPS). Stratum — 1. Offset — в микросекундах.

Шаг 11. Настройте клиентов

На Windows 11:

w32tm /config /manualpeerlist:"192.168.1.100" /syncfromflags:manual
net stop w32time && net start w32time
w32tm /resync

На macOS:

sudo sntp -sS 192.168.1.100

На Linux:

sudo apt install chrony
sudo systemctl stop systemd-timesyncd
sudo systemctl disable systemd-timesyncd
sudo nano /etc/chrony/chrony.conf
# Добавьте: server 192.168.1.100 iburst prefer
sudo systemctl restart chrony

Точность и стабильность

Stratum 1 с GPS: 1-10 микросекунд, отклонение меньше 1 ppm.
Stratum 2 с пулом: 1-10 миллисекунд, отклонение меньше 100 ppm.
Без NTP: 1-10 секунд в сутки, отклонение 10-100 ppm.

Для домашнего использования стратум 1 — overkill. Достаточно стратум 2 (Raspberry Pi + ru.pool.ntp.org + chrony).

FAQ

Какой Pi выбрать — 4 или 5?

Pi 4 — достаточно. Pi 5 быстрее, но для NTP-сервера это не критично. Берите Pi 4 (4GB) — экономия 2000 ₽.

Нужен ли GPS?

Для дома/офиса — нет. ru.pool.ntp.org даёт стратум 2, точность 1-10 мс. GPS нужен для финансовых учреждений и телеком-операторов.

Сколько клиентов выдержит Pi?

До 1000-5000 клиентов при минимальной нагрузке CPU. Chrony написан на C, очень эффективен.

Можно ли обойтись без Raspberry Pi?

Да, любой компьютер с Linux подойдёт. Старый ноутбук, неттоп, мини-ПК. Raspberry Pi — самый дешёвый вариант.

Что такое PPS и зачем он нужен?

PPS (Pulse Per Second) — сигнал от GPS, который даёт 1 импульс ровно в начале каждой секунды с точностью 100 нс. chrony использует PPS для точной привязки времени к UTC.

Связанные гайды