Глава 19. NTP
19.1. Введение
Проблема
Точный отсчёт времени на отдельном компьютере или в локальной сети важен по многим причинам: он обеспечивает точную пометку времени в журналах и базах данных, а также обеспечивает запуск пакетных заданий и других автоматизированных процессов в нужный момент. Что ещё важнее, поддержание точного времени позволяет синхронизировать работу всех серверов и рабочих станций.
Linux содержит великое множество утилит для работы с датой и временем: htpdate, hwdock.sh, date, 822-date, tzselect, tzsetup, vcstime, uptime, zdump, ddate, rdate, ctime и т. д. Раньше приходилось запускать hwdock.sh, rdate или ntpdate во время загрузки системы или оформлять их запуск в задания cron для периодического обновления. С появлением NTP (Network Time Protocol) всё это стало лишним.
Более того, все утилиты, настроенные на автоматический запуск (из файлов rc*.d или cron), лучше отключить и поручить всё наблюдение за временем ntp... С одним исключением: для больших корректировок по-прежнему хорошо подходит ntpdate. Если системное время сбилось на 20 или 30 минут, то для его исправления ntp понадобится несколько часов или даже дней, тогда как ntpdate исправит ситуацию мгновенно.
Команда ntpd -g вроде бы должна заменить ntpdate, но она плохо работает для смещений более часа. Если системное время отличается от истинного на несколько часов, в документации ntp рекомендуется внести изменения вручную. Если вас это устраивает — хорошо; но в этой главе будет показано, как поручить всю работу компьютерам.
В Linux протокол NTP реализован в виде демона ntpd. В сущности, система работает по принципу «настроил и забыл»: вы один раз настраиваете и запускаете ntpd, а в будущем только периодически проверяете правильность системного времени.
По правилам сетевого этикета один хост локальной сети синхронизируется с группой внешних серверов времени, а затем обслуживает всю локальную сеть. При такой схеме снимается лишняя нагрузка на общедоступные серверы времени, а хосты локальной сети синхронизируются друг с другом.
Когда-то администратору приходилось выбирать общедоступные серверы времени из списка http://www.eecis.udel.edu/~mills/ntp/servers.html. Тем не менее, из-за злоупотреблений и несоблюдения политики доступа был создан сайт http://pool.ntp.org для автоматического распределения нагрузки на серверы.