Установка ntp в Ubuntu. Пример настройки локального NTP сервера для работы с устройствами NetPing Наблюдение за сервером ntpd и за синхронизацией

Примеры применения

08.12.2014

Для синхронизации времени устройства NetPing используют протокол NTP. При помощи этого протокола все устройства в сети корректируют своё время по указанному серверу. Устройства NetPing, подключенные к Internet, могут использовать публичный NTP сервер, как рекомендовано в статье . Если доступа к сети Internet нет, то можно настроить локальный NTP сервер. Таким сервером может являться любой компьютер с ОС Windows с настроенной службой W32Time Служба времени Windows »). Данная служба не имеет графического интерфейса и настраивается либо через командную строку либо путём правки ключей реестра.

Инструкция по настройке сервера NTP на ОС Windows 7/8/2008/2012

Рассмотрим настройку службы времени через редактирование реестра. Настройка происходит одинаково для версий Windows 7/8, Windows Server 2008, Windows Server 2012.

Для данной настройки необходимо обладать правами администратора ОС Windows

Открываем редактор реестра либо через диалоговое окно «Выполнить », вызванное комбинацией клавиш «Win » + «R », либо через форму поиска, где набираем «regedit ».


В открывшемся редакторе в левом древовидном меню открываем «ветвь» «HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\W32Time\TimeProviders\NtpServer », где ищем ключ с названием «Enable ». Нажимаем правой кнопкой мыши и выбираем «Изменить». Меняем значение ключа с 0 на 1 .


Изменив данный параметр, мы указали, что данный компьютер выступает в роли сервера NTP. Компьютер одновременно остаётся клиентом и может синхронизировать своё время по другим серверам в Internet или локальной сети. Если вы хотите, чтобы в качестве источника данных выступали внутренние аппаратные часы, то измените значение параметра ключа AnnounceFlags на 5 в ветке « HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config ».


Для вступления изменений в силу нам необходимо перезапустить службу. Доступ к службам осуществляется через «Панель управления » из меню «Пуск » -> «Панель управления » -> «Администрирование » -> «Службы ». Также она находится в форме поиска при вводе «services.msc ». В появившемся списке служб находим интересующую нас «Служба времени Windows » и через меню, вызванное правой кнопкой мыши, выбираем пункт «Перезапустить ».

О настройке и управлении NTP сервера в Windows Server

Все ОС Windows начиная с Windows 2000 имеют службу времени W32Time . Данная служба предназначена для синхронизации системного времени в границах организации. Служба W32Time ответственна за работу и клиентской и серверной части службы времени, при этом один и тот же компьютер может быть одновременно и клиентом и сервером NTP (Network Time Protocol).

По умолчанию служба времени в Windows сконфигурирована следующим образом:

При установке операционной системы Windows запускает клиента NTP и синхронизируется с внешним источником времени;
При добавлении компьютера в домен тип синхронизации меняется. Все клиентские компьютеры и рядовые сервера в домене используют для синхронизации времени контроллер домена, проверяющий их подлинность;
При повышении рядового сервера до контроллера домена на нем запускается NTP-сервер, который в качестве источника времени использует контроллер с ролью PDC-эмулятор;
PDC-эмулятор, расположенный в корневом домене леса, является основным сервером времени для всей организации. При этом сам он также синхронизируется с внешним источником времени.

Такая схема работает в большинстве случаев и не требует вмешательства. Однако структура сервиса времени в Windows может и не следовать доменной иерархии, и надежным источником времени можно назначить любой компьютер. В качестве примера я опишу настройку NTP-сервера в Windows Server 2008 R2, хотя со времен Windows 2000 процедура не особо изменилась.

Запуск NTP сервера

Сразу отмечу, что служба времени в Windows Server (начиная с 2000 и заканчивая 2012) не имеет графического интерфейса и настраивается либо из командной строки, либо путем прямой правки системного реестра. Лично мне ближе второй способ, поэтому идем в реестр.

Итак, первым делом нам надо запустить сервер NTP. Открываем ветку реестра
HKLM\System\CurrentControlSet\services\W32Time\TimeProviders\NtpServer.
Здесь для включения сервера NTP параметру Enabled надо установить значение 1 .

После перезапуска службы NTP сервер уже активен и может обслуживать клиентов. Убеждаемся в этом можно с помощью команды w32tm /query /configuration. Эта команда выводит полный список параметров службы. Если раздел NtpServer содержит строку Enabled:1 , то все в порядке, сервер времени работает.

Для того, чтобы NTP-сервер мог обслуживать клиентов, не забудьте на межсетевом экране (брандмауэре) открыть UDP порт 123 для входящего и исходящего трафика.

Основные настройки NTP сервера

NTP сервер включили, теперь надо его настроить. Открываем ветку реестраHKLM\System\CurrentControlSet\services\W32Time\Parameters. Здесь в первую очередь нас интересует параметр Type , который задает тип синхронизации. Он может принимать следующие значения:

NoSync - NTP-сервер не синхронизируется с каким либо внешним источником времени. Используются часы, встроенные в микросхему CMOS самого сервера;
NTP - NTP-сервер синхронизируется с внешними серверами времени, которые указаны в параметре реестра NtpServer;
NT5DS - NTP-сервер производит синхронизацию согласно доменной иерархии;
AllSync - NTP-сервер использует для синхронизации все доступные источники.

Значение по умолчанию для компьютера, входящего в домен - NT5DS , для отдельно стоящего компьютера - NTP.

И параметр NtpServer , в котором указываются NTP-сервера, с которыми будет синхронизировать время данный сервер. По умолчанию в этом параметре прописан NTP-сервер Microsoft (time.windows.com, 0x1), при необходимости можно добавить еще несколько NTP-серверов, введя их DNS имена или IP адреса через пробел. Список доступных серверов времени можно посмотреть например .

В конце каждого имени можно добавлять флаг (напр. ,0x1 ) который определяет режим для синхронизации с сервером времени. Допускаются следующие значения:

0x1 – SpecialInterval, использование специального интервала опроса;
0x2 – режим UseAsFallbackOnly;
0x4 – SymmetricActive, симметричный активный режим;
0x8 – Client, отправка запроса в клиентском режиме.

При использовании флага SpecialInterval, необходимо установленное значение интервала в ключе SpecialPollInterval . При значении флага UseAsFallbackOnly службе времени сообщается, что данный сервер будет использоваться как резервный и перед синхронизацией с ним будут выполнятся обращения к другим серверам списка. Симметричный активный режим используется NTP-серверами по умолчанию, а клиентский режим можно задействовать в случае проблем с синхронизацией. Microsoft рекомендует ставить везде параметр = 0x1.

Важный параметр AnnounceFlags находится в разделе реестра HKLM\System\CurrentControlSet\services\W32Time\Config. Он отвечает за то, как о себе заявляет NTP-сервер и может принимать следующие значения:

0x0 (Not a time server) - сервер не объявляет себя через NetLogon, как источник времени. Он может отвечать на NTP запросы, но соседи не смогут распознать его, как источник времени;
0x1 (Always time server) - сервер будет всегда объявлять о себе вне зависимости от статуса;
0x2 (Automatic time server) - сервер будет объявлять о себе только, если он получает надежное время от другого соседа (NTP или NT5DS);
0x4 (Always reliable time server) - сервер будет всегда заявлять себя, как надежный источник времени;
0x8 (Automatic reliable time server) - контроллер домена автоматически объявляется надежным если он PDC-эмулятор корневого домена леса. Этот флаг позволяет главному PDC леса заявить о себе как об авторизованном источнике времени для всего леса даже при отсутствии связи с вышестоящими NTP-серверами. Ни один другой контроллер или рядовой сервер (имеющие по умолчанию флаг 0x2 ) не может заявить о себе, как надежном источнике времени, если он не может найти источник времени для себя.

Значение AnnounceFlags составляет сумму составляющих его флагов, например:

10=2+8 - NTP-сервер заявляет о себе как о надежном источнике времени при условии, что сам получает время из надежного источника либо является PDC корневого домена. Флаг 10 задается по умолчанию как для членов домена, так и для отдельно стоящих серверов.

5=1+4 - NTP-сервер всегда заявляет о себе как о надежном источнике времени. Например, чтобы заявить рядовой сервер (не домен-контроллер) как надежный источник времени, нужен флаг 5.

Ну и настроим интервал между обновлениями. За него отвечает уже упоминавшийся выше ключ SpecialPollInterval, находящийся в ветке реестра HKLM\System\CurrentControlSet\services\W32Time\TimeProviders\NtpClient. Он задается в секундах и по умолчанию его значение равно 604800, что составляет 1 неделю. Это очень много, поэтому стоит уменьшить значение SpecialPollInterval до разумного значения, скажем до 1 часа (3600).

Команды управления службой времени W32Time:

w32tm /config /update — обновить конфигурацию сервиса.

w32tm /monitor – узнать, насколько системное время данного компьютера отличается от времени на контроллере домена или других компьютерах. Например: w32tm /monitor /computers:time.nist.gov
w32tm /resync – принудительная синхронизация с используемым сервером времени.
w32tm /stripchart– показывает разницу во времени между текущим и удаленным компьютером, причем может выводить результат в графическом виде. Например, команда w32tm /stripchart /computer:time.nist.gov /samples:5 /dataonly произведет 5 сравнений с указанным источником и выведет результат в текстовом виде.

w32tm /config – команда используемая для настройки службы NTP. С ее помощью можно задать список используемых серверов времени, тип синхронизации и многое другое. Например, переопределить значения по умолчанию и настроить синхронизацию времени с внешним источником, можно командой w32tm /config /syncfromflags:manual /manualpeerlist:time.nist.gov /update
w32tm /query - показывает текущие настройки службы. Например команда w32tm /query /source покажет текущий источник времени, а w32tm /query /configuration выведет все параметры службы.
w32tm /unregister - удаляет службу времени с компьютера
w32tm /register – регистрирует службу времени на ПК, создается заново вся ветка параметров в реестре.

Вконтакте

…в среде Active Directory разница в часах более 5 минут приводит к проблемам аутентификации Kerberos…

В данной заметке речь пойдет о настройке синхронизации времени в доменной среде Windows 2008 – 2012 R2.
Основой нормального функционирования доменной среды AD является корректная работа службы времени Windows (W32Time).

Как работает синхронизация времени в доменной среде?

1. пользователи получают точное время от ближайшего контроллера домена, на котором они зарегистрировались;
2. все доменные контроллеры запрашивают об этом DC с ролью PDC-эмулятор (одна из ролей FSMO);
3. PDC-эмулятор, в свою очередь, должен синхронизироваться с более авторитетным источником времени;
На практике PDC-эмулятор обычно синхронизируется с выделенным NTP-сервером организации, либо с NTP-сервером провайдера, или же с внешним источником точного времени, такие как: 0.ru.pool.ntp.org, 1.ru.pool.ntp.org, 2.ru.pool.ntp.org

Пример настройки контроллера домена с ролью PDC-эмулятора.

Для настройки нам потребуется консоль PowerShell запущенная от имени администратора.
1. Определим имя PDC-эмулятора – самый простой способ выполнить команду:

Когда мы подключили к DC с ролью PDC можно начинать настраивать.
2. Конфигурируем внешние источники синхронизации – указываем с какими источниками PDC будет синхронизироваться.

w32tm /config /syncfromflags:manual /manualpeerlist:”0.ru.pool.ntp.org 1.ru.pool.ntp.org 2.ru.pool.ntp.org”

где, параметры:
/syncfromflags:manual — синхронизация с узлами из заданного вручную списка.
manualpeerlist:<узлы> — список (адреса DNS или IP) источников времени

Важно! Имя каждого источника времени (если их несколько) должно быть разделено пробелом. А на брандмауэре должно быть разрешено прохождение трафика UDP на порт 123 в обе стороны.

3. Объявляем PDC-Emulator надежным источником времени для клиентов:
w32tm /config /reliable:yes
4. После внесения изменений перезапускаем службу времени:

Restrat-Service W32Time

Или обновляем конфигурацию командой: w32tm /config /update

Если вы перенесли роль PDC-эмулятор на другой контроллер домена, то старый DC все еще продолжает считает считать себя авторитетным сервером времени для всего домена, что может стать причиной ошибок в системных логах. Исправить эту ситуацию можно командой:
w32tm /config /syncfromflags:domhier /reliable:no /update

Несколько, на мой взгляд, полезных команд:

w32tm /query /configuration — посмотреть текущие настройки службы времени;

Где:

SpecialPollInterval: 3600 - интервал синхронизации в секундах, 3600 – сутки. Синхронизиция будет проводиться раз в сутки.
NtpServer - указывает сервреры, с которым может синхроинизировать время компьютер.
Type: NTP – вид синхронизации времени.
Параметр Type может иметь следующие параметры:
NoSync — служба времени вообще не синхронизируется ни с чем.
NTP — служба времени синхронизируется с серверами, указанными в параметре NtpServer.
NT5DS — служба времени синхронизируется, используя доменную иерархию (характерно для членов домена Active Directory).
AllSync — служба времени использует все возможные механизмы для синхронизации.

w32tm /monitor — отобразит текущую иерархию синхронизации времени по домену;
w32tm /stripchart /computer:0.ru.pool.ntp.org /samples:5 /dataonly — произвести 5 попыток сравнения времени с авторитетным источником времени 0.ru.pool.ntp.org (полезно при проверке доступности источника времени );
w32tm /resync – заставить компьютер синхронизироваться с используемым им сервером времени;
w32tm /unregister - удаляет службу времени с компьютера;
w32tm /register – регистрирует службу времени на компьютере;
Если кому интересно настраивать NTP-сервер через реестр, то милости просим в эту ветку: HKLM\System\CurrentControlSet\services\W32Time\

Концепция ярусов STRATA или STRATUM


Где:
Stratum 0 – эталонные или авторитетные источники точного времени, такие как: путники GPS, цезиевые атомные часы, радио волны WWVB. Авторитетны они потому, что имеют способ поддержания высокоточного хронометража – когда секунда не потеряется за 300 000 лет.
Stratum 1 – компьютеры, которые напрямую берут время у Stratum 0, т.е. Stratum 1 используют аппаратное (проводом) подключение к Stratum 0!
Stratum 2 – уровень компьютеров, берущие время по сети у Stratum 1.
Как уже, наверное, понятно из схемы, Stratum 3 будет брать время у Stratum 2 , а Stratum 4 у Stratum 3 и т.д. Самым нижним ярусов является Stratum 16 и время в нем считается не синхронизированным.
Опять же, на практике, самыми распространенными внешними источниками времени являются Stratum 2 , Stratum 3 , ибо синхронизироваться с Stratum 1 простым пользователям не разрешается, да и это не к чему.

Network Time Protocol — сетевой протокол для синхронизации внутренних часов компьютера с использованием сетей с переменной латентностью, основанных на коммутации пакетов.

Хотя традиционно NTP использует для своей работы протокол UDP, он также способен работать и поверх TCP. Система NTP чрезвычайно устойчива к изменениям латентности среды передачи.

Время, представляется в системе NTP 64-битным числом, состоящим из 32-битного счетчика секунд и 32-битного счетчика долей секунды, позволяя передавать время в диапазоне 2 32 секунд, с теоретической точностью 2 -32 секунды. Поскольку шкала времени в NTP повторяется каждые 2 32 секунды (136 лет), получатель должен хотя бы примерно знать текущее время (с точностью 68 лет). Также следует учитывать, что время отсчитывается с полуночи 1 января 1900 года, а не с 1970, поэтому из времени NTP нужно вычитать почти 70 лет (с учетом високосных лет), чтобы корректно совместить время с Windows или Unix-системами.

Как это работает

NTP-серверы работают в иерархической сети, каждый уровень иерархии называется ярусом (stratum). Ярус 0 представлен эталонными часами. За эталон берется сигнал GPS (Global Positioning System) или службы ACTS (Automated Computer Time Service). На нулевом ярусе NTP-серверы не работают.

NTP-серверы яруса 1 получают данные о времени от эталонных часов. NTP-серверы яруса 2 синхронизируются с серверами яруса 1. Всего может быть до 15 ярусов.

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

Иерархическая структура протокола NTP является отказоустойчивой и избыточной. Рассмотрим пример его работы. Два NTP-сервера яруса 2 синхронизируются с шестью различными серверами яруса 1, каждый — по независимому каналу. Внутренние узлы синхронизируются с внутренними NTP-серверами. Два NTP-сервера яруса 2 координируют время друг с другом. В случае отказа линии связи с сервером яруса 1 или с одним из серверов уровня 2 избыточный сервер уровня 2 берет на себя процесс синхронизации.

Аналогично узлы и устройства яруса 3 могут использовать любой из серверов яруса 2. Что еще более важно, так это то, что наличие избыточной сети серверов NTP гарантирует постоянную доступность серверов времени. Синхронизируясь с несколькими серверами точного времени, NTP использует данные всех источников, чтобы высчитать наиболее точное временя.

Стоит отметить, что протокол NTP не устанавливает время в чистом виде. Он корректирует локальные часы с использованием временного смещения, разницы между временем на NTP-сервере и локальных часах. Серверы и клиенты NTP настраивают свои часы, синхронизируясь с текущим временем постепенно либо единовременно.

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

За этим простым описанием скрывается много сложностей - существуют уровни NTP серверов, где первый уровень подключен к атомным часам, а второй и третий уровни серверов распределяют на себя нагрузку по актуальным запросам из интернета. Кроме того клиентское приложение сложнее, чем вы можете подумать - оно компенсирует задержки соединения и регулирует время таким образом, чтобы не навредить другим процессам, запущенным на сервере. Но к счастью вся эта сложность скрыта от вас!

Ubuntu использует ntpdate и ntpd.

ntpdate

Ubuntu стандартно устанавливается с ntpdate и будет запускать его при каждой загрузке один раз для установки времени по NTP серверу Ubuntu.

Ntpdate -s ntp.ubuntu.com

ntpd

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

Установка

Для установки ntpd из терминала введите:

Sudo apt-get install ntp

Настройка

Отредактируйте /etc/ntp.conf для добавления/удаления серверов. По умолчанию эти сервера такие:

# Use servers from the NTP Pool Project. Approved by Ubuntu Technical Board # on 2011-02-08 (LP: #104525). See http://www.pool.ntp.org/join.html for # more information. server 0.ubuntu.pool.ntp.org server 1.ubuntu.pool.ntp.org server 2.ubuntu.pool.ntp.org server 3.ubuntu.pool.ntp.org

После изменений конфигурационного файла вам надо перезапустить ntpd:

Sudo service ntp restart

Просмотр статуса

Используйте ntpq для просмотра дополнительной информации:

# sudo ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== +stratum2-2.NTP. 129.70.130.70 2 u 5 64 377 68.461 -44.274 110.334 +ntp2.m-online.n 212.18.1.106 2 u 5 64 377 54.629 -27.318 78.882 *145.253.66.170 .DCFa. 1 u 10 64 377 83.607 -30.159 68.343 +stratum2-3.NTP. 129.70.130.70 2 u 5 64 357 68.795 -68.168 104.612 +europium.canoni 193.79.237.14 2 u 63 64 337 81.534 -67.968 92.792