Налаштування NTP сервера в Windows.
Починаючи з Windows 2000 всі операційні системи Windows включають в себе службу часу 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.
Потім перезапускаємо службу часу командою net stop w32time && net start w32time
Після перезапуску служби 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-серверами за замовчуванням, а клієнтський режим можна задіяти в разі проблем із синхронізацією.Детальніше про режими синхронізації можна подивитися тут, або не морочитися і просто ставити всюди, 0x1 (як радить Microsoft).
Ще один важливий параметр 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).
Після установки необхідно оновити конфігурацію сервісу. Зробити це можна командою 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 виведе всі параметри служби.
Ну і на крайній випадок