Чим відрізняється протокол синхронізації часу NTP від ​​SNTP? NTP – атомний годинник на кожному столі Ntp протокол

NTP використовує протокол UDP для своєї роботи . Система NTP надзвичайно стійка до змін латентності середовища передачі.

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

NTP - один із найстаріших протоколів. NTP розроблений Девідом Л. Міллсом (David L. Mills) з університету Делавера в 1985 році і в даний час продовжує вдосконалюватись. Поточна версія – NTP 4.

NTP використовує ієрархічну систему "вартових рівнів" (stratum). Рівень 1 синхронізований з високоточним годинником, наприклад, з системою GPS, ГЛОНАСС (Єдина Державна шкала часу РФ) або атомним еталоном часу. Рівень 2 синхронізується з однією з машин рівня 1 і так далі.

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

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

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

Детальна реалізація протоколу та системи в цілому описана в:

NTP не слід плутати з daytime protocol RFC 867 або time protocol RFC 868 (win програма FG Time Sync).

Вартові шари

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

Шар 0

Шар 0 - це високоточні прилади службовці еталоном часу, такі як атомний (молекулярний, квантовий) годинник, радіогодинник або їх аналоги. Зазвичай, ці пристрої не підключені до мережі; замість цього вони підключені до локального комп'ютера (наприклад, через інтерфейс RS-232) і передають PPS сигнали для синхронізації.

Шар 1

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

Шар 2

Це комп'ютери, які отримують час від серверів першого шару, використовуючи протокол NTP. Зазвичай комп'ютери другого шару звертаються до кількох серверів першого шару, і використовуючи NTP-алгоритм, отримують найкращий зразок даних, відсіваючи сервери з явно неправильним часом. Комп'ютери можуть порівнювати дані з іншими комп'ютерами свого шару для отримання стабільних і несуперечливих даних на всіх комп'ютерах шару. Комп'ютери другого шару у свою чергу виступають серверами для комп'ютерів третього шару і відповідають на NTP-запити.

Шар 3

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

Див. також

Посилання

  • - список серверів NTP Державного зразка часу та частоти (ГЕВЧ) Російської Федерації
  • Network Time Protocol project - громадський проект з розвитку протоколу та служб NTP
  • NTP Public Services Project - проект публічних серверів NTP та робочої групи IETF за протоколом NTP
  • pool.ntp.org – ресурс, що представляє великий віртуальний кластер NTP-серверів для мільйонів користувачів. Станом на 29 грудня 2010 року в pool.ntp.org зареєстровано 2078 серверів. Є можливість вибрати регіональні сервери.
  • ntp.mobatime.ru – з 2005 року публічний безкоштовний NTP-сервер Mobatime першого стратуму (Росія, Санкт-Петербург).
  • time.bakulev.ru – публічний безкоштовний NTP сервер першого стратуму (Росія, Москва).

Wikimedia Foundation. 2010 .

Дивитись що таке "NTP" в інших словниках:

    NTP- це три літери ініціативи, які можуть бути: Contents 1 Computing 2 Politics 3 Science 3.1 Chemistry 3.2 Medicin … Wikipedia

    NTP- abbrev. normal temperature and air pressure: внутрішній термін для STP * * * NTP abbr. normal temperature and pressure. * * * … Universalium

    NTP- NTP, Abk. für Network Time Protocol … Universal-Lexikon

    NTP- (Network Time Protocol) (Internet) протокол, що виконає комп'ютери з внутрішніми годинниками з атомними годинниками або радіо годинниками на Інтернеті. English contemporary dictionary

    NTP- abbrev. normal temperature and air pressure: внутрішній термін для STP … English World dictionary

    NTP- Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom. Sigles d’une seule lettre Sigles de deux lettres > Sigles de trois lettres

    NTP

    Ntp- Die Abkürzung NTP steht für: Network Time Protocol, ein Protokoll zur Zeitsynchronisation zwischen Computern Normal Temperature and Pressure, die englische Bezeichnung für die physikalischen Normalbedingungen Nukleosidtriphos

    NTP- Abbreviation for nucleoside 5′ triphosphate. * * * narcotic treatment program; National Toxicology Program; nitroprusside; nonthrombopenic purpura; normal temperature and pressure; 5 'nucleotidase; sodium nitroprusside * * * NTP abbr normal… …


Синхронізація часу є важливим завданням, хоча не багато хто замислювався про це. Ну що поганого в часі, що втік на сервері? А чи знаєте ви, що багато проблем із годинником впливають на протоколи, пов'язані з криптографією? З цієї причини в 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 мкс = 10 -6 с), що цілком допустиме відхилення.

Наступний рівень комп'ютерів, що беруть час по мережі у stratum 1- це... барабанний дріб... інтрига... stratum 2! Знову ж таки через різні затримки (мережні точно), stratum 2трохи відстає від stratum 1і вже точно від stratum 0. Насправді це різниця від кількох мікросекунд (1 мкс = 10 -6 з) до кількох мілісекунд (1 мс = 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 ======================================== ====================================== +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.1 0 24 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 або багатоcast, " 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, Німеччина.
  • .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.адреса.сервера > /dev/null 2>&1
exit 0

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

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

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

MSK-IX NTP Server - публічний сервер точного часу, який підтримується MSK-IX. Сервер точного часу призначений для синхронізації із еталонним джерелом внутрішніх годинкомп'ютерів та мережевого обладнання (серверів, маршрутизаторів, смартфонів та ін.) за протоколом NTP.

MSK-IX NTP server відноситься до найвищого рівня точності (Stratum One Time Servers) в ієрархічній системі годинникових рівнів. Як еталонний сигнал часу використовується сигнал глобальних супутникових систем навігації ГЛОНАСС (пріоритетно) та GPS.

MSK-IX NTP Server реалізований у вигляді угруповання серверів, розміщених у Москві, Санкт-Петербурзі, Єкатеринбурзі та Новосибірську. Застосування мережевий технології anycast забезпечує високу надійність та швидкий відгук системи на всій території країни.

Сервери MSK-IX також включені в міжнародний пул NTP-серверів POOL.NTP.ORG, що широко використовується в налаштуваннях операційних систем.

Як користуватися службою NTP Server?

Використовуйте такі параметри для конфігурації обладнання:

Ім'я сервера ntp.msk-ix.ru
IPv4-адреса 194.190.168.1
IPv6-адреса 2001:6d0:ffd4::1

Як встановити пірінг із мережею NTP-сервера MSK-IX?

Щоб зменшити мережний маршрут до сервера NTP-сервера MSK-IX, використовуйте службу Route Server або встановіть прямий пірінг з мережею MSK-IX DNS Cloud . Пірингова взаємодія встановлюється за додатковою заявкою у рамках договору на підключення до MSK-IX без додаткової оплати.

Доброго дня, гості та постійні читачі. Поступово переходжу від основ до більш поглибленого вивчення 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. Він має на увазі пошук клієнтом серед своїх мережевих сусідів багатоcast-серверів, отримання від кожного з них зразків часу (з використанням криптографії) і вибір на підставі цих даних трьох «кращих» багатоcast-серверів, з якими клієнт буде проводити синхронізацію. У разі виходу з ладу одного із серверів клієнт автоматично оновлює свій список.

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

Час у Linux

Коротко розповім, який час існує в Linux та як його задати. У Linux, як і в іншій ОС, існує два часи. Перші - апаратні , іноді звані 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-х бітне ціле буде містити наш годинник приблизно до 292271-мільйонного року.

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 = true indicates that the clock is set to UTC; UTC=true ntp2-server:~# cat /etc/default/rcS | grep UTC UTC=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="-g"

# cat /etc/sysconfig/ntpd # Parameters for NTP daemon. # See ntpd(8) for more details. .... # Specifies additional parameters for ntpd. NTPD_ARGS="-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 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 1,6 1.6 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, stratum2 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 дозволяємо зовнішнім джерелам часу доступ: 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. 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 =============================== =============================================== -n3. time1.d6.hsd .PPS. 1 u 34 64 177 70.162 2.375 8.618 +ntp1.vniiftri.r .PPS. 1 u 33 64177 43.479 -0.020 10.198 *ntp2.vniiftri.r .PPS. 1 u 6 64177 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 64177 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.02574 14 ::1 offset -0.000048 sec

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

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

Ntp-server:~# cat /var/log/ntpstats/ntp 13 Jan 20:13:16 ntpd: Посилання на interface #5 eth0, fe80::a00:27ff:fec1:8059#123 Enabled 13 Jan 20:13: 16 ntpd: Listing 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:12 13 ntpd :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 66.1 14:11 14:11 04: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: no3 reach : 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 -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 123d -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:\>net time /setsntp: Команда здійснила успішно. C:\>net stop w32time У Windows Time service is stopping. У Windows Time service був схвалений успішно. C:\>net start w32time У Windows Time service is starting. У Windows Time service було здійснено успішно. C:\>net time /querysntp current SNTP value is: Команда здійснила успішно.

Висновок

Ну начебто все! Обсяг статті вийшов величезним... Навіть сам не очікував. Підведу невеликий підсумок викладеного. У цій статті нам, сподіваюся, стало зрозуміло, що є і як працює 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працює на основі протоколу 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 loopfilterпакетів NTP пакетівparams 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 🙂


Top