Задача: настроить Debian Linux систему для получения показателей точного времени с определённых NTP серверов.
Debian Lenny.
Применим комбинированную схему с первоначальным запуском утилиты ntpdate (перед запуском службы ntpd) для получения значения точного времени на случай сбоя в работе служб и постоянной работой службы ntpd для плавной синхронизации с эталонными серверами.
Устанавливаем необходимые пакеты:
# aptitude install ntp ntpdate
Создаем, если он ещё не создан, конфигурационный файл службы ntpd (предварительно поискать, вдруг в текущей реализации сервера файл перенесён в другое место):
# cd /etc
# touch ntp.conf
# touch ntp.conf
Создаем, если они ещё не созданы, файл логов и файл для хранения смещения системного времени (предварительно поискать, вдруг в текущей реализации сервера файлы перенесены в другое место):
# cd /var/log
# touch ntp.log
# chown ntp:ntp /var/log/ntp.log
# cd /var/lib/ntp
# touch ntp.drift
# chown -R ntp:ntp /var/lib/ntp
# touch ntp.log
# chown ntp:ntp /var/log/ntp.log
# cd /var/lib/ntp
# touch ntp.drift
# chown -R ntp:ntp /var/lib/ntp
Приводим конфигурационный файл ntp.conf службы ntpd к следующему виду (рекомендуется в конфигурационном файле использовать не доменные имена, а IP; есть масса невнятных стонов о некорректной работе ntpd при разрешении доменных имён):
# IP эталонных NTP серверов
server 10.10.2.21 iburst burst prefer # имя другого нашего NTP сервера, значение которого будет приоритетно при прочих равных условиях
server 10.10.2.22 iburst burst
# ACL
restrict default ignore # запрещаем отвечать кому бы то ни было
restrict 10.10.2.21 nomodify noquery notrap ntpport nopeer # разрешаем минимально необходимое взаимодействие с серверами точного времени
restrict 10.10.2.22 nomodify noquery notrap ntpport nopeer # разрешаем минимально необходимое взаимодействие с серверами точного времени
restrict 127.0.0.1 # разрешаем принимать и отправлять запросы любого вида с localhost
# Настройки приложения
driftfile /var/lib/ntp/ntp.drift # уточнить месторасположение для текущей версии приложения
logfile /var/log/ntp.log
server 10.10.2.21 iburst burst prefer # имя другого нашего NTP сервера, значение которого будет приоритетно при прочих равных условиях
server 10.10.2.22 iburst burst
# ACL
restrict default ignore # запрещаем отвечать кому бы то ни было
restrict 10.10.2.21 nomodify noquery notrap ntpport nopeer # разрешаем минимально необходимое взаимодействие с серверами точного времени
restrict 10.10.2.22 nomodify noquery notrap ntpport nopeer # разрешаем минимально необходимое взаимодействие с серверами точного времени
restrict 127.0.0.1 # разрешаем принимать и отправлять запросы любого вида с localhost
# Настройки приложения
driftfile /var/lib/ntp/ntp.drift # уточнить месторасположение для текущей версии приложения
logfile /var/log/ntp.log
Если текущее системное время нашего NTP сервера не сильно отличается от фактического, то можно сразу запускать службу ntpd, иначе желательно обновить показания локальных часов с помощью утилиты ntpdate:
# ntpdate 10.10.2.21 10.10.2.22
Запуск службы ntpd элементарен:
# /etc/init.d/ntp start
Будет полезным втиснуть в работу службы скрипт ежесуточной приостановки службы ntpd и запуска ntpdate для компенсации возможных погрешностей в работе службы, вызванной теми или иными причинами.
Для этого следует разместить в таблице заданий cron по адресу "/etc/crontab" указание на запуск скрипта (каждые сутки, в первую минуту семи часов утра):
1 7 * * * root /etc/custom/ntpscript.sh
Исполняемый скрипт должен иметь следующее содержимое:
#!/bin/sh
/etc/init.d/ntp stop
sleep 5
/usr/sbin/ntpdate 10.10.2.21 10.10.2.22
sleep 5
/etc/init.d/ntp start
/etc/init.d/ntp stop
sleep 5
/usr/sbin/ntpdate 10.10.2.21 10.10.2.22
sleep 5
/etc/init.d/ntp start