Сервер времени ntpd

Получаем актуальные часовые пояса

# portsnap fetch update
# cd /usr/ports/misc/zoneinfo && make install clean
# cp /usr/share/zoneinfo/Europe/Moscow /etc/localtime

Устанавливаем свежий ntp-сервер

# cd /usr/ports/net/ntp

Добавляем строки /etc/rc.conf для запуска ntpd

ntpdate_enable="YES"
ntpd_program="/usr/local/sbin/ntpd"

Редактируем /etc/ntp.conf

server ntp0.zenon.net iburst prefer
server 0.ru.pool.ntp.org iburst
server 1.ru.pool.ntp.org iburst
server 2.ru.pool.ntp.org iburst
server 0.freebsd.pool.ntp.org iburst
driftfile /var/db/ntp.drift
logfile /var/log/ntp.log
restrict 127.0.0.1
restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap # Разрешаем синхронизацию с IP-адресов 192.168.0.1 — 254 и 127.0.0.1

Создадим файл ntp.drift и ntp.log

# touch /var/db/ntp.drift
# touch /var/log/ntp.log

Запускаем ntpd

# /etc/rc.d/ntpd start

Для проверки состояния синхронизации набираем

# ntpq -p

Видим следующее

remote refid st t when poll reach delay offset jitter
==============================================================================
*ntp1.zenon.net 195.2.64.5 2 u 885 1024 377 2.352 -16.189 5.220
+time100.stupi.s .PPS. 1 u 152 1024 377 18.787 -9.351 1.826
+46.254.216.9 (n 194.190.168.1 2 u 662 1024 377 2.904 -11.143 2.403
+time.ooonet.ru 194.190.168.1 2 u 32 1024 377 25.366 -8.291 2.447
-palmers.nobody. 131.130.251.107 2 u 515 1024 377 61.977 -7.919 14.232
-213.248.24.170 130.173.91.58 2 u 191 1024 377 5.891 -15.000 2.601

remote — имена удаленных ntp серверов
refid — сервер, с которым производит синхронизацию удаленный сервер ntp
st — стратум (уровень) удаленного сервера. 1 — самый высокий, эти сервера для вычисления точного времени используют специальное дорогостоящее оборудование; 16 — рядовая машина/клиент.
t — тип пира (u = unicast, m = multicast)
when — указывает на то, как давно была произведена синхронизация с сервером
poll — частота в секундах, с которой NTP демон синхронизируется с пиром
reach — состояние доступности сервера, это значение стабилизируется на уровне 377 если последних 8 попыток синхронизации с удаленным сервером были успешны
delay — задержка (в миллисекундах) ответа от сервера
offset — разница в миллисекундах между системным временем и временем удаленного сервера; значение с минусом — отставание, с плюсом — наши часики спешат
jitter — смещение времени на удаленном сервере

Теперь немного о значках, следа от имени пира:
«*» — пир, с которым последний раз у нас была выполнена синхронизация
«+» — «хороший» (пригодный для обновления) сервер
«-» — «плохой» (непригодный для обновления) сервер
«х» — сервер не отвечает

Проверить, пригоден ли наш сервер для синхронизации, а также некоторые его данные можно командой

# ntpdate -q localhost

и видим примерно следующее

server 127.0.0.1, stratum 3, offset 0.000001, delay 0.02565
server ::1, stratum 3, offset 0.000013, delay 0.02570
9 Jul 19:34:38 ntpdate[85246]: adjust time server 127.0.0.1 offset 0.000001 sec

Этот ответ означает, что наш сервер пригоден для синхронизации, его stratum равен 3, смещение — 0.000001 а задержка при ответе равна 0.02565

В ntp.conf можно добавить опцию burst

server 0.europe.pool.ntp.org iburst burst

Опция burst, указывает ntpd посылать 8 пакетов вместо одного для попытки синхронизации, что повышает шансы на успешную синхронизацию.