Если в Вашей сети становится много устройств, которым необходимо точное время, значит пора делать свой NTP сервер. И делать его мы будем на FreeBSD. Хотя на Linux-системах конфигурация будет идентична.
Устанавливаем из портов:
cd /usr/ports/net/ntp/
make install clean
rehash
Или из пакетов:
pkg update
pkg install ntp
Создаём/редактируем файл конфигурации демона:
vim /etc/ntp.conf
Содержимое этого файла должно быть примерно следующим:
# сервера с которыми будем сверяться:
# prefer - приоритетный сервер
server lt.pool.ntp.org iburst burst prefer
server by.pool.ntp.org iburst burst
# файл смещения и логов
driftfile /var/db/ntpd.drift
logfile /var/log/ntpd.log
# по-умолчанию запрещаем всем взаимодействовать
restrict default ignore
# разрешим следующим серверам времени
restrict lt.pool.ntp.org
restrict by.pool.ntp.org
# и localhost
restrict localhost
# разрешим пользоваться нашим NTP устройствам в локальной сети
restrict 10.0.0.0 mask 255.0.0.0 nomodify notrap
restrict 192.168.0.0 mask 255.255.0.0 nomodify notrap
Создадим файлы для логов и смещения:
touch /var/log/ntpd.log
touch /var/db/ntpd.drift
В /etc/rc.conf прописываем:
ntpd_enable="YES"
ntpd_program="/usr/local/bin/ntpd"
ntpd_sync_on_start="YES"
Запускаем службу:
/etc/rc.d/ntpd start
Проверим, работает ли наш NTP сервер времени:
ntpdate -q localhost
Должны увидеть, что то вроде
server 127.0.0.1, stratum 4, offset -0.000011, delay 0.02568
2 Nov 21:10:06 ntpdate[2130]: adjust time server 127.0.0.1 offset -0.000011 sec
если видите
server ip_адрес, stratum 0, offset 0.000000, delay 0.00000
1 Nov 23:19:03 ntpdate[40529]: no server suitable for synchronization found
значит не работает.
Узнать эти же параметры, но на другом сервере в интернете можно командой:
ntpdate -q lt.pool.ntp.org
Так же проверить синхронизацию можно выполнив:
ntpq -p
Должны увидеть нечто похожее на:
Символы перед remote серверами:
* — значит, что с него мы синхронизировались последний раз
+ — подходящий для обновления сервер
— — не подходящий для обновления сервер
x — сервер не доступен
delay — задержка в миллисекундах
when показывает, когда последний раз обновлялись мы с этого сервера.
Найти ближний к вам сервер, с которым Вам лучше синхронизироваться можно здесь.
Узнать нынешнее время на вашем сервере можно, выполнив:
date
Для настройки FreeBSD в качестве клиента синхронизации в /etc/rc.conf надо вписать:
ntpdate_enable="YES"
ntpdate_program="/usr/sbin/ntpdate"
ntpdate_flags="-u имя_сервера_ntp"
Кстати, не забудьте открыть на фаерволе порт udp 123, иначе ничего не получится 🙂