Настройка NTP-сервера в Windows
В данной заметке речь пойдет о настройке синхронизации времени в доменной среде 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-эмулятора – самый простой способ выполнить команду:
netdom query FSMO
Когда мы подключили к 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 простым пользователям не разрешается, да и это не к чему.
Источник
Настройка сервера NTP на ОС Windows 10
Для настройки сервера понадобятся права администратора у пользователя Windows.
Автоматическая настройка
Настройка вручную
- Зайдите в редактор реестра одним из способов:
- Нажмите клавиши Win+R, в появившемся окне Выполнить наберите regedit и нажмите Enter.
- Нажмите клавиши Win+R, в появившемся окне Выполнить наберите regedit и нажмите Enter.
Если Windows запросит разрешения на внесение изменений приложением Редактор реестра, нажмите кнопку Да.
- Нажмите клавиши Win+R, в появившемся окне Выполнить наберите services.msc и нажмите Enter.
- Нажмите клавиши Win+R, в появившемся окне Выполнить наберите cmd и нажмите Enter.
- Нажмите клавиши Win+R, в появившемся окне Выполнить наберите wf.msc и нажмите Enter.
Настройка синхронизации времени и часового пояса на сервере RLP
Для копирования файлов по сети из ОС Windows можно использовать WinSCP .
Команды можно вводить как локально на сервере, так и удалённо по SSH. Для удалённого подключения можно использовать PuTTY.
Данные для подключения по умолчанию:
Логин: root
Пароль: root (при наборе пароля он может не отображаться, даже символами "звёздочка")
- Выведите список городов, поддерживаемых службой времени и выберите ближайший:
Для списка городов Европы введите команду: timedatectl list-timezones | grep Europe
Для списка городов Азии введите команду: timedatectl list-timezones | grep Asia
Установите нужный часовой пояс командой: timedatectl set-timezone выбранный город
Пример: timedatectl set-timezone Asia/Vladivostok
Город нужно указать в том же виде, в котором он выводится командой timedatectl list-timezones , включая регистр букв. Если указать город неправильно, часовой пояс не изменится.
Источник
Как установить и настроить NTP на сервере
Работа многих служб ОС зависит от того, насколько точны системные часы. Для чего нужна эта точность? Затем, что неточное время на сервере повлечет за собой много неприятностей.
В качестве примера приведем следующий: если в локальной сети часы машин, которые совместно используют файлы, не будут синхронизированы, то нельзя будет установить время изменения файлов. Из-за этого возникнет конфликт версий или перезаписи данных. Без установки точного времени на сервере появятся и сложности с задачами Cron – непонятно, когда они запустятся. Невозможно будет проанализировать журналы системных событий, чтобы понять причины неисправностей и сбоев.
Для того чтобы эти неприятности не возникли, нужно наладить синхронизацию системных часов. Для этого используется протокол NTP (Network Time Protocol).
Как устроен протокол NTP
Протокол NTP основан на иерархической структуре сервера точного времени, где выделены разные уровни. К нулевому уровню, на котором NTP-серверы не работают, относятся так называемые эталонные часы.
С ними синхронизируются NTP серверы уровня 1, являющиеся источниками для серверов уровня 2. Серверы второго уровня синхронизируются с серверами первого уровня, но еще могут синхронизироваться между собой. Точно так же функционируют серверы третьего уровня и ниже. В целом, поддерживается порядка 256 уровней.
Иерархическая структура NTP является отказоустойчивой и избыточной. Так, резервные серверы берут синхронизацию на себя, когда речь идет об отказах соединения с вышестоящими серверами. Для расчета точного времени NTP берет данные ото всех источников, синхронизируясь с несколькими серверами.
Как установить и настроить NTP-сервер
Чтобы синхронизировать время, используют демон ntpd, который может быть как сервером, принимающим время из удаленных хостов, так и клиентом, раздающим время сторонним хостам. Демон ntpd зависит от указанных в файле конфигурации настроек.
Для установки сервера NTP используется стандартный менеджер пакетов $ sudo apt-get install ntp.
После установки все необходимые настройки NTP будут находиться в файле /etc/ntp.conf.
Первая строчка файла конфигурации – driftfile /var/lib/ntp/ntp.drift. В ней указан файл, в котором хранится информация о том, как часто смещается время. В этом же файле содержится и значение, которое было получено из предыдущих изменений времени. Если по каким-то причинам внешние NTP-серверы недоступны, знание берут из этого файла.
После этого нужно указать файл, сохраняющий логи синхронизации – logfile /var/log/ntp.log.
В файле конфигурации нужно указать перечень серверов NTP, с которыми нужно синхронизироваться. По умолчанию этот перечень выглядит вот так:
- server 0.ubuntu.pool.ntp.org
- server 1.ubuntu.pool.ntp.org
- server 2.ubuntu.pool.ntp.org
- server 3.ubuntu.pool.ntp.org
Эти строки означают группу серверов, которые сообщают серверу верное время. Через опцию iburst можно увеличить точность синхронизации, то есть указать то, что на сервер необходимо отправлять несколько пакетов вместо одного:
- server 0.ubuntu.pool.ntp.org iburst
- server 1.ubuntu.pool.ntp.org iburst
- server 2.ubuntu.pool.ntp.org iburst
- server 3.ubuntu.pool.ntp.org iburst
Еще можно донести информацию о нужном сервере через опцию prefer:
Ареал использования серверов NTP
Такие серверы есть во всем мире, но обычно синхронизация происходит с NTP-серверами именно того ареала, где физически находится ваш сервер. Таким образом, в файле конфигурации /etc/ntp.conf указывается поддомен ареала (региона) для pool.ntp.org:
- Азия – asia.pool.ntp.org
- Европа – europe.pool.ntp org
- Африка – africa.pool.ntp.org
- Северная Америка – north-america.pool.ntp.org
- Южная Америка – south-america.pool.ntp.org
- Океания – oceania.pool.ntp.org
- Россия – ru.pool.ntp.org
Резервный сервер точного времени
NTP-сервер, по какой-либо причине отключенный от интернета, может передавать для синхронизации данные своих системных часов. Для этого в конфигурационный файл нужно добавить следующую строку:
Особые случаи использования NTP
Например, NTP могут использовать, чтобы усилить трафик в DDoS-атаках. А чтобы избежать столкновения с различными злоупотреблениями, следует ограничить доступ для внешних клиентов. Говоря об ограничениях, то по умолчанию в /etc/ntp.conf файле выставлены такие:
- restrict − 4 default kod notrap nomodify nopeer noquery
- restrict − 6 default kod notrap nomodify nopeer noquery
Такие опции, как nomodify, notrap, nopeer и noquery, не позволяют внешним клиентам менять конфигурации на сервере. Параметр kod (расшифровывается как kiss of death, «смертельный поцелуй») дает дополнительный уровень защиты: клиент, который часто отправляет запросы, получает сперва kod-пакет, являющийся предупреждением о том, что в обслуживании отказано, а потом отключается от сервера.
Для синхронизации машин из локальной сети с сервером NTP в файл конфигурации добавляется такая строчка:
А для локального хоста устанавливается неограниченный доступ к серверу NTP:
Как проверить синхронизацию
После сохранения всех изменений в файле конфигурации NTP-сервер нужно перезагрузить:
А затем выполнить команду:
На выходе получится таблица, в которой указаны следующие параметры:
- remote – адрес сервера точного времени;
- refid – вышестоящий сервер;
- st – уровень (stratum) сервера;
- t – тип пира (u- unicast, m- multicast);
- when – время последней синхронизации;
- poll – время в секундах, за которое демон NTP синхронизируется с пиром;
- reach – состояние доступности сервера;
- delay – время задержки ответа от сервера;
- offset – временная разница между сервером и сервером синхронизации;
- jitter – смещение времени на удаленном сервере.
Слева от адреса сервера могут быть указаны еще и такие символы:
- * – сервер выбран для синхронизации;
- + – сервер, пригодный для синхронизации;
- – – с сервером синхронизироваться не стоит;
- х – сервер недоступен.
Чтобы проверить, насколько сервер подходит для синхронизации, нужно использовать команду ntpdate -q.
Как установить локальные дату и время
Чтобы установить локальные дату и время на сервере, нужно использовать команду ntpdate, при этом отправив необходимый запрос к серверу NTP:
Источник
Настраиваем NTP, Время, Часовой пояс
Сегодня пришлось повозиться на держателе домена (windows 2003) и корректно настроить ntp. Ниже будет информацию, которая мне помогла.
Процедура по восстановлению работоспособности сервиса w32tm
1. Находим все DC и того, кто из них PDC эмулятор
2. Проверяем доступность сервера времени с PDC эмулятора
portqry –n ntp.mydomain.ua –e 123 –p UDP Querying target system called: ntp.mydomain.ua Attempting to resolve name to IP address… Name resolved to 10.10.72.17
UDP port 123 (ntp service): LISTENING or FILTERED
Должно быть именно так “LISTENING or FILTERED”.
Эта утилита входит в комплект Support Tools для Windows 2003 Server. К сожалению, на Windows 2008 R2 она не работает.
3. В regedit открываем параметры ntp сервера
Там должен быть записан ip адрес или полное имя нашего ntp сервера и запись должна обязательно заканчиваться строкой “,0x1”. Кавычки, понятное дело, нужно убрать. Для уверенности в том, что тут нету ошибки, можно пропинговать указанный ntp-сервер.
4. Там же, следует перейти к параметру Type:
и убедиться, что там прописано NTP, а не NT5DS
5. Теперь следует проверить еще одно значение: AnnounceFlags
тут должна быть 5
6. Перезапускаем сервис времени:
7. Синхронизируемся:
8. На остальных контроллерах домена рекомендуется переустановить службу времени
Команда: «w32tm /unregister && w32tm /register» удаляет службу времени, а затем снова ее устанавливает, причем, что важно, удаляется, а затем создается заново вся ветка параметров в реестре.
9. Рекомендуется перезапустить контроллер домена, являющийся pdc эмулятором, да и все остальные тоже.
10. Если на pdc эмуляторе ошибки все равно наблюдаются, то стоит попробовать изменить формат клиентских запросов
Меняем значение с 0x1 на 0x8
11. Перезапускаем сервис времени
12. Рекомендуется проверить все политики, имеющие отношение к настройкам сервиса времени:
Default Domain Controllers group policy, Default Domain group policy и другие в которых изменены любые значения в разделе
Computer configuration/Administrative Templates /System/Windows Time service/Time Providers
Убедитесь, что все значения там в состоянии “not configured”. При необходимости, играть с параметрами следует позже.
Если что-то меняли в политике, то перезапускаем сервис времени: net stop w32time && net start w32time
13. Если так ничего не помогло, то нужно обнулить параметры сервиса времени и на pdc эмуляторе:
net stop w32time w32tm /unregister w32tm /register
После чего нужно будет настраивать все параметры заново, начиная с п.3.
Если вдруг, на этапе удаления напишет про запрет доступа, то нужно перезагрузиться.
Включение лога сервиса времени
В особо тяжелых случаях может помочь включение лога для сервиса. Для настройки этого используются три параметра в реестре по пути:
Если нижеприведенных ключей там нету, а их нету по умолчанию, то их следует создать
- FileLogSize, Type: DWORD, Data: 10000000 — максимальный размер лог-файла в байтах.
- FileLogName, Type: REG_SZ (String), Data: C:\Test\w32time_log.txt — адрес нахождения лог-файла
- FileLogEntries, Type: REG_SZ (String), Value: 0-116 — уровень детализации лога. Максимальный диапазон: 0-300.
Вместо изменения значений в реестре, можно то же самое сделать из командной строки:
Чтобы выключить логи отладки можно ввести команду:
Если Вы перенесли роль PDC Emulator на другой сервер, необходимо дополнительно выполнить настройку старого сервера командой
и перезапустить службу времени:
Первое решение проблемы «no time data was available»
Еще раз обращу внимание, что проблема была в доменных политиках.
Команда w32tm /resync выдавала ошибку
The computer did not resync because no time data was available.
Решено это было следующим образом:
- Start / Run / dsa.msc / OK.
- Right-click the Domain Controllers container and press Properties.
- Select the Group Policy tab.
- Select the Default Domain Controllers Policy and press Edit. If GPMC is implemented, press Open first.
- Expand Computer Configuration / Administrative Templates / System / Windows Time Service.
- Right-click Global Configuration Settings and press Properties.
- Select Not Configured.
- Press Apply and OK.
- Expand Windows Time Service.
- Double-click Enable Windows NTP Client.
- Select Not Configured.
- Press Apply and OK.
- Double-click Configure Windows NTP Client.
- Select Not Configured.
- Press Apply and OK.
- Double-click Enable Windows NTP Server.
- Select Not Configured.
- Press Apply and OK.
- Exit the Group Policy Editor.
- Close any open policy dialog boxes.
- Open a CMD.EXE window.
- Type gpupdate /force and press Enter.
Второе решение проблемы «no time data was available»
Во второй раз с этой же ошибкой с я столкнулся через пару лет. При попытке получить время от нашего cisco роутера, при помощи команды w32tm /resync, видел ошибку:
Sending resync command to local computer.
The computer did not resync because no time data was available.
Команда синхронизации отправлена на local computer.
Синхронизация не выполнена, поскольку нет доступных данных о времени.
При этом вышеописанные действия уже были совершены.
Служба win32time отсылала «симметрические пакеты»: в снифере wireshark я видел что windows сервер отсылает пакеты «NTP Version 3, symmetric active», но никакого ответа от CISCO не получал.
В логах службы сообщалось «No response from peer», а в логах роутера:
В этой случае мне помогла команда:
и перезапуск службы времени.
После этого в wireshark увидел нормальный обмен пакетами:
- windows сервер посылал пакеты «NTP Version 3, client»
- cisco роутер отвечал пакетами «NTP Version 3, server»
Настраиваем период синхронизации времени
Инструкция работает на компьютерах которые не включены в домен.
Переходим к редактированию реестра: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time \TimeProviders\NtpClient\SpecialPollInterval — ключ в реестре, задает период обновления синхронизации времени в системе в секундах. Вводим в десятичном формате необходимый период.
После этого перезагружаем компьютер или вводим команду w32tm /config /update
Проверить с какой периодичностью происходит синхронизация времени:
- Кликаем по часам в панели задач
- Переходим к «изменение настроек даты и времени», вкладка «Время по Интернету»
- Жмем кнопку «Изменить параметры»
- Убеждаемся что установлена галочка возле «Синхронизировать с сервером времени в Интернете»
- Выбираем нужный сервер, жмем кнопку «Обновить сейчас» и ждем пока не появиться надпись «Время было успешно синхронизировано», если же увидели надпись «Ошибка при выполнении синхронизации» то выбираем другой сервер.
- После успешной синхронизации жмем кнопку «ОК» и на вкладке «Время по Интернету» смотрим когда будет «Следующее выполнение синхронизации»
Указание часового пояса через групповые политики
- Открываем политику для контейнера где находиться компьютер
- Переходим к Конфигурация компьютера — Настройка — Конфигурация Windows — Реестр
- Левый клик по правой белой области в области «Реестр» и выбираем пункт меню «Создать» — «Мастер реестра»
- Выбираем компьютер на котором установлен нужный часовой пояс (у меня это локальный)
- В Браузере реестра переходим к «HKLM \ System \ CurrentControlSet \ Control \ TimeZoneInformation»
- Отмечаем все ключи в этой папке и жмем «готово»
- Все теперь на локальных компьютерах автоматически будет устанавливаться необходимый часовой пояс и после перезагрузки устанавливаться правильной время
Полезные команды связанные со службой времени ntp:
- netdom query fsmo — раскажет кто PDC (главный сервер времени в домене)
- w32tm /monitor
- w32tm /config /manualpeerlist:time.windows.com,0x1 /syncfromflags:manual /reliable:yes /update — команда которая настроит ваш доменный контроллер с ролью «Эмулятора PDC» на синхронизацию с внешним источником
- w32tm /stripchart /computer:time.windows.com /samples:5 /dataonly — 5 сравнений с источником
- net time /querysntp — показывает кто является ntp сервером
- w32tm /query /peers — показывает источник, сколько времени осталось до синхронизации, режим работы, страту, интервал опроса
- w32tm /query /status — отображает индикатор помех, старту, точность, задержку корня, дисперсию, время последней успешной синхронизации, источник и интервал опроса
- net time /setsntp:192.168.1.1 — задает ntp-сервер.
- w32tm /debug /enable /file:C:\Test\w32time_log.txt /size:100000 /entries:0-300 — включаем ведение лога службой времени
- w32tm /debug /disable — отключаем логирование
- w32tm /config /update — применить/обновить конфигурацию.
- w32tm /query /configuration — полный список параметров службы
Помните что после любых изменений в конфигурации ntp-службы нужно ее перезапускать, команда:
Источник
Делаем собственный NTP-сервер Stratum-1
Я проделывал эту работу примерно три года назад, когда в сети информации по этой теме было гораздо меньше. Основным источником моих познаний была документация из пакета ntp-doc (/usr/share/doc/ntp-doc/html/refclock.html), также её можно найти в сети.
- Радиостанции точного времени
Ничего сложного, берём подходящую частоту из справочника, паяем приёмник и преобразователь в удобный для компьютера интерфейс. ^_^
Я забросил этот вариант, т.к. напротив моей старой работы стояло здание то ли ФАПСИ, то ли ещё какой-то службы, в общем эфир был довольно зашумлён (-: - Телефон GSM или CDMA
Как-то я им не доверяю, хотя не самый плохой вариант. - Приёмник GPS или ГЛОНАСС
Этот вариант мне показался самым реальным.
Подключаем
Приёмник ГЛОНАСС тогда было сложно достать, поэтому я пошел в магазин и купил GPS-приёмник с RS232-м интерфейсом и внешней антенной. Антенну прилепил на металлический подоконник за окном, а приёмник соответственно подключил к COM-порту одного из серверов.
Первым делом нам нужно убедиться что приёмник «видит» спутники. Мой, например, в этом случае начинает весело подмигивать светодиодом.
Более универсальный способ — посмотреть что он отдаёт в COM-порт:
Тут мы должны увидеть дамп протокола NMEA.
Настраиваем
# Local Clock — если теряем спутники, то снижаем stratum до 10
server 127.127.1.0
fudge 127.127.1.0 stratum 10
# NMEA GPS driver
server 127.127.20.0 prefer
driftfile /var/lib/ntp/ntp.drift
restrict default nomodify notrust # Отдаём время всем
restrict 127.0.0.1 # Разрешаем себе всё
disable auth
logfile /var/log/ntp/messages
В строке server 127.127.20.0 число 20 — это ответ на «главный вопрос жизни, вселенной и вообще» номер соответствующего драйвера источника точного времени.
Перезапускаем NTPD и смотрим статус. Должно быть что-то подобное:
Надеюсь эта статья поможет увеличить количество хороших NTP-серверов в рунете (-;
[Важный UPD]
Мне тут человек постучался в IM, у него нет аккаунта на Хабре, просил меня прояснить ситуацию с переходниками COM-USB. Цитирую:
[UPD2]
Встречаем нового хабраколлегу brn!
Он уже успел написать топик про NMEA.
Источник