Правильна настройка сервера часу ntp на linux

Трохи перед історії. Як і належить, все почалося несподівано, сервер який я налаштовував на передодні вночі, при наступній завантаження завис. «Шикарно» подумав я і поліз в логи. В результаті в тому що сервер вис був винен ntpd сервіс, який через неправильну настройки мережі не міг зв'язатися зовнішнім сервером для синхронізації. Подивившись скрипт запуску, я натрапив на цікаву запис:

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

Налаштування початкової, грубої синхронізації

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

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

Світ Linux дійсно чудовий, всі налаштування в ньому зводяться до простого редагування файлів конфігурацій. ntpd в цьому плані не виняток. Отже якщо у вас ще не варто ntpd сервер встановимо його:

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

Після чого виконаємо команду:

В результаті повинні побачити щось на подобі:

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

Бачимо що половина серверів (2, 3, 4) взагалі не працює і реально відбувається робота з локальним сервером і з 172.22.128.8. Дивимося значення offset яке говорить що ніякої синхронізації немає і в помині! З лістингу можна зробити тільки один висновок, що сервер засінхронізірован сам з собою, і його час має мало спільного з дійсним. Будьте уважні, не давайте вас нає. обдурити :) На цьому б можна і зупинитися але тепер так би мовити ускладнюємо завдання. Нам треба щоб наш сервер був джерелом часу для локальної мережі, але при цьому ніхто не зміг зробити нічого поганого з вашим сервером. В чому проблема? В тому що для нормальної синхронізації, навіть якщо ви не плануєте кому то давати синхронізувати час з вами, У ВАС МАЄ бути відкритим порт udp 123. Після прочитання безлічі мінлива і дня втраченого часу ось що в /etc/ntp.conf вийшло у мене:

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

Підемо покуримо, вип'ємо чаю, кави (потрібне підкреслити), після чого виконаємо команду:

Схожі статті