Команды ntp. Установка ntp в Ubuntu. Управление демоном ntpd

За работу сервера и клиента NTP отвечает "Служба времени Windows " ("W32Time ").
Для настройки сервера на ОС Windows проделайте следующие шаги :

1. Устанавливаем автоматический запуск сервиса "W32Time ". Для этого в ветке реестра
"HKLM\System\CurrentControlSet\Services\W32Time " задаём для параметра "Start " значение 2 .

2. Затем открываем "HKLM\System\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer " и устанавливаем "Enabled " в единицу .

3. Правим следующие параметры:
- ветка: "HKLM\System\CurrentControlSet\Services\W32Time\Parameters ", параметр "Type "
NoSync - NTP -сервер не синхронизируется с каким-либо внешним источником времени. Используются часы, встроенные в микросхему CMOS самого сервера;
NTP - NTP -сервер синхронизируется с внешними серверами времени, которые указаны в параметре реестра "NtpServer ";
NT5DS - NTP -сервер производит синхронизацию согласно доменной иерархии;
AllSync - NTP -сервер использует для синхронизации все доступные источники;

Параметр "NtpServer ", где указывается хост, с которым будет синхронизировать время данный сервер. При необходимости можно добавить несколько хостов, введя их DNS имена или IP адреса через пробел. В конце каждого имени через запятую можно добавлять флаг, который определяет режим для синхронизации с сервером времени.
Допускаются следующие значения:
0x1 - SpecialInterval , использование специального интервала опроса;
0x2 - режим UseAsFallbackOnly ;
0x4 - SymmetricActive , симметричный активный режим;
0x8 - Client , отправка запроса в клиентском режиме.
При использовании флага "SpecialInterval ", необходимо установленное значение интервала в ключе "SpecialPollInterval ". При значении флага "UseAsFallbackOnly " службе времени сообщается, что данный сервер будет использоваться как резервный, и перед синхронизацией с ним будут выполняться обращения к другим серверам списка. Симметричный активный режим используется NTP -серверами по умолчанию, а клиентский режим можно задействовать в случае проблем с синхронизацией;

Ветка "HKLM\System\CurrentControlSet\Services\W32Time\Config ", параметр "AnnounceFlags " отвечает за то, как о себе заявляет 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 ;

Ветка "HKLM\System\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient ", параметр "SpecialPollInterval " задается в секундах и по умолчанию его значение равно 604800 , что составляет одну неделю. Это довольно много, поэтому стоит уменьшить значение, скажем, до часа (3600 ).

4. После сделанных настроек можно запускать службу времени: "net start w32time ". Если сервис уже работал, примените конфигурацию командой "w32tm /config /update " и перезапустите: "net stop w32time && net start w32time ".

5. После перезапуска службы NTP -сервер уже активен и может обслуживать клиентов. Убедиться в этом можно с помощью команды "w32tm /query /configuration ". Эта команда выводит полный список параметров службы. Если раздел "NtpServer " содержит строку "Enabled: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 настраивают свои часы, синхронизируясь с текущим временем постепенно либо единовременно.

В операционных системах Windows за синхронизацию времени отвечает служба времени Windows, она же w32time. Эта служба обеспечивает работу серверной, и клиентской частей. Иными словами один и тот же компьютер может выступать в роли сервера и клиента одновременно.

Служба времени Windows не имеет графического интерфейса. Настройка производится через CMD утилитой w32tm, ручной правкой реестра, или через групповые политики.

Утилита w32tm меняет параметры в разделе

HKLM\SYSTEM\CurrentControlSet\Services\W32Time

Групповые политики создают раздел в

HKLM\SOFTWARE\Policies\Microsoft\W32Time

Параметры, созданные групповыми политиками, имеют больший приоритет, и перекрывают параметры по умолчанию.

Рассмотрим содержимое подраздела Parameters компьютера, находящегося в рабочей группе

и для доменного компьютера

Ключ NtpServer определяет список серверов времени, с которыми будет происходить синхронизация. По умолчанию указан адрес time.windows.com,0x9. При указании более одного сервера времени, адреса нужно разделять пробелами.

Параметр 0x9, является суммой 0x1 и 0x8.

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

Специальный интервал опроса указан в ключе

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient\SpecialPollInterval

и составляет 3600 секунд. То есть синхронизация происходит каждый час.

Ключ Type определяет тип синхронизации, и имеет следующие значения:

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

В случае с компьютером из рабочей группы, используется тип NTP, то есть синхронизация времени происходит с сервером time.windows.com, указанном в ключе NtpServer.

Доменный компьютер использует тип NT5DS. В данном случае синхронизация времени происходит с контроллером домена, на котором авторизовался компьютер. Контроллеры синхронизируют свое время с контроллером, являющимся владельцем роли PDC Emulator. Владелец роли PDC Emulator, также использует тип NT5DS и синхронизирует свое время с локальным часами, получившими время от CMOS схемы, расположенной на материнской плате. Минус в том, что время полученное от CMOS схемы постоянно «съезжает» относительно реального. Чтобы такого не происходило, на корневом контроллере с ролью PDC Emulator, меняют тип на NTP и в NtpServer указывают список внешних серверов времени.

На корневом контроллере домена, с ролью PDC Emulator, откроем CMD и выполним команду

C:\>w32tm /config /manualpeerlist:"0.ru.pool.ntp.org,0x9 1.ru.pool.ntp.org,0x9 2.ru.pool.ntp.org,0x9 3.ru.pool.ntp.org,0x9" /syncfromflags:MANUAL /update

/manualpeerlist — задает список адресов источников времени. Этот список будет добавлен в значение уже известного ключа NtpServer.

/syncfromflags — определяет источник синхронизации. Этот параметр меняет значение ключа Type. Возможные варианты:

MANUAL — синхронизация с узлами из заданного вручную списка. Аналогичен значению NTP.
DOMHIER — синхронизация с контроллером домена Active Directory в доменной иерархии. Аналогичен значению NT5DS.
NO — без синхронизации. Аналогичен значению NoSync.
ALL — синхронизация как с узлами, заданными вручную, так и с узлами домена. Аналогичен значению AllSync.

/update — уведомляет службу времени, что конфигурация изменилась, чтобы изменения вступили в силу.

Может ли компьютер выступать в роли сервера времени, определяется следующим ключом

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpServer\Enabled

У контроллера данный ключ имеет значение 1, у компьютера 0. Иными словами любой контроллер домена выступает в качестве сервера времени.

За то, как служба времени будет корректировать время на клиенте, отвечает ключ

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\Config\MaxAllowedPhaseOffset

У компьютера, находящегося в рабочей группе, значение ключа MaxAllowedPhaseOffset равно 1-ой секунде. У доменного компьютера 300 секунд. Если разница во времени между клиентом и сервером времени будет больше, чем значение ключа MaxAllowedPhaseOffset, то служба времени сразу поменяет время на клиенте, на время, установленное на сервере времени. Если разница во времени меньше, то корректировка часов будет происходить постепенно. Это сделано, чтобы предотвратить сбои служб, чувствительных к сдвигам времени. С другой стороны 300 секунд, это 5 минут, или максимально допустима разница во времени, для протокола Kerberos.

Чтобы изменить настройки службы времени через групповые политики, нужно создать фильтр WMI, для нацеливания политики на корневой контроллер домена, с ролью PDC Emulator. Для этого нужно открыть оснастку «Управление групповой политикой», нажать на раздел «Фильтры WMI» правой кнопкой мыши и выбрать «Создать». В поле имя нужно написать название фильтра, например, «PDC Emulator». Далее нужно нажать кнопку «Добавить» и вставить WMI запрос

Select * from Win32_ComputerSystem where DomainRole = 5

Создадим политику, нажмем правой кнопкой мыши на раздел «Domain Controllers» и выберем «Создать объект групповой политики…», назовем его «PDC Emulator Time Sources». Нажмем правой кнопкой мыши по созданному объекту, выберем «Изменить». Откроем раздел «Конфигурация компьютера->Политики->Административные шаблоны->Система->Служба времени Windows->Поставщики времени». Выберем параметр «Настроить NTP-клиент Windows». В поле NtpServer вставим адреса серверов времени

0.ru.pool.ntp.org,0x9 1.ru.pool.ntp.org,0x9 2.ru.pool.ntp.org,0x9 3.ru.pool.ntp.org,0x9

В поле Type нужно выбрать значение «NTP», затем нажать «Ок» и закрыть окно «Редактор управления групповыми политиками».

После этого нужно выбрать созданную политику «PDC Emulator Time Sources» и в поле «Фильтр WMI» выбрать созданный ранее фильтр «PDC Emulator»

Диагностика

Принудительно синхронизировать время можно командой

C:\>w32tm /resync

Посмотреть текущий источник времени можно командой

C:\>w32tm /query /source

Эта команда показывает текущий источник времени, время синхронизации и прочую информацию

C:\>w32tm /query /status

Эта команда показывает данные о всех источниках времени

C:\>w32tm /query /peers

Разницу во времени между компьютером и источником времени можно посмотреть командой

C:\>w32tm /monitor

Для просмотра текущей конфигурации используется команда

C:\>w32tm /query /configuration

Перезапустить службу времени можно командой

C:\>net stop w32time && net start w32time

Если что-то пошло не так, можно перерегистрировать службу времени. При этом создастся заново вся ветка реестра, относящаяся к службе времени

C:\>net stop w32time c:\>w32tm /unregister c:\>w32tm /register c:\>net start w32time

Для быстрой синхронизации времени с определенным хостом, можно воспользоваться командой

C:\>NET TIME \\DC1.4SKILL.LOC /SET /Y

Если выполнить команду на доменном компьютере без указания хоста, с которым нужно синхронизировать время, синхронизация произойдет с доменным сервером времени.

В интернете можно найти целое море мануалов по настройке сервера времени - ntpd, но ирония состоит в том, что 95% из них либо не совсем верны, и авторы этого даже не замечают, либо не дают необходимой информации. Далее я расскажу как организовать NTP сервер под Linux в локальной сети, который будет синхронизировать своё время с серверами в Интернете, а устройства в локальной сети будут уже синхронизировать время с ним.

Немного пред истории. Как и положено, всё началось неожиданно, сервер который я настраивал на кануне ночью, при следующей загрузки завис. «Шикарно» подумал я и полез в логи... В результате в том что сервер вис был повинен ntpd сервис, который из-за неправильной настройки сети не мог связаться внешним сервером для синхронизации. Посмотрев скрипт запуска, я наткнулся на интересную запись:

start() { readconf; if [ -n "$dostep" ]; then gprintf $"Syncing time for ntpd: " # try hard, some networks/slow machines/... take a while to have DNS local triesleft=7 while [ $triesleft -gt 0 ]; do /usr/sbin/ntpdate -s -b $NTPDATE_OPT $tickers RETVAL=$? [ $RETVAL -eq 0 ] && break triesleft=$(($triesleft-1)) sleep 1 done unset triesleft [ $RETVAL -eq 0 ] && success || failure echo if [ $RETVAL -eq 0 ]; then [ "$SYNC_HWCLOCK" = "yes" ] && sync_hwclock else OPTIONS="$OPTIONS -g" fi else # -g can replace the grep for time servers # as it permits ntpd to violate its 1000s limit once. OPTIONS="$OPTIONS -g" fi # Start daemons. gprintf $"Starting $prog: " daemon ntpd $OPTIONS RETVAL=$? echo [ $RETVAL -eq 0 ] && touch /var/lock/subsys/ntpd return $RETVAL }

А теперь внимание на строку с номером 8. Это начало цикла, в котором целых 7-мь раз будет предпринята попытка начальной, грубой синхронизации времени. Всё бы хорошо, но если у вас неправильно настроена сеть, или DNS, то вызовет подвисание сервера, на 7*(1 + время проверки доступности DNS, порядка 5 сек) секунд. В общем ждать минуту меня явно не устраивало, итак приступим.

Настройка начальной, грубой синхронизации

В замечательном файле /etc/ntp/step-tickers, хранятся имена серверов с которыми производиться начальная, грубая (сотни милесекунд) корректировка. Если вы уверены что у вас всегда будет доступ к Internet, можете перечислить в нём имена серверов, например:

Но если у вас в момент начальной загрузки сервера связь с интернетом будет отсутствовать, то при определённых условиях, это вызовет подвисание консоли на довольно продолжительное время. Именно по этому я стёр все записи от туда. В конце концов я могу и в ручную сделать грубую корректировку времени. Есть ещё вариант поиграться с опциями и подправить скрипт запуска, но это не мой путь. По этому переходим непосредственно к настройки полноценного NTP сервера, который будет синхронизировать свое время с публичными серверами в Интернете, и предоставлять его участникам локальной сети в случае необходимости.

Задача: Организовать NTP сервер в локальной сети, который будет синхронизировать своё время с Интернетом, а устройства в локальной сети будут уже синхронизировать время с ним.
Дистрибутив: Mandriva 2010.2 free Версия ntpd: 4.2.4p8

Настройка NTPD

Мир Linux действительно великолепен, все настройки в нём сводятся к простому редактированию файлов конфигураций. ntpd в этом плане не исключение. Итак если у вас ещё не стоит ntpd сервер установим его:

Желающие могут скомпилировать из исходников, или установить его другим способом, в мои же платны входит показать как настроить это чудо, по скольку в интернете можно найти целое море мануалов по настройке ntpd, но ирония состоит в том, что 95% из них либо не совсем верны (и авторы этого даже не замечают при вызове статусов) либо не дают необходимой информации. Итак файл с настройками храниться в /etc/ntp.conf, минимальные настройки примерно такие:

server 0.ru.pool.ntp.org server 1.ru.pool.ntp.org server 2.ru.pool.ntp.org server 3.ru.pool.ntp.org

Каждая строчка указывает на сервер (списки серверов можно найти здесь http://www.pool.ntp.org), с которым будет происходить синхронизация. Четыре строчки с server, соответственно четыре сервера. Хотя на самом деле в данном примере это не совсем так. Каждая запись указывает на пул (группу) серверов. При обращении скажем по адресу 2.ru.pool.ntp.org будет выбран 1 IP адрес сервера, с которым будет происходить синхронизация. Соответствия обновляются 1 раз в час. Теперь на более простом примере. Всего у нас имеется 4 коробки с часами. Мы берём и наугад достаём из каждой коробки 1 часы, всего у нас получается 4 часов, с которыми мы будем сверять наше время. В течении часа, каждый раз когда мы будем сверять время, мы будем брать одни и те же часы. Через час если мы опять обратимся к этим коробкам, то вытащим уже другие часы. Таким образом наше время будет сверяться постоянно с разными часами, и если какие-то из них окажутся не рабочими, то ничего страшного не случиться, ведь за 1 час, наши локальные часы не слишком сильно рассинхронизируются. Ну да мы отвлеклись, продолжим. Прежде чем запускать сервер ntpd, необходимо произвести начальную, грубую установку времени. Можно просто выставить время руками, а можно выполнить команду (разумеется если у нас корректно работает связь с интернетом):

После того как время грубо синхронизировано можно запускать основной сервис (на всякий случае перезапустим его):

После чего выполним команду:

В результате должны увидеть что-то на подобии:

remote refid st t when poll reach delay offset jitter ============================================================================== mx.kr-pro.ru 62.149.0.30 2 u 26 64 1 22.416 77.711 0.001 phobos.bsys-net 192.36.143.151 2 u 25 64 1 32.994 64.937 0.001 webhost.mitht.r 77.105.134.138 3 u 25 64 1 68.134 37.119 0.001 hornet.itconnec 77.233.172.7 3 u 24 64 1 58.604 38.047 0.001

Небольшие пояснения что есть что. remote - FQDN или IP-адрес сервера; refid - IP-адрес сервера с которым в настоящий момент выполняется синхронизация сервера из столбца remote; st - stratum сервера; t - режим работы сервера: "u" - unicast, "m" - multicast, "b" - broadcast, "-" - manycast; when - время, прошедшее с момента последнего ответа сервера в секундах или "-", если сервер еще ни разу не ответил (скорее всего, "умер", и сведения о нем пора удалить из файла конфигурации); poll - интервал опроса сервера в секундах (после запуска имеет небольшое значение, чтобы синхронизация происходила быстрее, с течением времени значение увеличивается); reach - состояние восьми последних попыток запроса времени у сервера в восьмеричном представлении (в случае успешной попытки устанавливается соответствующий бит); delay - задержка ответа сервера в секундах; offset - самое важное значение - различие локального времени и времени на сервере (с течением времени значение уменьшается, т.к. время становится более точным); jitter - дисперсия, дрожание фазы (более низкие значения обеспечивают более точную синхронизацию). Ждём 10 минут. Повторяем, команду и видем:

remote refid st t when poll reach delay offset jitter ============================================================================== *mx.kr-pro.ru 62.117.76.142 2 u 5 64 377 20.558 38.662 19.060 +phobos.bsys-net 192.36.143.151 2 u 6 64 377 17.726 38.447 15.132 -webhost.mitht.r 77.105.134.138 3 u 4 64 377 66.744 13.451 16.257 +hornet.itconnec 77.233.172.7 3 u 11 64 377 57.291 43.556 13.327

Ага, вот оно появились всякие дополнительные символы и вот что они означают: "*" - сервер, с которым в настоящий момент выполняется синхронизация, "#" - сервер отобран для синхронизации, но дистанция до него превышает максимально возможную, "?" - сервер отобран для синхронизации и использует сигнал PPS, "+" - сервер добавлен в список серверов, отобранных для синхронизации, "x" - сервер использует некорректный алгоритм, "." - сервер выбран из конца списка серверов, отобранных для синхронизации, "-" - сервер отвергнут группирующим алгоритмом, пробел - сервер имеет слишком высокий stratum и/или не может быть проверен; Теперь по простому, если видем "+", "-", "*" синхронизация пошла. offset - отклонение нашего времени и времени удалённого сервера, если значение скажем больше 100, то синхронизация реально не произошла. На некоторых ресурсах можно увидеть следующую картину:

remote refid st t when poll reach delay offset jitter ============================================================================== 172.22.128.8 93.185.187.89 3 u 142 256 377 3.906 -450.41 61.937 195.200.216.16 .INIT. 16 u - 64 0 0.000 0.000 0.000 ams1.x31.com .INIT. 16 u - 64 0 0.000 0.000 0.000 mail2.mgts.by .INIT. 16 u - 64 0 0.000 0.000 0.000 *LOCAL(1) .LOCL. 3 l 13 64 377 0.000 0.000 3.906

Видим что половина серверов (2, 3, 4) вообще не работает и реально происходит работа с локальным сервером и с 172.22.128.8. Смотрим значение offset которое говорит что никакой синхронизации нет и в помине! Из листинга можно сделать только один вывод, что сервер засинхронизирован сам с собой, и его время имеет мало общего с действительным. Будьте внимательны, не давайте вас нае... обмануть:) На этом бы можно и остановиться но теперь как говориться усложняем задачу. Нам надо чтоб наш сервер являлся источником времени для локальной сети, но при этом никто не смог сделать ничего плохого с вашим сервером. В чём проблема? В том что для нормальной синхронизации, даже если вы не планируете кому то давать синхронизировать время с вами, У ВАС ДОЛЖЕН быть открытым порт udp 123. После прочтения множества мануалов и дня потерянного времени вот что в /etc/ntp.conf получилось у меня:

01 # Public NPS servers, from we get time 02 server 0.ru.pool.ntp.org 03 server 1.ru.pool.ntp.org 04 server 2.ru.pool.ntp.org 05 server 3.ru.pool.ntp.org 06 server 0.europe.pool.ntp.org 07 server 1.europe.pool.ntp.org 08 09 # For all other acces denied 10 restrict default ignore 11 12 # Public NPS servers can"t control our local server 13 restrict 0.ru.pool.ntp.org nomodify notrap 14 restrict 1.ru.pool.ntp.org nomodify notrap 15 restrict 2.ru.pool.ntp.org nomodify notrap 16 restrict 3.ru.pool.ntp.org nomodify notrap 17 restrict 0.europe.pool.ntp.org nomodify notrap 18 restrict 1.europe.pool.ntp.org nomodify notrap 19 20 # Our server provide NTP service for local network, 21 # and clients can"t control our local server 22 restrict 192.168.0.0 mask 255.255.0.0 nomodify notrap nopeer 23 24 # Need for loopback synchronisation, without it no will work 25 restrict 127.0.0.1 nomodify notrap

Вникаем внимательно. Наш сервер засинхронизирован с 6-тью внешними пулами серверов, строки с 02 по 07. Строка 10, мы запрещаем кому либо чтобы-то не было делать с нашим сервером. Теперь нам надо внести исключение для серверов с которыми наш сервер будет синхронизироваться, строки с 13 по 18. При этом параметры nomodify notrap, говорят о том что запрещено изменять состояние НАШЕГО сервера и отправлять сообщения об исключениях ВНЕШНИМИ серверами, т. е. чтоб никто из этих серверов ничего не натворил. Строка 22, мы разрешаем участникам локальной сети синхронизировать время с нашим сервером, но при этом тоже вводим ограничение. Теперь самая важная строка - 25, будем считать что это локальная петля. Без неё работать не будет. В итоге, наш сервер синхронизируется с внешними серверами, при этом сам является сервером но только для нашей локальной сети, всем остальным доступ запрещён. Ещё раз перезапустим сервис:

Пойдём покурим, выпьем чаю, кофе (нужное подчеркнуть), после чего выполним команду:

remote refid st t when poll reach delay offset jitter ============================================================================== *mx.kr-pro.ru 62.117.76.142 2 u 5 64 377 20.558 38.662 19.060 +phobos.bsys-net 192.36.143.151 2 u 6 64 377 17.726 38.447 15.132 -webhost.mitht.r 77.105.134.138 3 u 4 64 377 66.744 13.451 16.257 +hornet.itconnec 77.233.172.7 3 u 11 64 377 57.291 43.556 13.327 +sinister.wzw.tu 129.69.1.153 2 u 1 64 377 80.064 48.067 14.367 +time.sunrise.ne 193.192.225.90 3 u 3 64 377 72.448 22.575 14.584

Видим, наш сервер засинхронизирован, отклонение не превышают и 50мс. Настройка NTPD практически одинакова для всех Xnix систем, и отличается по сути только способом запуска. Всем советую ознакомиться также со статьёй где расписан вариант настройки для FreeBSD. http://www.sergeysl.ru/freebsd-ntpd/ Вот собственно и всё.

Введение.

Система Linux, как и большинство других современных операционных систем, фактически имеет двое часов. Первые часы - аппаратные, иногда называемые Real Time Clock, сокращенно (RTC), или часы BIOS, обычно они связаны с колеблющимся кварцевым кристаллом, имеющим точность хода до нескольких секунд в день. Точность зависит от различных колебаний, например, окружающей температуры. Вторые часы - внутренние программные часы, которые идут непрерывно, в том числе и при перерывах в работе системы. Они подвержены отклонениям, связанным с большой системной нагрузкой и задержкой прерываний. Однако система обычно считывает показания аппаратных часов при загрузке и потом использует системные часы. Команда date, устанавливает не аппаратные, а системные часы.

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

Микросхема часов реального времени (ЧРВ), используемая на материнских платах, не особенно точна и обычно отстает, или забегает вперед на определенное время каждый день.

Можно синхронизировать аппаратные часы с системными при помощи команды hwclock с опцией -w или —systohc и синхронизировать системные часы с аппаратными при помощи команды hwclock с опцией -s или –hctosys.

Настройка.

Для начала в файле /etc/ntp.conf добавляем строчку:

Время будет синхронизироваться с указанного сервера. Если первый недоступен берутся следующие по списку. Первым прописал локальный сервер NTP.

Следующий момент, устанавливает локальное или всемирное время будет использоваться.

#cat /etc//etc/sysconfig/clock

У нас не то:

Правим ZONE – на "Europe/Moscow"

Получаем:

UTC=true системные часы не используют универсальное представление времени

ARC=true Используется нормальная эпоха UNIX.

Временная зона под Linux устанавливается через символическую ссылку, из /etc/localtime на файл из директории /usr/lib/zoneinfo(или /usr/share/zoneinfo), чем указывается в какой временной зоне вы находитесь.

Рисунок. Содержимое /usr/share/zoneinfo

Выполняем команды.

rm -rf /etc/localtime

ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime

Все работает!

Если демон ntpd запущен то выдается следующее сообщение, при попытки выполнить синхронизацию с ntp сервером.

Данная команда показывает, к каким серверам производиться подключение.

Дополнение:

Установка аппаратных часов

Для установки аппаратных часов, установите сначало системное время а потом уже аппаратное используя программу «/sbin/clock -w» (или«/sbin/clock -wu» в случае использования всемирного времени).Чтобы узнать аппаратное время запустите clock без параметров. Если аппаратные часы установлены в локальное время а вы хотите увидеть всемирное наберите «/sbin/clock –u»

Установка системных часов

Для установки системных часов в Линуксе, используется программа date. Для примера установка текущего времени (системного!) и даты на 31 июля, 23:16,наберите «date 07312316» (обратите внимание что время дано в 24-часовой записи) Если вы хотите изменить год то набиретие «date 073123161998». Для установки секунд набирите «date 07312316.30» или «date 073123161998.30». Чтобы узнать системное время запустите date без аргументов.