Сравните NTPD и ntpdate

23

Каковы плюсы и минусы между этими двумя способами синхронизации вашего сервера?

Мне кажется, что ваш сервер, вероятно, не будет дрейфовать более 1 секунды каждый день, так что ntpdate в crontab будет в порядке. Но я слышал, что вы можете использовать избыточные NTP-серверы здесь

http://www.pool.ntp.org/en/use.html

чтобы поддерживать синхронизированное время в случае сбоя.

У вас есть какие-нибудь предложения?

неизвестный
источник

Ответы:

26

Алгоритм NTP включает в себя информацию, позволяющую вам рассчитать и исправить смещение часов вашего сервера. NTPD включает в себя возможность использовать это для синхронизации ваших часов и будет работать точнее, чем часы на компьютере без NTPD. NTPD также будет использовать несколько серверов для повышения точности.

ntpdate не сохраняет за вами никаких состояний для выполнения этой услуги, поэтому не будет обеспечивать такую ​​же точность. Это позволит вам предоставить ему список серверов, которые он будет использовать, чтобы попытаться обеспечить вам лучший результат, но это не заменит сложные алгоритмы, предоставленные в NTPD, которые отслеживают ваш дрейф от каждого из серверов с течением времени.

NTPDATE мгновенно корректирует системное время, что может вызвать проблемы с некоторым программным обеспечением (например, уничтожить сеанс, который теперь выглядит старым). NTPD намеренно медленно корректирует системное время, избегая этой проблемы. Вы можете добавить ключ -g при запуске NTPD, чтобы позволить NTPD сделать первое обновление большим, что более или менее эквивалентно запуску ntpdate один раз перед запуском NTPD, что одно время было рекомендовано.

Что касается вопросов безопасности, серверы ntp не подключаются обратно по неинициализированным соединениям, что означает, что ваш брандмауэр должен быть в состоянии сообщить, что вы инициировали запрос ntp, и разрешить возврат трафика. Не должно быть необходимости оставлять порты открытыми для произвольных соединений, чтобы заставить работать NTPD.

Со страницы руководства ntpdate (8):

ntpdate может быть запущен вручную при необходимости для установки часов хоста, или он может быть запущен из скрипта запуска хоста для установки часов во время загрузки. В некоторых случаях это полезно для установки часов перед запуском NTP-демона ntpd. Также можно запустить ntpdate из скрипта cron. Тем не менее, важно отметить, что ntpdate с придуманными сценариями cron не может заменить демон NTP, который использует сложные алгоритмы для максимизации точности и надежности при минимальном использовании ресурсов. Наконец, поскольку ntpdate не управляет тактовой частотой хоста, как это делает ntpd, точность использования ntpdate ограничена.

lambacck
источник
Лучше, чем использовать ntpdate перед запуском ntpd: просто используйте -g!
Алекс Дж
8

ntpd предпочтительнее ntpdate, потому что вы получаете плавную коррекцию времени, а не скачки в ваших часах. Какой смысл в ваших журналах, когда в них есть скачок времени назад? ntpdate также будет прозрачно переключаться между серверами по мере необходимости.

Что касается требования открытых портов (как упомянуто Kyle), более новые версии ntpd (например, 4.2.4 на моем сервере Debian) могут быть настроены на широковещательную / многоадресную передачу в ЛВС с криптографической аутентификацией.

Изменить: см. Также этот вопрос .

PGS
источник
5

Обычно я рекомендую вам запустить NTPD и синхронизировать свои серверы с назначенным сервером времени в вашей организации. Этот внутренний сервер обычно синхронизируется с одним из общедоступных NTP-серверов (как вы установили связь).

Я без проблем использовал метод ntpdate, но он кажется более хакерским, чем запуск настоящего демона ntpd.

Михаил Горсух
источник
3

Я слышал о проблемах с перекосом часов на виртуальных машинах, работающих под управлением ntpd. Я также слышал о людях, исправляющих эту проблему с помощью регулярных заданий cron, которые вызывают ntpdate для нескольких серверов пула. У меня не было этих проблем, но я слышал о них несколько раз.

Мэтт Симмонс
источник
1
Они захотят запустить ядро ​​без галочек на виртуальной машине
goo
1
Программное обеспечение инструментов VMware на виртуальных машинах ESX обеспечивает синхронизацию времени, поэтому не используйте ntpd на виртуальных машинах с инструментами VMware. Вместо этого настройте NTPD на хостах, и пусть инструменты VMware сделают все остальное.
Данксд
3

Как уже упоминалось, NTP обеспечивает плавную коррекцию времени. Если приложения на вашем сервере не возражают против пропадания целых секунд или повторения одних и тех же секунд снова, то ntpd не сильно выигрывает по сравнению с ntpdate.

Если, с другой стороны, у вас есть чувствительные ко времени приложения, которые чувствительны к секундам или, что еще хуже, чувствительны к частичным секундам, тогда ntpd - лучший выбор. Обновления временных меток Novell eDirectory для обработки конфликтов обновлений, которые становятся критичными, если обновления происходят очень быстро (например, во время утреннего пика входа в систему). Сервер системного журнала должен иметь время с точностью не менее полсекунды, чтобы вести вменяемые журналы.

Для моей домашней приставки MythTV я замечаю, когда даже несколько секунд от того, что мой кабельный провайдер считает временем, поэтому я использую NTP для этого. Для работы сервера мониторинга ИБП я ​​использую crontabbed ntpdate по тем же причинам, на которые указал Кайл Ходжсон, поскольку это хост-бастион, и я не хочу, чтобы этот порт был открыт, даже если я заблокировал приложение; для этого приложения быть вторым от истины не страшно.

Что касается избыточности, мы поддерживаем как минимум два временных хоста в нашей сети и указываем все наши внутренние хосты на эти два. Эти два затем отслеживают различные интернет-хосты NTP. Более того, они настроены по принципу Peer, чтобы они могли согласованно проводить время между собой, если наша интернет-связь не работает. Надежный NTP, безусловно, можно спроектировать.

sysadmin1138
источник
1

На сервере, где доступ и защита критически важны, я использовал рассуждение о том, что xntpd, версия ntpd, на которую я опирался, требовал открытого UDP-порта 123. Поскольку я предпочел, чтобы были открыты только tcp 22 и 80, я использовал ntpdate в crontab вместо этого. Я никогда не слышал вескую причину, почему это нужно, или нет, которую я помню.

Одним из недостатков использования ctntab-вызова ntpdate является то, что он не может элегантно обрабатывать коррекцию дрейфа. ntpdate, iirc, обновляет часы, как только они могут сказать, что вы устарели - демоны ntp обычно корректируют дрейф мягко. Это дает преимущество в том, что ваши журналы хранятся в здравом уме - вы можете себе представить, например, на загруженном веб-сервере, что, если RTC сместился на несколько минут, то чтение веб-журналов на следующий день может привести к тому, что люди смогут получить безопасный доступ. URL-адреса, прежде чем они вошли в систему, так как веб-хиты будут не в порядке.

Кайл Ходжсон
источник
1

ntpdate предназначен для одноразовых обновлений, если вы хотите, чтобы время регулярно синхронизировалось, тогда используйте для этой цели службу, ntpd.

Насколько я могу судить, нет веских причин не использовать ntpd

Рог
источник
0

Вам не нужно использовать crontab, для этого и нужен ntpd.

Первоначально, когда ваше время истекает, один из способов - просто остановить ntpd, затем запустить, ntpdate ntp.server.comчтобы восстановить синхронизацию, затем снова запустить ntp.

Если у вас большая сеть, я бы, вероятно, настроил пару локальных ntp-серверов и заставил бы все хосты использовать их.

Ксеркс
источник
0

Посмотрите это обсуждение для понимания того, почему «ntpdate» все еще желателен и используется.

Подводя итог, можно сказать, что ntpd медленен по сравнению с крупными настройками времени, даже с опцией -g.

Джеймс
источник
-3

Для домашнего использования ntpdate на самом деле не важная вещь. Есть причина, по которой он "медленнее". Любой, кто использует cron с ntpdate в среде PRODUCTION ENTERPRISE, - просто идиот.

StateGov1
источник
2
Есть применения. Например, сервер с необходимостью иметь минимальные открытые порты любого вида и с требованиями к временному разрешению +/- 1000 мс или около того, cron + ntpdate - это совершенно правильный способ для синхронизации времени.
sysadmin1138