Контакти

NTP - атомний годинник на кожному столі. Чим відрізняється протокол синхронізації часу NTP від \u200b\u200bSNTP? Ntp протокол

Навіщо потрібно точний час?

А кому взагалі потрібно це точний час? Звичайно, воно потрібно нам, користувачам, для того, щоб ми менше спізнювалися. Уявімо собі сучасний аеропорт - для його роботи сотні пілотів і диспетчерів повинні користуватися безпомилково йдуть годинами. Система реєстрації товарів на складах, лікарняні установи, каси з продажу залізничних квитків та багато інших установ вимагають, щоб час на всіх об'єктах системи в тій чи іншій мірі було однаково. Тим більше комп'ютери. На них працює маса служб і програм, для нормальної роботи яких необхідно точний час, причому, як правило, більш точне, ніж це зазвичай потрібно нам, людям. Системні служби, компоненти системи безпеки, та й просто прикладні програми можуть бути дуже критичні до точності годин. Найбільш яскравим прикладом таких служб є протокол аутентифікації Kerberos. Так, для його роботи необхідно, щоб на комп'ютерах, доступ до яких здійснюється з використанням цього протоколу, системне час відрізнялося не більше ніж на 5 хвилин. Крім того, точний час на всіх комп'ютерах значно полегшує аналіз журналів безпеки при розслідуванні інцидентів в локальній мережі.

протокол NTP

NTP (Network Time Protocol) - це протокол, призначений для синхронізації часу в мережі. Він являє собою набір досить складних алгоритмів, покликаних забезпечити високу точність (до декількох мікросекунд) і відмовостійкість системи синхронізації часу. Так, протокол передбачає одночасну синхронізацію з кількома серверами.

Існує кілька версій цього протоколу, мають деякі відмінності. Третя версія цього протоколу в 1992 році була стандартизована як RFC 1305. Четверта (остання на наразі) Версія привносить деякі поліпшення (автоматична конфігурація і аутентифікація, поліпшення алгоритмів синхронізації) в порівнянні з третьою, проте вона ще не стандартизована в RFC.

Крім того, крім протоколу NTP, існує протокол SNTP (Simple Network Time Protocol). На рівні пакетів ці два протоколу повністю сумісні. Основною відмінністю між ними є те, що SNTP не має складних систем фільтрації і багатоступінчастої коригування помилок, наявних в NTP. Таким чином, SNTP є спрощеною і легшою в реалізації версією NTP. Він призначений для використання в тих мережах, де не потрібно дуже висока точність часу, і в реалізації від корпорації Microsoft забезпечує точність в межах 20 секунд в рамках підприємства і не більше 2 секунд в межах одного сайту. Протокол SNTP стандартизований як RFC 1769 (версія 3) і RFC 2030 (версія 4).

Модель синхронізації NTP передбачає ієрархічну структуру. На першому рівні ієрархії розташовуються так звані «первинні» сервери часу (First stratum). Вони знаходяться в різних місцях по всьому світу і мають у своєму розпорядженні самим точним часом. Таких серверів відносно небагато, так як точний час на них підтримується за допомогою дорогого спеціалізованого обладнання (радіоканал, супутниковий канал). Сервери другого рівня (Second stratum) синхронізуються з серверами першого рівня, використовуючи протокол NTP. Їх вже значно більше, проте вони вже кілька рассінхронізіровани (від 1 до 20 мілісекунд) щодо «первинних» серверів. Далі можуть йти сервери третього, четвертого і наступних рівнів:

З переходом на кожен рівень трохи зростає похибка щодо первинного сервера, але зате збільшується загальна кількість серверів і, отже, зменшується їх завантаження. Тому в якості зовнішнього джерела синхронізації замість використання первинних серверів, що володіють найбільш точним часом, рекомендується використовувати вторинні сервери як менш завантажені.

Для синхронізації часу в ОС Windows 2000 / XP / 2003 використовується протокол SNTP. Підтримка цього протоколу реалізована у вигляді системної служби Windows Time, що входить до складу операційної системи MS Windows 2000 / XP / 2003. Відмінною особливістю цієї реалізації є те, що служба Windows Time підтримує доменну аутентифікацію при зверненні до еталонного сервера часу, що є важливим з точки зору безпеки.

Існує кілька варіантів роботи служби SNTP, що входить в Windows:

  • Ієрархічна (NT5DS). Використовується за замовчуванням для всіх комп'ютерів, об'єднаних в домен. Синхронізація часу на робочих станціях і серверах домена проводиться по ієрархії. Таким чином, робочі станції і рядові сервери синхронізуються з контролером домену, аутентифицироваться вхід, контролери домену - з господарем операції «емулятор PDC», який в свою чергу синхронізується з контролером домену, хто стоїть на більш високому рівні ієрархії. Слід зауважити, що даний порядок синхронізації використовується «за замовчуванням» і може бути перевизначений вручну або з використанням групових політик. Про те, як це зробити, буде розказано нижче.
  • Примусова синхронізація з обраним NTP-сервером (NTP). В даному випадку джерело еталонного часу для служби Windows Time встановлюється або вручну, або за допомогою групових політик.
  • Відключення синхронізації (NoSync). Цей режим необхідний для змішаної схеми підтримки часу, в якій для синхронізації із зовнішнім джерелом використовується продукт третьої фірми, а для підтримки часу в рамках домену використовується Windows Time.

Таким чином, в разі робочої групи синхронізацію часу все одно доведеться налаштовувати вручну. Наприклад, один з комп'ютерів можна налаштувати на синхронізацію із зовнішнім сервером по протоколу SNTP, а решта - на синхронізацію з ним. Необхідні для цього дії будуть описані нижче.

Для домену рекомендується використовувати ієрархічну синхронізацію по протоколу SNTP. У більшості випадків вона забезпечує прийнятну точність системного часу в рамках лісу домену. Крім того, вона автоматично забезпечує безпеку поновлення часу, завдяки підтримці аутентифікації з Active Directory. Для підтримки «правильного» часу в домені необхідно синхронізувати контролер домену верхнього рівня, який володіє роллю «емулятор PDC», з зовнішнім NTP-сервером. У нашому прикладі в ролі такого сервера буде виступати Linux-машина з працюючим демоном ntpd.

Налаштування SNTP в Windows

Для настройки служби Windows Time використовуються дві утиліти:

  • Net time
  • W32tm

Net time використовується головним чином для конфігурації служби часу, а w32tm - для моніторингу та діагностики роботи. Однак в Windows XP / 2003 утиліта w32tm зазнала суттєвих змін і може бути використана для зміни служби часу. Налаштування NTP далі буде проводитися на прикладі Windows XP / 2003.

Отже, для того щоб «вручну» вказати джерело синхронізації за допомогою net time, досить написати в командному рядку:

et time / setsntp: спісок_серверов_времені_через_пробел

Для отримання інформації про поточний сервері часу:

net time / querysntp

Дізнатися час на контролері домену можна так:

net time / domain: ім'я_домена

А синхронізувати час з контролером домену ось так:

Net time / domain: ім'я_домена / set

Системної утилітою w32tm можна зробити все те ж саме і навіть більше:

  • w32tm / resync - за допомогою цієї команди можна змусити локальний або віддалений комп'ютер синхронізувати показання своїх системних годин з використовуваним їм сервером часу.
  • w32tm / config - ця команда використовується для конфігурації служби Windows Time. З її допомогою можна задати список використовуваних серверів часу і тип синхронізації (ієрархічна або обрана серверами).

Наприклад, для того щоб перевизначити значення за замовчуванням і налаштувати синхронізацію часу із зовнішнім джерелом, можна скористатися командою:

w32tm / config / syncfromflags: manual / manualpeerlist: PeerList

А для того щоб Windows Time застосувала нові настройки, замість перезапуску служби можна використовувати команду:

w32tm / config / update

Крім того, в w32tm доступні наступні параметри, пов'язані з моніторингом часу на комп'ютерах:

  • w32tm / monitor - за допомогою цієї опції можна дізнатися, наскільки системне час даного комп'ютера відрізняється від часу на контролері домену або інших комп'ютерах.
  • w32tm / stripchart - графічно показує різницю в часі між поточним і віддаленим комп'ютером.
  • w32tm / register - реєструє службу Windows Time в якості служби на даному комп'ютері. Ця опція може бути корисна на комп'ютерах, що не входять в домен, так як за замовчуванням на них служба часу зупинена.

Більш докладні відомості про параметри утиліт net time і w32tm можна отримати, використовуючи ключ /? або відкривши відповідний розділ довідкової системи «Help and Support Center» MS Windows XP / 2003.

Неважко здогадатися, що настройки служби Windows Time зберігаються в реєстрі Windows в розділі HKEY_LOCAL_MACHINE \\ SYSTEM \\ CurrentControlSet \\ Services \\ W32Time \\.

У корені розділу визначаються параметри роботи самої служби, в подключе Config - настройки, пов'язані з роботою самого протоколу SNTP, режим синхронізації визначається в подключе Parameters. Налаштування SNTP клієнта і сервера знаходяться в підключитися TimeProviders \\ NtpClient і TimeProviders \\ NtpServer відповідно. Розглянемо основні значення, що визначають настройку NTP клієнта і сервера:

  • Type - визначає режим роботи NTP-клієнта (NTDS5 - ієрархічна, NTP - «вручну», NoSync - не виконувати синхронізацію, AllSync - доступні всі типи синхронізації);
  • Enabled - визначає, чи включений даний компонент (клієнт або сервер);
  • CrossSiteSyncFlags - визначає, чи можна синхронізувати час з джерелом, що знаходиться за межами домену, в разі якщо використовується ієрархічна синхронізація (0 - не можна, 1 - тільки з емулятором PDC, 2 - з усіма);
  • EventLogFlags - визначає, чи будуть повідомлення від Windows Time заноситися в журнал чи ні (дуже корисна функція при налагодженні роботи).

Інший варіант настройки служби часу Windows Time - використання групових політик. Налаштування визначаються в об'єкті групової політики за наступною адресою: «Computer Configuration -\u003e Administrative Templates -\u003e System -\u003e Windows Time Service».

Якщо у вас встановлений Windows 2000 Server і такого налаштування ви не знайшли - не впадайте у відчай, вам просто потрібно оновити «Адміністративні шаблони». Для цього скопіюйте з системної папки system32 \\ GroupPolicy \\ Adm будь-якої машини з встановленої Windows XP все.adm-файли на сервер, який є контролером домену. Далі, визначаючи об'єкт групової політики, натисніть правою кнопкою на «Administrative templates» і виберіть «Add / Remove templates ...» Видаліть перераховані там шаблони і додайте скопійовані. Після натискання кнопки «OK» шаблони будуть оновлені, і ви зможете настроїти службу часу, використовуючи групові політики:

Неважко помітити, що тут головним чином перераховані всі ті настройки, які можна змінювати в реєстрі. Нічого дивного в цьому немає, адже саме так і працює більшість групових політик.

В ОС Windows XP з'явився ще один спосіб завдання сервера часу, який може бути дуже зручний для настройки синхронізації на домашньому комп'ютері або комп'ютері, що входить в робочу групу:

NTP-сервер під Linux - зовнішня синхронізація для Windows-домена

Як було сказано вище, протокол NTP більш стійкий до помилок, тому в якості джерела еталонного часу для зовнішньої синхронізації краще використовувати NTP-сервер. До того ж не завжди у контролера домену верхнього рівня є доступ до Інтернету по порту UDP 123, використовуваного для роботи NTP. Доступ цілком може бути закритий з міркувань безпеки, що є звичайною практикою великих організацій. У таких випадках для вирішення цієї проблеми можна встановити в демілітаризованій зоні - DMZ - свій сервер часу, налаштований на синхронізацію із зовнішнім джерелом, і використовувати його в якості еталонного джерела часу для синхронізації контролера домену верхнього рівня. В якості такого комп'ютера цілком підійде будь-яка, не обов'язково сучасна машина з * nix-подібної ОС, наприклад, Linux, встановленої в мінімальній конфігурації, без X-сервера і інших потенційно уразливих речей.

Існує маса програм для синхронізації часу для ОС Linux. Найбільш відомими є Xntpd (NTP версія 3), ntpd (NTP версія 4), Crony і ClockSpeed. У нашому прикладі ми будемо використовувати ntp-сервер ntpd, що входить до складу Redhat 9, що поставляється в пакеті ntp-4.1.2-0.rc1.2.i386.rpm.

До складу пакету входить декілька програм, призначених для роботи з NTP.

Ось основні з них:

  • Ntpd - демон ntp, що підтримує точний час в фоновому режимі;
  • Ntpq - утиліта, призначена для опитування NTP-серверів, що підтримують стандартний протокол опитування NTP mode 6. З її допомогою можна дізнатися і змінити поточний стан сервера, якщо його настройки це дозволяють;
  • Ntptdc - утиліта, за допомогою якої можна опитувати демон ntpd і отримувати статистику його роботи;
  • Ntpdate - програма для установки поточного системного часу з використанням протоколу NTP.

Стандартної можливістю протоколу NTP є можливість проведення аутентифікації. При цьому можуть використовуватися як симетричні алгоритми (DES), що з'явилися ще в другій версії протоколу, так і несиметричні алгоритми, з відкритим ключем, що є нововведенням четвертої версії.

У разі використання симетричною схеми аутентифікації клієнт і сервер вибирають довільний ідентифікатор і один з 65534 ключів, визначених стандартом. При використанні несиметричних алгоритмів, використовується так звана схема Autokey, відмінною рисою якої є відсутність необхідності попередньо розподіляти відкриті ключі серверів.

Для настройки аутентифікації в ntpd існують утиліти ntp-genkeys, ntpq і ntpdc.

Вся функціональність NTP, пов'язана з підтримкою точного часу, реалізована в демона ntpd. Його настройка проводиться звичайним для UNIX способом - шляхом редагування конфігураційного файлу ntp.conf, що знаходиться в папці / etc.

Задамо наступні опції для роботи NTP-сервера.

Спочатку зазначимо сервери, з якими буде проводитися синхронізація часу:

server ntp.nasa.gov # A stratum 1 server at nasa.org
server ntp1.demos.net # A stratum 2 server at demos.net

restrict ntp.research.gov mask 255.255.255.255 nomodify notrap noquery

Тут маска 255.255.255.255 використовується для обмеження доступу до нашого сервера з боку сервера ntp.nasa.gov. Тепер визначимо список вузлів в нашій локальній мережі, яким ми хочемо дозволити доступ до нашого NTP-сервера для отримання часу:

restrict 192.168.1.0 mask 255.255.255.0 notrust nomodify notrap

Також нам потрібно, щоб Linux-машина мала повний доступ до ресурсів свого сервера:

restrict 127.0.0.1

І тепер найважливіше: ми повинні переконатися в тому, що заборона за замовчуванням, який має більш високий пріоритет, закоментований:

#restrict default ignore

Після збереження файлу ntp.conf настройку можна вважати закінченою, проте може так статися, що після запуску демона час все ще не буде синхронізуватися. Справа в тому, що протокол NTP спочатку розроблявся як протокол підтримки часу, а не його установки. Тому, якщо різниця між показаннями годин досить велика (більше ніж кілька хвилин), то синхронізація проводитися не буде. У цьому випадку має сенс спочатку встановити час вручну за допомогою команди ntpdate (також можна додати команду ntpdate в стартові скрипти машини):

# Ntpdate clock.vsu.ru
17 Feb 23:44:54 ntpdate: step time server 198.123.30.132 offset 25.307598 sec

17 Feb 23:45:05 ntpdate: adjust time server 198.123.30.132 offset 0.002181 sec
# Ntpdate clock.vsu.ru

Запуск ntp-демона проводиться через ініціалізацій скрипти. Якщо програма встановлювалася з rpm-пакету, то швидше за все всі питання, пов'язані з її автоматичним запуском, вже вирішені. Для того щоб в цьому переконатися, можна скористатися командою:

# Chkconfig -list ntpd
ntpd 0: on 1: off 2: off 3: on 4: off 5: on 6: off

Якщо ви не бачите цього рядка, значить, автоматичний запуск ntpd не налаштований. Щоб це виправити, наберіть:

# Chkconfig -level 035 ntpd on

Для управління NTP (старт, запуск, перезапуск, статус) використовуються стандартний ініціалізації скрипт:

# /Etc/init.d/ntpd start

Для перегляду статистики синхронізації сервера можна скористатися наступною командою:

# Ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
* Tick.usnogps.na .USNO. 1 u 38 64 377 220.00 0.149 7.08
-navobs1.wustl.e .PSC. 1 u 55 64 377 193.47 6.857 4.81
-ntp-nasa.arc.na .GPS. 1 u 43 64 377 254.88 7.471 9.58
-ntp0.NL.net .GPS. 1 u 144 512 377 122.54 12.515 13.75
-ntp2.ien.it .IEN. 1 u 558 1024 377 133.94 14.594 41.99
+ Timekeeper.isi. .GPS. 1 u 13 64 377 245.30 3.454 15.08
+ News-zero.demos ntp0.usno.navy. 2 u 16 64 377 37.51 -3.239 11.14
LOCAL (0) LOCAL (0) 10 l - 64 377 0.00 0.000 10.01

Режими роботи NTP сервера / клієнта

Клієнт / сервер

Цей режим на сьогоднішній день найбільш часто використовується в мережі Інтернет. Схема роботи - класична. Клієнт посилає запит, на який протягом деякого часу сервер надсилає відповідь. Налаштування клієнта проводиться за допомогою директиви server в файлі конфігурації, де вказується DNS ім'я сервера часу.

Симетричний активний / пасивний режим

Цей режим використовується в тому випадку, якщо проводиться синхронізація часу між великою кількістю рівноправних машин. Крім того, що кожна машина синхронізується із зовнішнім джерелом, вона також здійснює синхронізацію зі своїми сусідами (peer), виступаючи для них в якості клієнта і сервера часу. Тому навіть якщо машина «втратить» зовнішнє джерело, вона все ще зможе отримати точний час від своїх сусідів. Сусіди можуть працювати в двох режимах - активному і пасивному. Працюючи в активному режимі, машина сама передає свого часу всім машинам-сусідам, перерахованим в секції peers конфігураційного файлу ntp.conf. Якщо ж в цій секції сусіди не вказані, то вважається, що машина працює в пасивному режимі. Для того щоб зловмисник не зміг скомпрометувати інші машини, представившись як активного джерела, необхідно використовувати аутентифікацію.

режим Broadcast

Цей режим рекомендується використовувати в тих випадках, коли мала кількість серверів обслуговує велику кількість клієнтів. Працюючи в цьому режимі, сервер періодично розсилає пакети, використовуючи широкомовна адресу підмережі. Клієнт, налаштований на синхронізацію таким способом, отримує широкомовний пакет сервера і виробляє синхронізацію з сервером. Особливістю цього режиму є те, що час доставляється в рамках однієї підмережі (обмеження broadcast-пакетів). Крім того, для захисту від зловмисників необхідно використовувати аутентифікацію.

режим Multicast

Даний режим багато в чому схожий на broadcast. Відмінність полягає в тому, що для доставки пакетів використовуються multicast-адреси мереж класу D адресного простору IP-адрес. Для клієнтів і серверів задається адреса multicast-групи, яку вони використовують для синхронізації часу. Це робить можливим синхронізацію груп машин, розташованих в різних подсетях, за умови, що з'єднують їх маршрутизатори підтримують протокол IGMP і налаштовані на передачу групового трафіку.

режим Manycast

Цей режим є нововведенням четвертої версії протоколу NTP. Він має на увазі пошук клієнтом серед своїх мережевих сусідів manycast-серверів, отримання від кожного з них зразків часу (з використанням криптографії) і вибір на підставі цих даних трьох «кращих» manycast-серверів, з якими клієнт буде робити синхронізацію. У разі виходу з ладу одного з серверів клієнт автоматично оновлює свій список.

Для передачі зразків часу клієнти і сервери, що працюють в manycast-режимі, використовують адреси multicast-груп (мережі класу D). Клієнти і сервери, що використовують один і той же адресу, формують одну асоціацію. Кількість асоціацій визначається кількістю використовуваних multicast-адрес.

Часто виникають питання

Чому після команди net time / setsntp: server часом не синхронізується?

Переконайтеся, що для служби w32time заданий тип запуску «Автоматично».
Переконайтеся, що порт UDP 123 використовуваного NTP-сервера доступний.
Переконайтеся, що час між клієнтом і сервером не відрізняється занадто сильно.

Чи може SNTP-клієнт синхронізуватися з NTP-сервером?

Так, може, так як протокол SNTP є підмножиною NTP і повністю з ним сумісний.

Чи можна використовувати NTP-сервер від третіх виробників в ОС Windows 2000 / XP / 2003?

Так, можна скористатися будь-яким сервером, платним або безкоштовним. Попередньо слід відключити відповідні компоненти (клієнтські або серверні) служби Windows Time.

Чому NTP-клієнт не працює на комп'ютері з встановленим MS SQL Server?

Швидше за все проблема полягає в тому, що SQL Server якимось чином займає порт UDP 123. В якості вирішення можна запропонувати запуск клієнта NTP до MS SQL Server.

Демона ntpd після запуску працює 10-20 хвилин, після чого зупиняється. В чому може бути проблема?

Переконайтеся, що час клієнта і сервера відрізняється не занадто сильно (не більше 5 хвилин). В іншому випадку виконайте примусову синхронізацію за допомогою ntpdate.

Чи можна синхронізувати час в OS Windows NT4, 95, 98, Me?

Можна, за допомогою програм третіх фірм, наприклад, NetTime, Automacahron, World Time5, ntpd Windows NT port.

При спробі входу в домен Windows з'являється повідомлення, що час між контролером домену та робочою станцією відрізняється занадто сильно, при тому, що синхронізація точно налаштована.

Швидше за все проблема в тому, що час збилося дуже сильно (скидання CMOS, хакерська диверсія) і службі не вдається пройти аутентифікацію по протоколу Kerberos. Для вирішення цієї проблеми потрібно або вручну підвести час, або не використовувати цей вид аутентифікацію при оновленні часу.

Доброго дня, гості та постійні читачі. Поступово переходжу від основ до більш поглибленого вивчення Linux. Сьогодні хочу розглянути роботу протоколу ntp, А так само настройку сервера часу на Linux (Ntp server). Отже, почнемо з теорії.

протокол NTP

Network Time Protocol (NTP) - мережевий протокол для синхронізації внутрішнього годинника комп'ютера з використанням мереж зі змінною латентністю (читай "шириною" / якістю каналу).

NTP використовує для своєї роботи протокол UDP і порт 123.

Поточна версія протоколу - NTP 4. NTPвикористовує ієрархічну систему «Часових рівнів» (Їх так само називають Stratum). Рівень 0 (або Stratum 0) - це, звичайно, пристрої, що представляють собою атомний годинник (молекулярні, квантові), GPS годинник або годинник із радіо. Дані пристрої зазвичай не публікуються у всесвітню мережу, а підключаються безпосередньо до серверів часу рівня 1за допомогою протоколу RS-232 (на ілюстрації позначені жовтими стрілками). рівень 1 синхронізований з високоточними годинниками рівня 0, Зазвичай працюють в якості джерел для серверів рівня 2. рівень 2 синхронізується з однією з машин рівня 1, А так само можлива синхронізація з серверами свого рівня. рівень 3 працює аналогічно другому. Зазвичай в мережу публікуються сервера рівнів від другого і нижче. протокол NTP підтримує до 256 рівнів. Так само хочеться відзначити, що сервера рівнів 1 і 2, а іноді і 3 не завжди відкриті для загального доступу. Іноді, щоб синхронізуватися з ними, необхідно надіслати запит поштою - адміністраторам домену.

Для чого робиться обмеження на доступ до серверів? З переходом на кожен рівень трохи зростає похибка щодо первинного сервера, але зате збільшується загальна кількість серверів і, отже, .

Призначення сервера NTP в локальній мережі

Для чого нам може знадобитися NTP server? Наприклад, існують служби в операційних системах, які можуть залежати від синхронізованого часу. Найбільш яскравим прикладом таких служб є протокол аутентифікації Kerberos. Для його роботи необхідно, щоб на комп'ютерах, доступ до яких здійснюється з використанням цього протоколу, системне час відрізнялося не більше ніж на 5 хвилин. Крім того, точний час на всіх комп'ютерах значно полегшує аналіз журналів безпеки при розслідуванні інцидентів в локальній мережі.

Режими роботи NTP сервера / клієнта

Клієнт / сервер

Цей режим на сьогоднішній день найбільш часто використовується в мережі Інтернет. Схема роботи - класична. Клієнт посилає запит, на який протягом деякого часу сервер надсилає відповідь. Налаштування клієнта проводиться за допомогою директиви server в файлі конфігурації, де вказується DNS ім'я сервера часу.

Симетричний активний / пасивний режим

Цей режим використовується в тому випадку, якщо проводиться синхронізація часу між великою кількістю рівноправних машин. Крім того, що кожна машина синхронізується із зовнішнім джерелом, вона також здійснює синхронізацію зі своїми сусідами (peer), виступаючи для них в якості клієнта і сервера часу. Тому навіть якщо машина «втратить» зовнішнє джерело, вона все ще зможе отримати точний час від своїх сусідів. Сусіди можуть працювати в двох режимах - активному і пасивному. Працюючи в активному режимі, машина сама передає свого часу всім машинам-сусідам, перерахованим в секції peers конфігураційного файлу ntp.conf. Якщо ж в цій секції сусіди не вказані, то вважається, що машина працює в пасивному режимі. Для того щоб зловмисник не зміг скомпрометувати інші машини, представившись як активного джерела, необхідно використовувати аутентифікацію.

режим Broadcast

Цей режим рекомендується використовувати в тих випадках, коли мала кількість серверів обслуговує велику кількість клієнтів. Працюючи в цьому режимі, сервер періодично розсилає пакети, використовуючи широкомовна адресу підмережі. Клієнт, налаштований на синхронізацію таким способом, отримує широкомовний пакет сервера і виробляє синхронізацію з сервером. Особливістю цього режиму є те, що час доставляється в рамках однієї підмережі (обмеження broadcast-пакетів). Крім того, для захисту від зловмисників необхідно використовувати аутентифікацію.

режим Multicast

Даний режим багато в чому схожий на broadcast. Відмінність полягає в тому, що для доставки пакетів використовуються multicast-адреси мереж класу D адресного простору IP-адрес. Для клієнтів і серверів задається адреса multicast-групи, яку вони використовують для синхронізації часу. Це робить можливим синхронізацію груп машин, розташованих в різних подсетях, за умови, що з'єднують їх маршрутизатори підтримують протокол IGMP і налаштовані на передачу групового трафіку.

режим Manycast

Цей режим є нововведенням четвертої версії протоколу NTP. Він має на увазі пошук клієнтом серед своїх мережевих сусідів manycast-серверів, отримання від кожного з них зразків часу (з використанням криптографії) і вибір на підставі цих даних трьох «кращих» manycast-серверів, з якими клієнт буде робити синхронізацію. У разі виходу з ладу одного з серверів клієнт автоматично оновлює свій список.

Для передачі зразків часу клієнти і сервери, що працюють в manycast-режимі, використовують адреси multicast-груп (мережі класу D). Клієнти і сервери, що використовують один і той же адресу, формують одну асоціацію. Кількість асоціацій визначається кількістю використовуваних multicast-адрес.

Час в Linux

Коротко розповім, який час існує в Linux і як його поставити. У Linux, як і в іншій ОС, існує 2 години. перші - апаратні , Іноді звані Real Time Clock, Скорочено ( RTC) (Вони ж - годинник BIOS) зазвичай вони пов'язані з вагається кварцовим кристалом, що має точність ходу до декількох секунд в день. Точність залежить від різних коливань, наприклад, навколишньої температури. Другий годинник - внутрішні програмні годинник , Які йдуть безперервно, в тому числі і при перервах в роботі системи. Вони схильні до відхилень, пов'язаних з великою системної навантаженням і затримкою переривань. Однак система зазвичай зчитує показання апаратних годин при завантаженні і потім використовує системний годинник.

Дата і час операційної системи встановлюється при завантаженні на підставі значення апаратних годин, а також налаштувань часового поясу. Налаштування часового поясу беруться з файлу / Etc / localtime. Даний файл - є посилання (але частіше - копія) одного з файлів в структурі каталогу / Usr / share / zoneinfo /.

Апаратні годинник Linux можуть зберігати час в форматі UTC(Аналог GMT), або поточний територіальне час. Загальна рекомендація в тому, який час встановлювати (?) Наступна: якщо на комп'ютері встановлено кілька ОС і одна з них - Windows, то необхідно використовувати поточний час (тому що Windows бере час з BIOS / CMOS і вважає його локальним). Якщо використовуються тільки операційні системи UNIX сімейства, то бажано зберігати час в BIOS в UTC форматі.

Після завантаження операційної системи, годинник операційної системи і BIOS повністю незалежні. Ядро системи раз в 11 секунд синхронізує системний годинник з апаратними.

Через деякий час між апаратними та програмними годинами може бути різниця в кілька секунд. Які ж години містять правильний час? Ні ті, ні інші, поки ми не налагодимо синхронізацію часу.

Примітка:

Ядро Linux "а завжди зберігає і обчислює час, як число секунд минули з півночі 1-го січня 1970 року, В незалежності від того, встановлені наші дні на локальне або всесвітній час. Перетворення в локальне час проводиться в процесі запиту.

Оскільки кількість секунд з 1-го січня 1970 року всесвітнього часу зберігається як знакова 32-бітове ціле (це справедливо для Linux / Intel систем), ваш годинник перестануть працювати десь в 2038 році. Linux не має проблеми 2000-го року, але має проблему 2038 року. На щастя, на той час все linux "и будуть запущені на 64-х розрядних системах. 64-х бітове ціле буде містити наш годинник приблизно до 292 271-мільйонного року.

NTP Server Linux

Вступ

Існує маса реалізацій для синхронізації часу для ОС Linux. Найбільш відомими є Xntpd (NTP версія 3), ntpd (NTP версія 4), Crony і ClockSpeed. У нашому прикладі ми будемо використовувати ntp-сервер ntpd.

Демон ntpd є одночасно і сервером часу і клієнтом, в залежності від налаштувань конфігураційного файлу /etc/ntpd.conf (іноді /etc/ntp.conf), демон може і "приймати" час з приділеною серверів і "роздавати" іншим хостам час.

Загальна схема синхронізації часув локальній мережі наступна: необхідно мати 1 або 2 сервера, що мають доступ до глобальної мережі, які будуть отримувати час з інтернет. Всі комп'ютери локальної мережі синхронізувати з зазначеними серверами, які отримують час з інтернет.

установка ntpd

власне, установка демона зводиться до установки наступних пакетів: ntp (Пакет включає самого демона), ntpdate(Утиліта для ручної синхронізації часу - застаріла), ntp-doc (Документація по пакету), в деяких дистрибутивах потрібно буде встановити так само ntp-utils (Утиліти для діагностики), в деяких вони включені в пакет ntp. Як проводити встановлення програм в Linux, я описував в. Після установки пакета, в більшості дистрибутивів, демон буде вже налаштований як як ntp-клієнт (наприклад в Debian було так). Відповідно, автоматично були створені основні конфігураційні файли: /etc/ntp.conf і /var/lib/ntp/ntp.drift і автоматом запущений демон.

Перед налаштуванням демона на синхронізацію із зовнішнім світом я б порадив встановити поточну системну дату на значення, максимально наближене до реального часу. Установка дати в Linux виробляється командою: date MMDDhhmmCCYY.ss,де MM - місяць, DD - день місяця, hh - годинник, mm - хвилини, CCYY - 4 цифри року, ss - секунди. При цьому, значення CCYY.ss вказувати не обов'язково.

Як видно, зазначена команда встановить поточні дату і час на 27 грудня 2010року, 20:06:30. команда date без параметрів, виводити поточний системний час. У даній команди є купа параметрів, з якими можна ознайомитися в man date.

Так само, необхідно правильно налаштувати апаратні годинник і часовий пояс. Як говорилося вище, часовий пояс налаштовується копіюванням необхідного файлу зони з каталогу / Usr / share / zoneinfo /в файл / Etc / localtime:

Ntp-server: ~ # cp / usr / share / zoneinfo / Europe / Moscow / etc / localtime

апаратні годинник я налаштував на UTC:

# Cat / etc / sysconfig / clock | grep UTC # UTC \u003d true indicates that the clock is set to UTC; UTC \u003d true ntp2-server: ~ # cat / etc / default / rcS | grep UTC UTC \u003d yes

У першому прикладі вказано конфігураційний файл, який визначає використання UTC для RH, другий - для Deb-дистрибутивів.

Крім установки налаштувань на використання часу в форматі UTC, необхідно задати апаратне час. (В більшості випадків в цьому немає необхідності, тому що заданий системний час неминуче синхронізується з апаратним, силами ядра). Але все ж, якщо у вас є бажання це зробити ... команда hwclock читає і встановлює апаратні годинник на підставі переданих йому параметрів. Доступні параметри описані в його довідці команди. Ось кілька прикладів використання hwclock:

Ntp-server # hwclock # зчитує час з апаратних годин ntp-server # hwclock --systohc --utc # встановлює час апаратних годин рівним # UTC на підставі системного часу ntp-server # hwclock --systohc # встановлює час апаратних годин # рівним місцевим на підставі системного часу ntp-server # hwclock --set --date "22 Mar 2002 13:17" # встановлює час апаратних годин # рівним зазначеному рядку

Іншим варіантом зміни часу в апаратних годиннику - це доступ в BIOS при завантаженні системи. Оскільки час ОС незалежно від апаратних годин, будь-які зміни в BIOS будуть враховані при наступному завантаженні.

Тепер, коли у нас все підготовлено і встановлено, приступимо до на будівництві.

Управління демоном ntpd

управління демоном ntpd нічим не відрізняється від управління будь-якими іншими демонами. Запуск або перезапуск служби ntpd:

# / Etc / init.d / ntp start # / etc / init.d / ntp restart

зупинка:

# / Etc / init.d / ntp stop

# / Bin / kill `cat / var / run / ntpd.pid`

Демон має наступні параметри запуску:

P - PID-файл,
-g - дозволити перехід на великий скачок часу
-c - конфиг файл
-q - примусова ручна синхронізація

Налаштування сервера ntpd

Насамперед, пораджу змінити параметри запуску демона в наступному файлі конфігурації:

Ntp-server: ~ # cat / etc / default / ntp NTPD_OPTS \u003d "- g"

# Cat / etc / sysconfig / ntpd # Parameters for NTP daemon. # See ntpd (8) for more details. .... # Specifies additional parameters for ntpd. NTPD_ARGS \u003d "- g"

Даний параметр дозволить синхронізувати годинник, навіть якщо утворилася дуже велика різниця в часі.

Отже, як я вже говорив, інформація про конфігурацію демона ntpdлежить в файлі /etc/ntp.conf. Синтаксис файлу стандартний, як і в багатьох інших конфігах: порожні рядки і рядки, що починаються з символу "#" ігноруються. Ось простий приклад:

Ntp-server: ~ # cat /etc/ntp.conf server ntplocal.example.com prefer server timeserver.example.org server ntp2a.example.net driftfile /var/db/ntp.drift

параметр serverзадає, які сервери будуть використовуватися для синхронізації, по одному в кожному рядку. Якщо сервер заданий з аргументом prefer, як ntplocal.example.com, То цього сервера віддається перевага перед іншими. Відповідь від переважного сервера буде відкинутий, якщо він значно відрізняється від відповідей інших серверів, в іншому випадку він буде використовуватися безвідносно до інших відповідей. аргумент preferзазвичай використовується для серверів NTP, про які відомо, що вони дуже точні, такими, на яких використовується спеціальне обладнання точного часу.

параметр driftfileзадає файл, який використовується для зберігання зсуву частоти системних годин. На скільки я зрозумів, даний файл постійно зберігає якесь значення, яке формується на підставі аналізу минулих коригувань часу і якщо зовнішні джерела часу стають недоступні, то коригування часу відбувається за значенням з файлу drift. Він не повинен змінюватися ніякими іншими процесами. І перед зазначенням даного файлу в конфігурації - файл повинен бути створений.

За замовчуванням сервер NTP буде доступний всім хостам в Інтернет. параметр restrictу файлі /etc/ntp.conf дозволяє вам контролювати, які машини можуть звертатися до вашого сервера. Якщо ви хочете заборонити всім машинам звертатися до вашого сервера NTP, Додайте наступний рядок в файл /etc/ntp.conf:

restrict default ignore

Якщо ви хочете дозволитисинхронізувати свій годинник з вашим сервером тільки машинам у вашій мережі, але заборонитиїм налаштовувати сервер або бути рівноправними учасниками синхронізації часу, то замість зазначеної додайте рядок:

restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

де 192.168.1.0 є IP адресою вашої мережі, а 255.255.255.0 її мережевий маскою. /etc/ntp.conf може містити кілька директив restrict.

Для коректної і більш точної роботи демона, бажано вибрати сервера рівня - від stratum 2 (можна звичайно stratum1, але доведеться вбити час на пошуки такого сервера) і з обраних stratum 2 ті, до яких мінімальне "відстань". Зазвичай такі сервера можуть надаватися вашим провайдером. Кількість обираних серверів бажано - більше 2-х 3-х, чим більше тим краще, але в розумних межах. Якщо Вам лінь вибирати кращі сервера, то можна взяти список відкритих серверів другого рівня звідси: http://support.ntp.org/bin/view/Servers/StratumTwoTimeServers.

Вибираємо список еталонних NTP серверів

Йдемо за вказаною адресою (http://support.ntp.org/bin/view/Servers/StratumTwoTimeServers) і підбираємо список початкових серверів. з даного списку вибираємо задовольняє нашим вимогам сервери, за допомогою аналізу виведення команди ntpdate. При виконанні команди, застосовується наступний синтаксис:

ntpdate параметри сервери_через_пробел

Для того щоб наш запит не вносив зміни в систему, необхідно використовувати параметр -q, який вказує на використання запиту без внесення змін. Так само, можливо використовувати ключ -d, який вказує, що команда буде виконуватися в отладочном режимі, з висновком додаткових відомостей, без внесення реальних змін (при цьому ключі виводиться купа іншого сміття :), який нам в даний момент не потрібний). Інші параметри можна подивитися в man 8 ntpdate. Із зазначеної посилання я вибрав все сервера Open Access, розташовані в Росії (RU) + той, який надав провайдер і запустив команду, вийшло приблизно наступне:

Ntp-server: ~ # ntpdate -q ntp2.ntp-servers.net ntp1.vniiftri.ru ntp2.vniiftri.ru ntp4.vniiftri.ru ntp0.ntp-servers.net ntp1.ntp-servers.net ntp3.vniiftri.ru ntp.corbina.net server 88.147.255.85, stratum 1, offset 0.006494, delay 0.09918 server 62.117.76.142, stratum 1, offset 0.002552, delay 0.06920 server 62.117.76.141, stratum 1, offset 0.003147, delay 0.06918 server 62.117.76.140, stratum 1, offset 0.004823, delay 0.07350 server 88.147.254.228, stratum 1, offset -0.002355, delay 0.12030 server 88.147.254.229, stratum 1, offset -0.000922, delay 0.10577 server 62.117.76.138, stratum 1, offset 0.005331, delay 0.07401 server 195.14 .40.141, stratum 2, offset 0.002846, delay 0.07188 13 Jan 19:14:09 ntpdate: adjust time server 62.117.76.141 offset 0.003147 sec

У прикладі наші сервера вдало видали рівень stratum1, що не може не радувати (крім сервера провайдера), offset - це розбіжність у часі з цим сервером в секундах, delay - затримка синхронізації в секундах. Зазвичай, б Пробільша точність виходить при використанні серверів, які мають низьку затримку передачі пакетів по мережі. Для виявлення цього, можливо скористатися. Відповідно, вибравши спочатку ті, у яких час відповіді менше, а з них - ті, до яких менше хопов. Я ж, щоб не втрачати час, скористаюся всім зазначеними серверами і впишу їх в конфігураційний файл. Разом, знаючи все перераховане вище, опишу свій файл, /etc/ntp.conf:

Ntp-server: ~ # cat /etc/ntp.conf # Сервера локальної мережі (закоментовані, не використовуються - в мережі один сервер) #server 192.168.0.2 #server 192.168.0.5 # інтернет-сервера server ntp2.ntp-servers.net server ntp1.vniiftri.ru server ntp2.vniiftri.ru server ntp4.vniiftri.ru server ntp0.ntp-servers.net server ntp1.ntp-servers.net server ntp3.vniiftri.ru server ntp.corbina.net # Файли сервера driftfile /var/lib/ntp/ntp.drift logfile / var / log / ntpstats # обмеження доступу до сервера: # за умовчанням ігноруємо все restrict default ignore # локалхост без параметрів - значить дозволено все. Параметри йдуть тільки на заборони. restrict 127.0.0.1 # далі описуються сервера з якими ми синхронізуючи в локальній мережі. # Дозволяємо їм все крім трапів і запитів до нас restrict 192.168.0.2 noquery notrap restrict 192.168.0.5 noquery notrap # для локалки так само дозволяємо все, крім трапів і модифікацій restrict 192.168.0.1 mask 255.255.255.0 nomodify notrap nopeer # дозволяємо зовнішніх джерел часу доступ: restrict ntp2.ntp-servers.net restrict ntp1.vniiftri.ru restrict ntp2.vniiftri.ru restrict ntp4.vniiftri.ru restrict ntp0.ntp-servers.net restrict ntp1.ntp-servers.net restrict ntp3.vniiftri.ru restrict ntp.corbina.net # а цей хак, який виставляє рівень довіри сервера (strata) самому собі рівний 3 # в двох словах чим вище рівень-тим менше число. 0 - це атомний годинник, # 1 - це синхронізовані з ними, 2 - з першим, і так далі. server 127.127.1.1 fudge 127.127.1.1 stratum 3

Для більш поглибленого розуміння і настройки сервера, опишу деякі параметри конфігурації ntpd, про які не згадував ::

  • enable / disable auth / monitor / pll / pps / stats - включити вимкнути режим роботи:
    • auth- з незгаданих сусідами спілкуватися тільки в режимі аутентифікації;
    • monitor- дозволити моніторинг запитів;
    • pll- дозволити налаштовувати частоту місцевих годин по NTP;
    • stats- дозволити збір статистики;
  • statisticsloopstats- за будь-якої модифікації локальних годин записує рядок у файл loopstats;
  • statisticspeerstats- кожне спілкування з сусідом записується в журнал, що зберігається в файлі peerstats;
  • statisticsclockstats- кожне повідомлення від драйвера локальних годин записується в журнал, що зберігається в файлі clockstats;
  • statsdir(Імя_каталого_со_статістікой) - задає ім'я каталогу, в якому будуть знаходиться файли зі статистикою сервера;
  • filegen - визначає алгоритм генерації імен файлів, які складаються з:
    • префікс- постійна частина імені файлу, задається або при компіляції, або спеціальними командами конфігурації;
    • ім'я файлу - додається до префікса без риски, дві точки заборонені, може бути змінена ключем file;
    • суфікс- генерується в залежності від typename;
  • restrictnumeric-address- задає обмеження доступу: пакети сортуються і маскам, береться початкова адреса і послідовно порівнюється, від останнього вдалого порівняння береться прапор доступу:
    • немає прапорів - дати доступ;
    • ignore- ігнорувати всі пакети;
    • noquery- ігнорувати пакети NTP 6 і 7 (запит і модифікація стану);
    • nomodify- ігнорувати пакети NTP 6 і 7 (модифікація стану);
    • limited- обслуговувати тільки обмежена кількість клієнтів з даної мережі;
    • nopeer- обслуговувати хост, але не синхронізуватися з ним;
  • clientlimitlimit- для прапора limitedвизначає максимальна кількість обслуговуваних клієнтів (по дефолту 3);

Разом, ми отримали ntpd-server, Який синхронізується з зовнішнім світом, дозволяє отримувати час для клієнтів з локальної мережі 192.168.0.1 з маскою 255.255.255.0, а так само може синхронізуватися з локальним сервером (якщо розкоментувати кілька рядків). Нам залишилося налаштувати клієнтів і дізнатися, як спостерігати за нашим сервером.

Спостереження за сервером ntpd і за синхронізацією

Коли у вас все налаштовано. NTP буде тримати час в синхронізований стані. Цей процес можна спостерігати за допомогою команди NTP Query (ntpq):

Ntp-server: ~ # ntpq -p remote refid st t when poll reach delay offset jitter \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d -n3. time1.d6.hsd .PPS. 1 u 34 64 177 70.162 2.375 8.618 + ntp1.vniiftri.r .PPS. 1 u 33 64 177 43.479 -0.020 10.198 * ntp2.vniiftri.r .PPS. 1 u 6 64 177 43.616 -0.192 0.688 + ntp4.vniiftri.r .PPS. 1 u 4 64 177 43.623 0.440 0.546 -n1.time1.d6.hsd .PPS. 1 u 53 64 77 92.865 -11.358 38.346 -ns1.hsdn.org .GPS. 1 u 40 64 177 78.057 -3.292 35.083 -ntp3.vniiftri.r .PPS. 1 u 44 64 77 47.667 2.292 2.611 -scylla-l0.msk.c 192.43.244.18 2 u 62 64 77 41.565 -1.564 28.914

Дана команда з ключем -p виводить на стандартний висновок список джерел часу з їх характеристиками (інші параметри команди в man ntpq). Значення кожної колонки наступне:

Ім'я віддаленого NTP-сервера. Якщо вказати ключ -n, ви отримаєте IP-адреси серверів замість імен.

Вказує, звідки кожен сервер отримує час в даний момент. Це може бути ім'я хоста або щось вроде.GPS., Що вказує на джерело глобальної системи позиціонування (Global Positioning System).

Stratum (рівень) це число від 1 до 16, що вказує на точність сервера. Одиниця означає максимальну точність, 16 - сервер недоступний. Ваш рівень дорівнюватиме рівню найменш точного віддаленого сервера плюс 1.

Інтервал між опитуваннями (в секундах). Значення буде змінюватися між мінімальною і максимальною частотою опитувань. На початку інтервал буде маленьким, щоб синхронізація відбувалася швидко. Після того як годинник синхронізуються, інтервал починає збільшуватися, щоб зменшити трафік і навантаження на популярні сервера часу.

Вісімкове уявлення масиву з 8 біт, що відображає результати останніх восьми спроб з'єднання з сервером. Біт виставлений, якщо віддалений сервер відповів.

Кількість часу (в секундах) необхідного для отримання відповіді на запит "котра година?".

Найбільш важливе поле. Різниця між часом локального і віддаленого серверів. В ході синхронізації це значення має знижуватися (наближатися до нуля), вказуючи на те, що годинник локальної машини йдуть все точніше.

Дисперсія (Jitter) - це міра статистичних відхилень від значення зсуву (поле offset) за кількома успішним парам запит-відповідь. Менше значення дисперсії краще, оскільки дозволяє точніше синхронізувати час.

Значення знаків перед іменами серверів

x - фальшивий джерело за алгоритмом перетину;
. - виключений зі списку кандидатів через велику відстань;
- - видалено зі списку кандидатів алгоритмом кластеризації;
+ - входить в кінцевий список кандидатів;
# - обраний для синхронізації, але є 6 кращих кандидатів;
* - обраний для синхронізації;
o - обраний для синхронізації, але використовується PPS;
пробіл - занадто великий рівень, цикл або явна помилка;

служба ntpd"Розумна" і сама відсіває джерела часу занадто вибиваються за рамки розумного. Через деякий час після запуску ntpd вибере найбільш достовірні джерела даних і буде синхронізуватися з ними. Представлений нами список еталонних NTP серверів регулярно переглядається службою.

Перевірити можливість синхронізації локально на сервері можливо командою:

Ntp-server: ~ # ntpdate -q localhost server 127.0.0.1, stratum 2, offset -0.000053, delay 0.02573 server :: 1, stratum 2, offset -0.000048, delay 0.02571 14 Jan 14:49:57 ntpdate: adjust time server :: 1 offset -0.000048 sec

З виведення команди видно, що наш сервер вже став рівня stratum 2. Для досягнення даного рівня, потрібен певний час. Можливо, в перші 10-15 хвилин рівень сервера буде вище.

Про коректній роботі сервера ntp можна так само судити по логам демона ntpd:

Ntp-server: ~ # cat / var / log / ntpstats / ntp 13 Jan 20:13:16 ntpd: Listening on interface # 5 eth0, fe80 :: a00: 27ff: fec1: 8059 # 123 Enabled 13 Jan 20:13: 16 ntpd: Listening on interface # 6 eth0, 192.168.0.8 # 123 Enabled 14 Jan 14:31:00 ntpd: synchronized to 62.117.76.142, stratum 1 14 Jan 14:31:10 ntpd: time reset +10.291312 s 14 Jan 14 : 31: 10 ntpd: kernel time sync status change 0001 14 Jan 14:34:31 ntpd: synchronized to 88.147.255.85, stratum 1 14 Jan 14:36:04 ntpd: synchronized to 62.117.76.141, stratum 1 14 Jan 15: 4:36 ntpd: synchronized to 62.117.76.142, stratum 1 14 Jan 15:10:58 ntpd: synchronized to 62.117.76.140, stratum 1 14 Jan 15:17:54 ntpd: no servers reachable 14 Jan 15:31:49 ntpd : synchronized to 62.117.76.140, stratum 1 14 Jan 15:32:14 ntpd: time reset +13.139105 s

Налаштування netfilter (iptables) для NTP сервера

Налаштувавши роботу сервера, непогано було б його захистити. Ми знаємо, що сервер працює на 123 / udp порту, при цьому запити так само відправляються з порту 123 / udp. Ознайомившись зі статтею, і ознайомившись з практичними, можна створити правила фільтрації мережевого трафіку:

Ntp ~ # iptables-save # типові правила iptables для DNS * filter: INPUT DROP: FORWARD DROP: OUTPUT DROP -A INPUT -i lo -j ACCEPT -A INPUT -m conntrack --ctstate RELATED, ESTABLISHED -j ACCEPT -A INPUT -m conntrack --ctstate INVALID -j DROP # дозволити доступ локальної мережі до NTP сервера: -A INPUT -s 192.168.1.1/24 -d 192.168.1.1/32 -p udp -m udp --dport 123 -m conntrack --ctstate NEW -j ACCEPT -A OUTPUT -o lo -j ACCEPT -A OUTPUT -p icmp -j ACCEPT -A OUTPUT -p udp -m udp --sport 32768: 61000 -j ACCEPT -A OUTPUT -p tcp -m tcp --sport 32768: 61000 -j ACCEPT -A OUTPUT -m conntrack --ctstate RELATED, ESTABLISHED -j ACCEPT # дозволити доступ NTP сервера здійснювати вихідні запити -A OUTPUT -p udp -m udp --sport 123 --dport 123 -m conntrack --ctstate NEW -j ACCEPT COMMIT

Це типовий приклад! Для завдання правил iptables під Ваші завдання і конфігурацію мережі, необхідно розуміти принцип роботи netfilter в Linux, почитавши вищевказані статті.

Налаштування клієнтських машин

Для синхронізації часу на UNIX-машинах локальної мережі доцільно використовувати утиліту ntpdate, запускаючи її за допомогою кілька разів на добу, наприклад щогодини. Для цього, в необхідно додати наступний рядок:

0 * * * * / usr / sbin / ntpdate -s

Ключ -s направляє висновок команди. Якщо на клієнтських машинах є пару зайвих мегабайт оперативної пам'яті, то можна запустити демон ntpd, як і на сервері з наступним конфіг:

Server restrict default ignore restrict noquery notrap restrict 127.0.0.1 nomodify notrap

Думаю, в даному конфіги все зрозуміло: джерело часу (server) - локальний ntpd-сервер, доступ всім заборонити, дозволити тільки локального ntpd-сервера.

Так само, на клієнтах необхідно правильно вказати в якому форматі зберігати час і вибрати правильний часовий пояс,.

Для настройки NTP клієнта Windows, Необхідно виконати в консолі наступні команди:

C: \\\u003e net time / setsntp: The command completed successfully. C: \\\u003e net stop w32time The Windows Time service is stopping. The Windows Time service was stopped successfully. C: \\\u003e net start w32time The Windows Time service is starting. The Windows Time service was started successfully. C: \\\u003e net time / querysntp The current SNTP value is: The command completed successfully.

висновок

Ну ніби все! Обсяг статті вийшов величезним ... Навіть сам не очікував. Підведу маленький підсумок викладеного. У даній статті нам, сподіваюся, стало зрозуміло що є і як працює NTP-сервер. Навчилися налаштовувати сервер і клієнтів на UNIX і Windows машинах. У кількох словах, структура синхронізації часу в локальній мережі наступна: Є 1,2 або більше серверів точного часу в локальній мережі, вони синхронізують свій час із зовнішніми джерелами в глобальної мережі. Налаштування сервера і клієнтів засновані на файлах /etc/ntp.conf (основний конфігураційний файл демона ntpd), / etc / localtime (файл поточного часового поясу), а так само / etc / sysconfig / ntp (для RH) і / etc / default / ntp (для Deb) - файли параметрів запуску демона. Для локального ntp-сервера в конфігураційному файлі вказуються зовнішні сервера для отримання часу і дозволяється доступ для цих серверів параметром restrict, а так само для комп'ютерів локальної мережі, для клієнтів вказується джерело часу - локальні сервера в локальній мережі, а так само забороняється доступ для всіх , крім джерела часу в локальній мережі. Усе. Дякую всім за увагу! Буду радий коментарям!

  • (Архів статті) описано, як підключити GPS до сервера для організації свого сервера точного часу рівня Stratum1.
  • описано, як налаштувати авторизацію на ntp-сервері.

NTP (Network Time Protocol - протокол мережевого часу) - мережевий протокол для синхронізації внутрішнього годинника комп'ютера з використанням мереж зі змінною латентністю. Протокол був розроблений Девідом Л. Миллсом, професором Делаверского університету, в 1985 році. Версія на 2015 рік - NTPv4.

NTP, заснований на алгоритмі Марзулло, використовує для своєї роботи протокол UDP і враховує час передачі. Система NTP надзвичайно стійка до змін латентності середовища передачі. У версії 4 здатний досягати точності 10 мс (1/100 с) при роботі через Інтернет, і до 0,2 мс (1/5000 с) і краще всередині локальних мереж.

Найбільш широке застосування протокол NTP знаходить для синхронізації серверів точного часу. Для досягнення максимальної точності краща постійна робота програмного забезпечення NTP в режимі системної служби. У сімействі операційних систем Microsoft Windows - це служба W32Time, Linux - сервіс Ntpd.

Більш проста реалізація цього алгоритму відома як SNTP - простий протокол мережевого часу. Використовується у вбудованих системах і пристроях, що не вимагають високої точності, а також в призначених для користувача програмах точного часу.

структура пакета

Структура пакета описана в RFC 5905. Пакет складається з цілого числа 32-бітових слів.

Дані в заголовку будуть відрізнятися для різних режимів роботи. Наприклад, клієнт в поля годинний шар, ідентифікатор джерела, проміжок часу і час прийому повинен записати нулі.

Заголовок

Тема NTP
відступ октет 0 1 2 3
октет біт 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
0 0 ІК версія режим Часовий шар інтервал опитування точність
4 32 затримка
8 64 дисперсія
12 96 ідентифікатор джерела
16 128 час оновлення
20 160
24 192 Початковий час
28 224
32 256 Час прийому
36 288
40 320 Час відправки
44 352

індикатор компенсації

Приклад синхронізації часу, використовуючи NTP

Довжина - 2 біти, від Leap Indicator. Ціле число, що показує попередження про секунді координації.

номер версії

Довжина - 3 біта, від Version Number. Ціле число, яке представляє версію протоколу.

режим

Довжина - 3 біта, від Mode. Ціле число, яке представляє режим. Значення представлені в таблиці нижче.

Часовий шар

Довжина - 8 біт, від Stratum. Ціле число, яке представляє годинний шар.

інтервал опитування

Довжина - 8 біт, від Poll. Ціле число зі знаком, що представляє максимальний інтервал між послідовними повідомленнями. Значення одно бінарного логарифму секунд. Пропоновані за умовчанням межі на мінімальні і максимальні опитування - 6 і 10, відповідно.

точність

Довжина - 8 біт, від Precision. Ціле число зі знаком, що представляє точність внутрішнього годинника. Значення одно бінарного логарифму секунд. Наприклад, значенням -18 відповідатиме точність близько 1 мкс.

затримка

Довжина - 32 біта, від Root Delay. Загальний час поширення сигналу в обидва боки в короткому форматі NTP.

дисперсія

Довжина - 32 біта, від Root Dispersion. Загальна дисперсія для джерела часу в короткому форматі NTP.

ідентифікатор джерела

Довжина - 32 біта, від Reference ID. Код джерела синхронізації. Залежить від значення в поле Часовий шар. для шару 0 - це чотири ASCII символу, звані «kiss code», використовуються для налагодження та моніторингу. Дивись нижче Для шару 1 - це чотири октету ASCII символів, доповнені зліва нулями, призначені для опорного часу. У таблиці нижче представлений список, який підтримується IANA.
ID джерело
GOES Геостаціонарний супутник системи екологічного моніторингу та спостереження
GPS Система глобального позиціонування
GAL Система визначення місцезнаходження «Галілео»
PPS Загальний радіосигнал з тривалістю імпульсу, що дорівнює 1 секунді
IRIG Група стандартизації в телеметрії, США
WWVB Низькочастотний радіопередавач, 60 кГц, Форт Коллінз, Колорадо, США
DCF Низькочастотний радіопередавач, 77.5 кГц, DCF77, Майнфлінген, ФРН
HBG Низькочастотний радіопередавач, 75 кГц, Прангінс, Швейцарія
MSF Низькочастотний радіопередавач, 60 кГц, Антхорн, Великобританія
JJY Низькочастотний радіопередавач, 40 кГц, Фукушіма, 60 кГц, Сага, Японія
LORC Середньочастотний радіопередавач, 100 кГц, радіонавігації, LORAN-C
TDF Середньочастотний радіопередавач, 162 кГц, Аллоуіс, Франція
CHU Високочастотний радіопередавач, Оттава, Онтаріо, Канада
WWV Високочастотний радіопередавач, Форт Коллінз, Колорадо, США
WWVH Високочастотний радіопередавач, Кауаї, Гаваї, США
NIST
ACTS Телефонний модем Національного інституту стандартів і технологій США
USNO Телефонний модем Національної обсерваторії США
PTB Телефонний модем Національного метрологічного інституту Німеччини
для шару 2 і вище - це ідентифікатор сервера і може бути використаний для фіксування тимчасових петель. Якщо використовується протокол IPv4, то ідентифікатор представляє з себе чотири октету IP адреси. Якщо використовується протокол IPv6, то це перші чотири октету MD5 хеша адреси. Варто відзначити, що при використанні IPv6 адрес для сервері з NTPv4 і клієнта з NTPv3 ідентифікатор може приймати випадкове значення, через що тимчасові петлі можуть бути не зафіксовані.

час оновлення

Довжина - 64 біта, від Reference Timestamp. Час, коли система останній раз встановлювала або змінювала час. Формат NTP.

Початковий час

Довжина - 64 біта, від Origin Timestamp. Час клієнта, коли запит відправляється сервера. Формат NTP.

Час прийому

Довжина - 64 біта, від Receive Timestamp. Час сервера, коли запит приходить від клієнта. Формат NTP.

Час відправки

Довжина - 64 біта, від Transmit Timestamp. Час сервера, коли запит відправляється клієнтові. Формат NTP.

NTP-повідомлення «Kiss-o" -Death »

для шару 0, Який вважається невизначеним або неприпустимим, поле ідентифікатор джерела може використовуватися для доставки повідомлень, які виконують роль даних про стан системи і управління доступом. Такі повідомлення називаються «Kiss-o" -Death »(KoD), а доставляються ними ASCII-дані називаються« kiss codes »(коди« допомоги »). Перелік прийнятих в даний час кодів« допомоги »представлено в таблиці нижче.

Одержувачі KoD-повідомлень зобов'язані їх перевірити і виконати наступні дії:

  • При отриманні кодових комбінацій DENY і RSTR клієнт зобов'язаний розірвати віртуальні з'єднання з даним сервером часу і припинити передачу повідомлень цього сервера.
  • При отриманні кодової комбінації RATE клієнт зобов'язаний негайно знизити свій інтервал опитування цього сервера і продовжувати його зменшувати кожен раз при отриманні цієї кодової комбінації.
  • При отриманні кодової комбінації починається з ASCII-символу Х, Призначеної для проведення експериментальних досліджень і наступних удосконалень, вона повинна бути проігнорована, якщо вона не розпізнається.
  • Всі інші кодові комбінації і KoD-повідомлення, не певні даним протоколом, знищуються після їх перевірки.
Коди «допомоги»
код опис
ACST Віртуальне з'єднання встановлено одноадресна сервером
AUTH Аутентифікація сервером завершилася відмовою
AUTO Autokey-послідовність некоректна
BCST Віртуальне з'єднання встановлено широкомовною сервером
CRYP Криптографічний аутентифікація або ідентифікація завершилися відмовою
DENY Віддалений сервер відмовив у доступі
DROP Втрата віддаленого сервера часу в симетричному режимі
RSTR Відмова в доступі внаслідок локальної стратегії безпеки
INIT Віртуальне з'єднання з першого разу не встановлено
MCST Віртуальне сінхросоедіненіе встановлено динамічно виявленим сервером
NKEY Ключ не знайдено (або він що раніше не завантажувався, або він є ненадійним)
RATE Швидкість перевищена. Сервер тимчасово заборонив доступ, так як клієнт перевищив поріг швидкості
RMOT Зміна віртуального з'єднання з боку віддаленого IP-вузла, що використовує NTP-протокол безпосередньо
STEP Відбулася ітерація зі зміни системного часу, віртуальне сінхросоедіненіе не встановлено

вартові шари

Жовті стрілки позначають апаратне з'єднання; червоні стрілки позначають мережеве з'єднання.

NTP використовує ієрархічну мережу, де кожен рівень має свій номер, званий шар. шар 1 - первинні сервери, безпосередньо що синхронізуються з національними службами часу через супутник, радіо або телефонний модем. шар 2 - вторинні сервери, синхронізуються з первинними серверами, і т.д. Як правило, клієнти і сервери NTP з відносно невеликим числом клієнтів не синхронізується з первинними серверами. Існує кілька сотень громадських вторинних серверів, що працюють на більш високих шарах. Вони є кращим вибором.

формат часу

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

Звичайний формат часу
біт 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
0 секунди
4 частки секунд
формат дати
біт 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
0 номер ери
4 відступ ери
8 частки
16

Синхронізація часу є важливим завданням, хоча не всі замислювалися про це. Ну що поганого в що втекли на сервері часу? А чи знаєте ви, що багато проблем з годинником впливають на протоколи, пов'язані з криптографією? З цієї причини в Active Directory різниця в годинах більше 5 хвилин буде призводити до проблем аутентифікації Kerberos.

Вартові рівні. Strata.

Щоб зрозуміти пристрій NTP слід знати про концепцію strata або stratum. Авторитетні джерела часу, такі як супутники GPS, цезієві атомний годинник, радіо хвилі WWVB - все це stratum 0. Вони авторитетні на тій підставі, що у них є певний спосіб підтримки високоточної хронометражу. Можна, звичайно, скористатися звичайними кварцовими годинниками, але знаючи, що за місяць з ними легко втратити 15 секунд, то краще їх не використовувати в якості мірила часу. Stratum 0 це коли секунда не згубиться за 300 000 років!

Комп'ютери, які безпосередньо (не по мережі!) Беруть час у stratum 0 - це stratum 1. Так як завжди є затримки через передачу сигналу і витрати на установку часу, то комп'ютери stratum 1 не так точні як stratum 0, Але в реальному житті відмінність досягає пару мікросекунд (1 мкс \u003d 10 -6 с), що цілком припустиме відхилення.

Наступний рівень комп'ютерів, що беруть час по мережі у stratum 1 - це ... барабанний дріб ... інтрига ... stratum 2! Знову таки через різних затримок (мережеві точно), stratum 2 трохи відстає від stratum 1 і вже точно від stratum 0. На практиці це різниця від декількох мікросекунд (1 мкс \u003d 10 -6 с) до декількох мілісекунд (1 мс \u003d 10 -3 с). Багато хто хоче синхронізуватися з шаром не далі stratum 2.

Як зрозуміло з схеми, stratum 4 бере час у вищого stratum 3. stratum 5 у stratum 4 і так далі. stratum 16 вважається самим нижнім шаром і час там вважається сінхронизований.

Щоб синхронізувати час за допомогою протоколу NTP, слід спочатку вручну виставити ваш час. Неприпустима різниця між вашим точним часом і показаннями ваших годин більше 1000 секунд. Якщо використовуваний вами сервер часу бреше більше 1000 мілісекунд (1 секунда), то він буде виключений зі списку і будуть використовуватися інші замість нього. Даний механізм дозволяє відсівати погані джерела часу.

Клієнт часу.

У файлі /etc/ntp.conf для клієнта важливі рядки Server. Їх може бути кілька - до 10 штук!

Скільки додавати? Слід мати на увазі:

  • Якщо у вас тільки один сервер (один рядок server), то якщо даний сервер почне брехати, то ви будете сліпо слідувати за ним. Якщо його час втече на 5 секунд і ви втечете в слід за ним.
  • Якщо додано 2 сервера (2 рядки server), то NTP позначить їх обох як false tickers. Якщо один з них буде брехати, то NTP не може зрозуміти хто бреше, тому що немає кворуму.
  • Якщо додано 3 і більше сервера часу, то можна обчислити одного брехуна false tickers. Якщо серверів часу 5 або 6, то можна знайти 2 брехуна false tickers. Якщо серверів 7 або 8, то 3 false tickers. Якщо серверів 9 і 10, то 4 false tickers.

Проект NTP Pool.

Є такий проект NTP Pool за адресою якого pool.ntp.org/zone/ru/ можна знайти рекомендовані для російських користувачів сервера часу.

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

Такі операційні системи, як Debian і Ubuntu, пропонують користувачам свої сервера часу.

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

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

Якщо викликати на вашому Linux комп'ютері, Який використовує NTP, команду ntpq -pn

Remote refid st t when poll reach delay offset jitter \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d \u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d +93.180.6.3 77.37.134.150 2 u 62 1024 377 53.658 -0.877 1.174 +85.21.78.23 193.190.230.65 2 u 1027 1024 377 54.651 0.167 1.531 * 62.173.138.130 89.109.251.24 2 u 940 1024 377 52.796 -0.143 1.001 +91.206.16.3 194.190.168.1 2 u 258 1024 377 93.882 -0.680 2.196 -91.189.94.4 193.79.237.14 2 u 596 1024 377 100.219 1.562 1.482

Про що говорять назви стовпців:

  • remote - вилучені сервера, з якими ви синхронізуєте час.
  • refid - вищестоящий stratum для даного сервера.
  • st - рівень stratum. Від 0 (нам не бачити) до 16 (нам не бажано). Ідеально - 2.
  • t - тип з'єднання. " u"- unicast або manycast," b"- broadcast або multicast," l"Local reference clock," s"- симетричний вузол," A"- manycast сервер," B"- broadcast server," M"- multicast сервер.
  • when - час, коли останній раз сервер відповів нам. Параметр відображає число в секундах, але може в хвилинах, якщо число з m або в годинах, якщо h.
  • poll - частота опитування. Мінімум 16 секунд, максимум 32 години. Число повинно бути 2 n. Зазвичай в даному параметрі спостерігається або 64 секунди або 1024.
  • reach - 8 біт октету, що показує статус спілкування з віддаленим сервером часу: успішний або зіпсований. Якщо біти встановлені - то успішно, інакше - збій. Значення 377 - бінарному це 0000 0000 1111 1111.
  • delay - значення в мілісекундах показує час між відправленням і отримання відповіді (round trip time - RTT).
  • offset - зміщення в мілісекундах між вами і серверами часу. Може бути позитивним і негативним числом.
  • jitter - абсолютне значення в мілісекундах із зазначенням середньоквадратичного відхилення вашого зміщення.

Перед IP адресою NTP сервера є символ - це tally code. види tally code:

  • " " - відкинутий як неприпустимий. Наприклад, немає зв'язку з ним або він в оффлайн, він занадто високого рангу і не обслуговує таких як ви.
  • "X" - відкинутий алгоритмом "перетину" (intersection algorithm). Алгоритм перетину готує список кандидатів партнерів, що можуть стати джерелами синхронізації і обчислює довірчий інтервал для кожного з них.
  • "." - відкинутий через переповнення таблиці.
  • "-" - відкинутий алгоритмом кластеризації (cluster algorithm). Алгоритм кластеризації сортує список кандидатів по кодам шару і відстані синхронізації.
  • "+" - сервер включений алгоритмом "комбінування" (combine algorithm). Цей сервер - відмінний кандидат якщо поточний сервер часу почне відмовляти вам.
  • "#" - сервер є відмінним альтернативним сервером часу. Сервер з # можна побачити тільки якщо у вас більше 10 записів server в /etc/ntp.conf
  • "*" - поточний сервер часу. Його показання використовуються для синхронізації ваших годин.
  • "O" - сервер Pulse per second (PPS). Зазвичай це означає, що даний сервер часу використовує джерела часу типу GPS супутників і інші сигнали точного часу. якщо малюється про, То інші типи tally code вже відображатися не будуть.

У полі refid можуть бути наступні значення:

  • IP адреса - адреса віддаленого сервера часу.
  • .ACST.- NTP manycast сервер.
  • .ACTS.- Automated Computer Time Service з American National Institute of Standards and Technology.
  • .AUTH.- помилка аутентифікації.
  • .AUTO.- помилка в послідовності Autokey.
  • .BCST.- NTP broadcast сервер.
  • .CHU.- Shortwave radio receiver від станції CHU в Ottawa, Ontario, Canada.
  • .CRYPT.- помилка протоколу Autokey.
  • .DCFx.- LF radio receiver від станції DCF77 в Mainflingen, Germany.
  • .DENY.- У доступі відмовлено.
  • .GAL.- European Galileo satellite receiver.
  • .GOES.- American Geostationary Operational Environmental Satellite receiver.
  • .GPS.- American Global Positioning System receiver.
  • .HBG.- LF radio receiver від станції HBG в Prangins, Switzerland.
  • .INIT.- Peer association initialized.
  • .IRIG.- Inter Range Instrumentation Group time code.
  • .JJY.- LF radio receiver від станції JJY в Mount Otakadoya, поруч з Fukushima або Mount Hagane на острові Kyushu, Japan.
  • .LFx.- Звичайний LF radio receiver.
  • .LOCL.- локальні годинник хоста.
  • .LORC.- LF radio receiver від Long Range Navigation (LORAN-C).
  • .MCST.- NTP multicast сервер.
  • .MSF.- Anthorn Radio Station поруч з Anthorn, Cumbria.
  • .NIST.- American National Institute of Standards and Technology.
  • .PPS.- годинник Pulse per second.
  • .PTB.- Physikalisch-Technische Bundesanstalt від Brunswick і Berlin, Germany.
  • .RATE.- перевищено поріг опитування NTP.
  • .STEP.- зміна кроку NTP. зсув offset менше 1000 мілісекунд, але більше 125 мілісекунд.
  • .TDF.- LF radio receiver від станції TéléDiffusion de France в Allouis, France.
  • .TIME.- NTP association timeout.
  • .USNO.- United States Naval Observatory.
  • .WWV.- HF radio receiver від станції WWV в Fort Collins, Colorado, United States.
  • .WWVB.- LF radio receiver від станції WWVB в Fort Collins, Colorado, United States.
  • .WWVH.- HF radio receiver від станції WWVH в Kekaha, на острові Kauai на Hawaii, United States.

По-перше, позбудьтеся від думки як би отримати час від stratum 1, Мовляв вони ближче всіх до точного часу. Вони то ближче до найточнішому часу на планеті, тільки самі вони перевантажені і у них високі затримки RTT для звичайних серверів. Краще знайти нормальний stratum 2 і не переживати з цього приводу. Не забувайте, що мова йде про мікросекундах і мілісекундах, що в звичайному житті - цілком достатньо.

По-друге, пам'ятайте, що підключення до найближчого сервера часу не завжди ідеальний варіант. Важливіше не територіальна близькість, а рівень stratum. Проект NTP Pool публікує список серверів тільки рівня stratum 1 і stratum 2 і краще взяти до 10 серверів часу з даного списку, що буде просто чудово.

По-третє, якщо ви простий домашній користувач-клієнт, то рекомендовані вам сервера у вашій операційній системі будуть ідеальним варіантом, що не вимагає зайвих рухів тіла.

Для великих контор, кращим варіантом буде підняття свого сервера часу для робочих комп'ютерів. даний сервер буде отримувати точний час від серверів часу в Інтернеті і надавати його локальним комп'ютерів. На серверах Debian і Ubuntu досить розкоментувати рядок

Restrict 192.168.0.0 mask 255.255.0.0 nomodify notrap

в файлі конфігурації демона ntpd - /etc/ntp.conf

Користувачі з мережі 192.168 / 16 будуть мати можливість брати з вашого сервера свідчення точних годинників. Для внутрішніх серверів на базі Linux, які не є серверами часу і займаються своїми завданнями, замість запуску демона ntpd в клієнтському режимі - цілком достатньо вказати в файлі /etc/cron.daily/syncntpd. Рекомендується прочитати відмінності між ntpdate і ntp і вирішити для себе питання.
#! / Bin / sh
/ Usr / sbin / ntpdate IP.адрес.вашего.сервера\u003e / dev / null 2\u003e & 1
exit 0

і раз на добу, завдяки команді ntpdate, буде проведена синхронізація часу. Для уникнення непорозумінь, не полінуйтеся перед впровадженням сервера часу і синхронізації всього і вся через протокол NTP - виставите вручну правильний час на всіх доступних вам серверах і робочих станціях. Якщо ваше несинхронізованих час занадто відрізняється від правильного, то можна спочатку осадити багато не потрібних проблем.

По-четверте, NTP ніяк не пов'язаний, в якій країні і які часові пояси використовуються і як відбувається перехід на літній і зимовий час і робиться в цій країні такий перехід. Це обов'язок лежить на операційній системі, яку вам потрібно оновлювати, якщо в країні відбуваються зміни в часових справах. У системах Debian і Ubuntu за це відповідає пакет tzdata, який повинен бути актуальним.

По-п'яте, краще не піднімати свій NTP сервер на високонавантаженої системі.

Спочатку визначимося, для чого нам синхронізувати час на обладнанні, такому як: комутатори, маршрутизатори, файрволли, і так далі.

Робиться це в першу чергу для того, щоб відстежити по логам коли відбулася та чи інша подія. І ви можете собі уявити, яка користь буде від логів, якщо часом не синхронізований .. правильно - ніякої.

протокол NTP працює на основі протоколу UDP, через 123 порт.

У даного протоколу є деяка ієрархія для синхронізуючих систем, іншими словами рівні.

Рівень 1 присвоюється системі, яка синхронізується з високоточними годинниками, наприклад через GPS.

Система, яка буде синхронізувати з Рівня 1, матиме Рівень 2, і так далі.

Тим самим ми можемо визначити наскільки точним часом має станція, з якої ми синхронізуючи.

У нашій ситуації у нас в мережі є машина з точним часом, у мене вона налаштована на основі FreeBSD, з цієї машини, головне мережеве пристрій буде брати час (синхронізувати), і тим самим буде ставати головним для інших мережевих пристроїв (в ідеології cisco буде ntp майстром).

Хочу відзначити той факт, що по NTP передається час тільки в форматі UTC (Грінвіч), Кожна тайм зона налаштовується не посередньо на залізці.

Давайте розглянемо приклад простого налаштування NTP.

Для початку синхронізуємо час на нашому головному роутере (який буде роздавати іншим мережевим пристроям) .І тому заходимо в режимі глобальної конфігурації:

ntp server 10.0.100.254

де, 10.0.100.254 в нашому випадку це машина з FreeBSD, що має точний час.

Цього достатньо для мінімальної настройки.

Тепер перевіримо, чи змогли ми підключитися до сервера часу і отримати з нього час, для цього використовуємо команду:

повинні побачити щось подібне:

Зірочка навпаки ip нашого ntp сервера, говорить нам, що все добре, зв'язок принаймні встановлена.

Тепер подивимося, синхронізувати чи час?

Якщо все синхронізувати, то ми повинні побачити наступне:

Час отримано, тепер необхідно встановити потрібну там тайм зону.Так же в режимі глобальної конфігурації робимо:

clock timezone MSK / MSD 3
Тепер давайте перевіримо час:

Все чудово.

Перейдемо до налаштування нашого роутера в режим майстра.

Для цієї настройки, нам необхідно що даний роутер майстер і вказати рівень (в cisco він зветься як stratum number), той самий, про який я говорив на початку, я вкажу рівень п'ятий.

Тепер спробуємо налаштувати на іншому сетером пристрої ntp, щоб воно синхронізувати з нашого основного роутера, робиться це так само як і тут вище налаштовували синхронізацію з FreeBSD сервера.

ntp server 10.0.100.1 prefer

де, 10.0.100.1 це наш головний роутер.

prefer це ключове слово, яке вказує що даний ntp сервер є пріоритетним (тобто можна прописати, що синхронізувати годі й з одного сервера, а з декількох, робиться це для того, що якщо один недоступний, або час занадто відрізняється від інших, що говорить про якісь -то проблеми, пристрій може переключитися на інший сервер часу, а prefer робить цей сервер кращим, ніж інші.)

так само ми вказуємо потрібну нам Таймзона.

clock timezone MSK / MSD 3

перевіряємо:

Все чудово, все працює.

Тепер розглянемо питання безпеки.

Для початку, розберемо питання щодо обмеження за допомогою ACL, хто може синхронізувати, а хто ні.

Все досить стандартно і прозоро.

На сервері часу створюємо відповідний ACL:

access-list 20 remark ACCESS to NTP Syncaccess-list 20 permit 10.0.100.3

тепер прив'яжемо цей список доступу до ntp.

ntp access-group serve-only 20

Якщо все налаштовано вірно, то зв'язок з ntp північчю встановиться і синхронізація пройде успішно.

Так само додатково можна прописати на клієнтах список доступу. До яких серверів часу можна звертатися. Робиться це схожим способом:

access-list 20 remark ACCESS SYNC to NTP Servaccess-list 20 permit 10.0.100.1

Прив'яжемо список доступу до NTP

ntp access-group peer 20

Тепер розглянемо безпеку на основі аутентифікації.

Всі також досить прозоро.

У конфігурацію ntp досить додати наступне:

ntp authentication-key 1 md5 15060E1F10243F34 7ntp authenticatentp trusted-key 1
першою командою ми задаємо ключ аутентифікації, другий включаємо аутентифікацію, а третин вказуємо що аутентифікацію проводити за першим ключу.Настраіваем це на кожній зі сторін (сервер - клієнт) Ось власне і все. Вийшла невеликий вступний курс з налаштування NTP на Cisco устройствах.Для налагодження використовуємо:
ASW-M # debug ntp?adjust NTP clock adjustmentsauthentication NTP authenticationevents NTP eventsloopfilter NTP loop filterpackets NTP packetsparams NTP clock parametersrefclock NTP reference clocksselect NTP clock selectionsync NTP clock synchronizationvalidity NTP peer clock validityASW-M # debug ntp
Включаємо все що нам цікаво, наприклад events, sync, auth і дивимося що проісходіт.Еслі ми зайшли на пристрій через ssh / telnet не забуваємо ter mon 🙂

Сподобалася стаття? поділіться їй