Centos 6 настройка ntp

Обновлено: 04.07.2024

Приветствую! Сегодня разберем довольно простую но полезную вещь - настройку ntp на операционной системе CentOS 7 (6).

Приветствую! Сегодня разберем довольно простую но полезную вещь - настройку ntp на операционной системе CentOS 7 (6).

Для чего это делать? Это делается для того, чтобы на вашем сервере было точное время. А если у вас в сети есть несколько серверов - то это просто необходимая вещь. У меня, к примеру, есть несколько zabbix proxy и 1 zabbix server и чтобы данные не разнились, то необходимо, чтобы на все этих серверах было одинаковое время. Время можно синхронизировать в интернете или со своим сервером времени (как это сделано у меня). Про настройку своего сервера времени мы поговорим отдельно. Сейчас разберемся, как настроить свои сервера на синхронизацию времени.

Настройка NTP на CentOS 7

Для начала устанавливаем NTP:

Устанавливаем часовой пояс (временную зону), которая соответсвует вашей. Например у меня это Москва, создаем символическую ссылку:

Далее необходимо указать сервера, с которыми мы будем синхронизировать время. По умолчанию 3 сервера уже есть, можно оставить их, можно добавить свои. Мы добавим свой:
Открываем файл ntp.conf для редактирования:

Находим в нем строчки:
Перед ними пишем наш ntp сервер:

Время синхронизируется последовательно. Если первый в списке сервер будет по какой то причине не доступен, то обращение идет ко второму и т.д.

Теперь давайте вручную синхронизируем время с нашим сервером:

Получаем ответ типа: 15 Sep 10:03:56 ntpdate[4843]: step time server 192.168.0.68 offset -0.012084 sec - значит синхронизация прошла успешно и время было поправлено на данный период.

Если вы получите ошибку вида: the NTP socket is in use, exiting, значит у вас чем то уже используется порт 123. Попробуйте остановить ntpd следующей командой:
и еще раз запустите синхронизацию:

Теперь добавляем в автозапуск и запускаем нашу службу автоматической синхронизации времени:

Проверить работу ntp можно командой ntpq -p

На этом все, мы настроили автоматическую синхронизацию времени на CentOS7. Эта статья может быть актуальна практически для любого дистрибутива Unix, не только CentOS 7. Если у Вас остались вопросы - задавайте их в комментариях.

Немно­го тео­рии. В любом ком­пью­те­ре есть два вида часов. Одни аппа­рат­ные (ЧРВ — часы реаль­но­го вре­ме­ни или RTC — real time clock), кото­рые рабо­та­ют даже при выклю­чен­ном бло­ке пита­ния, на это у них есть бата­рей­ка на мате­рин­ской пла­те. Дру­гие про­грамм­ные, то есть часы опе­ра­ци­он­ной систе­мы. Пока­за­ния этих часов могут раз­ли­чать­ся. При этом про­грамм­ные часы опи­ра­ют­ся на пока­за­ния аппа­рат­ных при стар­те опе­ра­ци­он­ной систе­мы. А в даль­ней­шем могут син­хро­ни­зи­ро­вать­ся через интер­нет с эта­лон­ны­ми и кор­рек­ти­ро­вать ход аппаратных.
В боль­шин­стве слу­ча­ев если ком­пью­тер рабо­та­ет под управ­ле­ни­ем опе­ра­ци­он­ной систе­мой Windows пока­за­ния аппа­рат­ных и про­грамм­ных часов сов­па­да­ют. В linux же чаще все­го аппа­рат­ные часы настра­и­ва­ют по грин­ви­чу (вре­ме­ни нуле­во­го мери­ди­а­на), а про­грамм­ные по необ­хо­ди­мо­му сме­ще­нию для часо­во­го поя­са где рас­по­ло­жен сервер.
Абсо­лют­ное боль­шин­ство про­грамм (при­ло­же­ний и сер­ви­сов) в сво­ей рабо­те опи­ра­ют­ся на пока­за­ния систем­ных (про­грамм­ных) часов.

Для чего нужно корректировать часы

  • Что­бы избе­жать вче­раш­них ново­стей и пуб­ли­ка­ций зав­траш­не­го дня. К при­ме­ру часы ваше­го сер­ве­ра идут по вре­ме­ни Хаба­ров­ска, а основ­ные посе­ти­те­ли из Евро­пы (раз­ни­ца UTC +11). В такой ситу­а­ции вечер­ний посе­ти­тель уви­дит «зав­траш­ние» даты на сай­те. Так как когда в Евро­пе вечер, то в Хаба­ров­ске утро сле­ду­ю­ще­го дня.
  • Что­бы было удоб­но настра­и­вать зада­ния Cron.
  • Что­бы вре­мя созда­ния фай­лов сов­па­да­ло с фак­ти­че­ским и не вво­ди­ло Вас в заблуждение.

Как настроить время вашего сервера

Про­ве­рим, что пока­зы­ва­ют аппа­рат­ные часы, для чего будем исполь­зо­вать три вари­ан­та коман­ды hwclock:

При­ве­ден­ный при­мер для слу­чая когда аппа­рат­ные часы идут по UTC , а сер­вер настро­ен на Мос­ков­ский часо­вой пояс. Осо­бых пояс­не­ний тре­бу­ет опция —utc вывод вре­ме­ни про­из­во­дит­ся (фор­ми­ру­ет­ся) с усло­ви­ем, что аппа­рат­ные часы идут по вре­ме­ни UTC . То есть пока­за­ния долж­ны сов­па­дать с жела­е­мым вре­ме­нем на сер­ве­ре. Опция же —localtime наобо­рот пока­зы­ва­ет вре­мя аппа­рат­ных часов без вся­ких поправок.

Несколько полезных команд установки времени аппаратных часов

Уста­нав­ли­ва­ем вре­мя аппа­рат­ных часов рав­ное системному:

Уста­нав­ли­ва­ем вре­мя систем­ных часов на осно­ва­нии ЧРВ:

Уста­нав­ли­ва­ем вре­мя рав­ное указанному:

Значение временной зоны

Дан­ные вре­мен­ной зоны для аппа­рат­ных часов в Centos хра­нят­ся в фай­ле /etc/sysconfig/clock.
Для мос­ков­ской вре­мен­ной зоны в слу­чае когда аппа­рат­ные часы идут по UTC он име­ет сле­ду­ю­щее содержимое:

Где ZONE — это наш часо­вой пояс, UTC гово­рит о том, что аппа­рат­ные часы сер­ве­ра идут по уни­вер­саль­но­му вре­ме­ни UTC , ARC в зна­че­нии false — зна­чит исполь­зу­ет­ся нор­маль­ное зна­че­ние века (эпо­хи) UNIX .
Подроб­нее по кон­фи­гу­ра­ции фай­ла /etc/sysconfig/clock в CentOS мож­но почи­тать в офи­ци­аль­ной документации.

Системные часы операционной системы CentOS

Для систем­ных (про­грамм­ных) часов CentOS исполь­зу­ет­ся коман­да date.

При­ве­ден­ный при­мер для слу­чая когда опе­ра­ци­он­ная систе­ма исполь­зу­ет Мос­ков­ский часо­вой пояс. Здесь опция —utc гово­рит, что необ­хо­ди­мо пока­зать вре­мя нуле­во­го мери­ди­а­на, то есть без попра­вок на часо­вой пояс.

Изменение временной зоны (часового пояса) в CentOS

Для изме­не­ния вре­ме­ни систем­ных часов, если их пока­за­ния не соот­вет­ству­ют необ­хо­ди­мо­му реги­о­ну, необ­хо­ди­мо про­де­лать сле­ду­ю­щие нехит­рые операции.
В нача­ле, сде­ла­ем резерв­ную копию суще­ству­ю­ще­го фай­ла вре­мен­ной зоны (часо­во­го пояса).

Это хоро­шая прак­ти­ка, когда вы дела­е­те резерв­ные копии ори­ги­наль­ных фай­лов конфигурации ?

Затем, созда­ем ссыл­ку на необ­хо­ди­мую вре­мен­ную зону.

(в нашем слу­чае /usr/share/zoneinfo/Asia/Bishkek)

где Europe/Moscow необ­хо­ди­мая вре­мен­ная зона. Пол­ный спи­сок доступ­ных часо­вых поя­сов смот­рим в ката­ло­ге /usr/share/zoneinfo/.
При необ­хо­ди­мо­сти мож­но уста­но­вить зна­че­ние вре­ме­ни вручную:

где MM – месяц, DD – день, hh – час, mm – минуты.
То есть что­бы задать, к при­ме­ру, 18 мар­та 20 часов 15 минут, нуж­но вве­сти следующее:

Более подроб­но о коман­де date, мож­но почи­тать в мануа­ле, выпол­нив команду:

Настройка сервера времени ntp

Со вре­ме­нем часы могут убе­гать или отста­вать, поэто­му вре­мя от вре­ме­ни их нуж­но син­хро­ни­зи­ро­вать с эта­лон­ны­ми. Для это­го в CentOS исполь­зу­ет­ся демон ntpd.
Уста­но­вим демон ntpd если его нет в системе:

Одно­крат­но син­хро­ни­зи­ру­ем время:

Если полу­чи­ли что-то вро­де the NTP socket is in use, exiting — зна­чит ntpd демон уже запу­щен. В этом слу­чае оста­но­вим его:

Настра­и­ва­ем рабо­ту ЧРВ в BIOS на вре­мя по UTC :

Этой коман­дой мы при­сво­и­ли зна­че­ние вре­ме­ни аппа­рат­ных часов рав­ным систем­но­му вре­ме­ни. Как вы помни­те, систем­ные часы мы син­хро­ни­зи­ро­ва­ли коман­да­ми выше.
Про­ве­рим содер­жи­мое фай­ла /etc/sysconfig/clock что­бы систе­ма после загруз­ки пра­виль­но выстав­ля­ла мест­ное вре­мя. Для Моск­вы он дол­жен содер­жать следующее:

Настра­и­ва­ем демон ntpd на авто­за­груз­ку при стар­те опе­ра­ци­он­ной системы:

Запус­ка­ем демон син­хро­ни­за­ции времени:

Про­ве­ря­ем систем­ное вре­мя командой:

Оно долж­но сов­па­дать с реальным.
Про­ве­рим, син­хро­ни­зи­ру­ет­ся ли систем­ное вре­мя с сер­ве­ра­ми эта­лон­но­го вре­ме­ни (ntp server) и все ли там в поряд­ке коман­дой ntpq -p:

remote refid st t when poll reach delay offset jitter test . danzuck . ch 162 . 23 . 41 . 56 2 u 1 64 1 12 . 280 -23 . 298 0 . 031 fw . ams . nl . alexs 82 . 197 . 221 . 30 4 u 2 64 1 2 . 086 -19 . 002 0 . 000 ntp0 . mediamatic 193 . 0 . 0 . 229 2 u 1 64 1 0 . 998 -19 . 938 0 . 000 elara . mysnip . de . INIT . 16 u - 64 0 0 . 000 0 . 000 0 . 000

Демон ntpd вклю­ча­ет в ядре Linux режим «11 minute mode». В этом режи­ме каж­дые 11 минут син­хро­ни­зи­ру­ют­ся систем­ные и аппа­рат­ные часы. По-умол­ча­нию он (режим «11 minute mode») выклю­чен и вклю­ча­ет­ся толь­ко когда какой-то сер­вис попро­сит вклю­чить этот режим. Демон ntpd как раз его и (режим «11 minute mode») вклю­ча­ет. Так что допол­ни­тель­но син­хро­ни­зи­ро­вать аппа­рат­ные часы по зна­че­нию систем­ных нет необходимости.
P.S. Теперь систем­ные и аппа­рат­ные часы ваше­го сер­ве­ра будут авто­ма­ти­че­ски син­хро­ни­зи­ро­вать­ся с эта­лон­ны­ми сер­ве­ра­ми и все­гда пока­зы­вать точ­ное время.

В появив­шей­ся таб­ли­це мы видим сер­ве­ра с кото­ры­ми син­хро­ни­зи­ро­ван наш ntpd .

remote

Имя уда­лен­но­го NTP-сервера.
refid
Ука­зы­ва­ет, отку­да каж­дый сер­вер полу­ча­ет вре­мя в дан­ный момент.
st
Stratum это чис­ло от 1 до 16, ука­зы­ва­ю­щее на точность
сер­ве­ра. Еди­ни­ца озна­ча­ет мак­си­маль­ную точ­ность, 16 -- сервер
недо­сту­пен. Уро­вень ваше­го сер­ве­ра будет равен уров­ню наи­ме­нее точного
уда­лен­но­го сер­ве­ра плюс 1.
poll
Интер­вал меж­ду опро­са­ми (в секун­дах). Зна­че­ние будет изменяться
меж­ду мини­маль­ной и мак­си­маль­ной часто­той опро­сов. В начале
интер­вал будет неболь­шим, что­бы син­хро­ни­за­ция происходила
быст­ро. После того как часы син­хро­ни­зи­ру­ют­ся, интер­вал начинает
уве­ли­чи­вать­ся, что­бы умень­шить тра­фик и нагруз­ку на популярные
сер­ве­ра времени.

reach
Вось­ме­рич­ное пред­став­ле­ние мас­си­ва из 8 бит, отражающего
резуль­та­ты послед­них вось­ми попы­ток соеди­не­ния с сер­ве­ром. Бит
выстав­лен, если уда­лен­ный сер­вер ответил.

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

offset
Наи­бо­лее важ­ное поле. Раз­ни­ца меж­ду вре­ме­нем локаль­но­го и
уда­лен­но­го сер­ве­ров. В ходе син­хро­ни­за­ции это зна­че­ние должно
пони­жать­ся, ука­зы­вая на то, что часы локаль­ной маши­ны идут все
точнее.

jitter
Дис­пер­сия (Jitter) -- это мера ста­ти­сти­че­ских откло­не­ний от
зна­че­ния сме­ще­ния (поле offset) по несколь­ким успеш­ным парам
запрос-ответ. Мень­шее зна­че­ние дис­пер­сии предпочтительнее,
посколь­ку поз­во­ля­ет точ­нее син­хро­ни­зи­ро­вать время.

Зна­че­ние зна­ков перед име­на­ми серверов

- Озна­ча­ет, что локаль­ный сер­вис NTP не пред­по­чи­та­ет этот сервер
+ Озна­ча­ет, что локаль­ный сер­вис NTP пред­по­чи­та­ет этот сервер
x Отме­ча­ет пло­хой хост
* Ука­зы­ва­ет на теку­щий наи­бо­лее пред­по­чти­тель­ный сервер

Что такое NTP-сервер?

NTP озна­ча­ет сете­вой про­то­кол времени.

Это сете­вой про­то­кол, кото­рый син­хро­ни­зи­ру­ет часы меж­ду ком­пью­тер­ны­ми систе­ма­ми по сети.

Он будет сохра­нять оди­на­ко­вое вре­мя (точ­ное вре­мя) для всех систем, кото­рые под­клю­че­ны к NTP-сер­ве­ру через NTP или кли­ент Chrony.

NTP обыч­но может под­дер­жи­вать вре­мя с точ­но­стью до десят­ков мил­ли­се­кунд по обще­до­ступ­но­му Интер­не­ту и может дости­гать точ­но­сти, пре­вы­ша­ю­щей одну мил­ли­се­кун­ду, в локаль­ных сетях при иде­аль­ных условиях.

Он исполь­зу­ет про­то­кол поль­зо­ва­тель­ских дей­та­грамм ( UDP ) на пор­ту номер 123 для отме­ток вре­ме­ни отправ­ки и получения.

Это кли­ент / сер­вер­ное приложение.

Он отправ­ля­ет и полу­ча­ет вре­мен­ные мет­ки с исполь­зо­ва­ни­ем про­то­ко­ла поль­зо­ва­тель­ских дей­та­грамм ( UDP ) на пор­ту 123.

Что такое NTP-клиент?

NTP-кли­ент син­хро­ни­зи­ру­ет свои часы с сете­вым сер­ве­ром времени.

Что такое Chrony ?

Chrony — это заме­на NTP-клиента.

Он может син­хро­ни­зи­ро­вать систем­ные часы с боль­шей точ­но­стью и может быть осо­бен­но поле­зен для систем, кото­рые не под­клю­че­ны к сети все время.

Зачем нам нужен NTP сервер?

Что­бы все сер­ве­ры в вашей орга­ни­за­ции были син­хро­ни­зи­ро­ва­ны с точ­ным вре­ме­нем выпол­не­ния зада­ний, осно­ван­ных на времени.

Что­бы про­яс­нить это, я рас­ска­жу вам сценарий.

Ска­жем, напри­мер, у нас есть два сер­ве­ра (Server1 и Server2).

Server1 обыч­но выпол­ня­ет пакет­ные зада­ния в 10:55, а затем Server2 необ­хо­ди­мо выпол­нить дру­гое зада­ние в 11:00 на осно­ва­нии отче­та о завер­ше­нии зада­ния Server1.

Если обе систе­мы исполь­зу­ют в раз­ное вре­мя (если одна систе­ма опе­ре­жа­ет дру­гие, дру­гие отста­ют от этой кон­крет­ной), мы не смо­жем это сделать.

Для это­го нам нуж­но настро­ить NTP .

Наде­юсь, это убра­ло ваши сомне­ния по пово­ду необ­хо­ди­мо­сти NTP .

В этой ста­тье мы будем исполь­зо­вать сле­ду­ю­щую настрой­ку, что­бы про­ве­рить рабо­ту NTP

СТОРОНА NTP-СЕРВЕРА: Как установить NTP-сервер на Linux?

Не суще­ству­ет раз­ных паке­тов для NTP-сер­ве­ра и NTP-кли­ен­та, так как это модель кли­ент / сервер.

Пакет NTP досту­пен в офи­ци­аль­ном репо­зи­то­рии дис­три­бу­ти­ва, поэто­му исполь­зуй­те его для установки.

Для нормального функционирования сервера требуется корректно настроить текущее время и его своевременное обновление с определенной периодичностью. Как правильно произвести смену часового пояса в centos в случае его изменения или неверного указания во время установки – одна из тем этой статьи. Также я затрону вопрос установки и использования утилиты разовой синхронизации времени ntpdate и настройки сервиса точного времени ntp.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на . Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Цели статьи

  1. Показать способы настройки и смены времени и часового пояса в centos.
  2. Рассказать о средствах для автоматической синхронизации времени.
  3. Настройка своего сервера точного времени на основе centos.

Данная статья является частью единого цикла статьей про сервер Centos.

Время на сервере CentOS

Почему важно, чтобы в системе было правильное время? Причин может быть несколько:

  • Для корректного логирования событий той или иной службы. Например, у вас в сети случился какой-то инцидент и вы его расследуете. Удобно, когда время на всех машинах сети одинаковое, это упрощает проверку и сопоставление различных действий.
  • Могут возникнуть проблемы с работой в доменной среде windows, если у вас существенно различаются данные системных часов. Это актуально, если у вас файловый сервер centos интегрирован в доменную сеть windows. Пользователь в определенный момент не сможет получить доступ к файлам, если время сервера превысит допустимое отклонение от контроллера домена (более 5 минут). Это связано с особенностью работы протокола аутентификации Kerberos.
  • На вашем сервере может располагаться web хостинг с сайтами, в которых указано время публикации материала. Если часы сервера не будут совпадать с временной зоной основной аудитории, то могут возникать курьезные моменты, когда посетители увидят статьи, опубликованные в будущем. Так же некорректно будет работать статистика, основанная на анализе логов apache или nginx.
  • Вы используете планировщик cron в своей работе. Для корректной и предсказуемой работы запланированных событий дата и часовой пояс на сервере должны быть настроены правильно.

Чтобы избежать проблем в подобных ситуациях, займемся настройкой времени, даты и часового пояса. Кратко этот вопрос я разбирал в отдельном материале по базовой настройке centos после установки. Рекомендую с ним ознакомиться, там много полезного.

Установка и настройка времени в CentOS

Первым делом проверим текущую дату и время на сервере с помощью команды date:

Или более подробной команды timedatectl.

Узнать время в centos

Monдень недели, в данном случае понедельник
Oct 21месяц август, 10-е число
11:17:03текущее время часы:минуты:секунды
MSKчасовой пояс
2019текущий год

Чтобы вручную настроить правильное время, можно воспользоваться командой с дополнительными параметрами:

Здесь MM - месяц, DD - число, hh - час, mm - минуты. Таким образом, чтобы изменить дату на 22 октября, 17:10, выполняем в консоли:

Чтобы узнать текущее время без учета часового пояса, то есть время по UTC, можно воспользоваться следующим ключом команды date:

В выводе видим время относительно нулевого меридиана, без поправок на часовой пояс. После установки корректного времени переходим к настройке часового пояса.

Установка и настройка часового пояса в CentOS

Как уже было показано раньше, чтобы узнать в каком часовом поясе находятся системные часы сервера centos, необходимо воспользоваться командой date. В нашем случае timezone указана как MSK. Это общепризнанное сокращение для часовой зоны Московское время (Moscow Time). Если у вас указан другой часовой пояс, а вы хотите установить московскую временную зону, то вам нужно выполнить следующие процедуры:

Обновить системный список часовых поясов tzdata с помощью yum:

Настраиваем часовой пояс с помощью утилиты timedatectl.

Эта утилита выполняет очень простое действие. Она проставляет символьную ссылку с нужного файла timezone из /usr/share/zoneinfo на файл /etc/ localtime . Тот же самый результат вы получите, если сделаете это сами вручную.

Перед этим лучше сделать резервную копию текущей timezone на всякий случай:

centos timezone

Далее найдите в каталоге /usr/share/zoneinfo/ необходимую временную зону. В нашем случае это файл Moscow в папке Europe.

Установить символьную ссылку на указанный файл timezone:

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

Синхронизация времени с помощью chrony, ntpdate

Способов синхронизации времени в centos существует как минимум три:

  • ручной с помощью утилиты ntpdate
  • автоматический при помощи сервиса ntp или chrony
  • автоматический через утилиту из пакета systemd - timesyncd.

Запускаем синхронизацию времени:

Если получите ошибку

значит утилита у вас не установлена. Установить ее можно из базового репозитория.

Это актуально только для 7-й версии, в В CentOS 8 ntp и ntpdate убрали из репозиториев . Для синхронизации времени можно использовать только chrony. Ее мы рассмотрим ниже.

Утилита ntpdate провела синхронизацию, в результате которой к моему системному времени было добавлено 0.001664 секунды для приближения к эталонному. Если в результате работы синхронизации вы получаете ошибку: no server suitable for synchronization found то попробуйте в работе утилиты использовать непривилегированный порт. По-умолчанию ntpdate работает по 123 порту. Если он закрыт на фаерволе, то помочь в синхронизации поможет следующий параметр:

Если у вас запуск ntpdate завершается ошибкой - the NTP socket is in use, exiting, значит у вас уже установлена и запущена служба ntpd, которая заняла udp порт, необходимый для работы ntpdate. Установкой и настройкой этой службы мы и займемся далее.

Как я уже сказал, в CentOS 8 служба ntpd и утилита ntpdate стали недоступны в базовых репозиториях. Возможно, их как-то удастся установить из сторонних репозиториев, но большого смысла нет. Можно воспользоваться программой chrony. Ставим ее:

Запускаем и добавляем в автозагрузку.

Синхронизация времени в centos

Программа стартовала и уже выполнила синхронизацию с источниками точного времени в интернете. Каких-то особых настроек для получения точного времени больше не надо. Служба будет постоянно работать и выполнять синхронизацию. Проверим это с помощью timedatectl.

timedatectl

systemd-timesyncd

Отдельно пару слов о службе systemd-timesyncd, которая в системах с systemd выступает в роли простого sntp клиента, в отличие от chrony и ntp, которые в том числе могут работать в качестве сервера времени. В Debian служба systemd-timesyncd присутствует в составе systemd и ей можно пользоваться, что достаточно удобно. Легкий полновесный клиент, который по дефолту есть в составе системы.

Я сначала не мог понять, что с systemd-timesyncd в Centos. Команда вроде есть и работает, но как оказалось, это просто обертка над chrony. Реально команда управляет именно chrony и без него не работает. Без него вы получите ошибку, при попытке активировать компонент timesyncd.

Если вернете chrony в систему, то timedatectl будет запускать именно его. Немного погуглив, я понял в чем тут дело. Red Hat компилирует systemd без компонента systemd-timesyncd, предлагая по дефолту именно chrony.

Настройка сервера ntp в CentOS 7

Сервер времени ntp использует в своей работе одноименный протокол - Network Time Protocol, которому для работы необходим UDP порт 123. Так что перед установкой и настройкой службы времени убедитесь, что на фаерволе открыт этот порт.

Устанавливаем сервер ntp:

Теперь отредактируем файл конфигурации /etc/ntp.conf , удалив все лишнее:

После завершения редактирования файла настроек запускаем службу синхронизации времени:

Проверяем запустился ли сервер:

настройка ntp centos

Все в порядке, служба слушает положенный порт 123. Проверим еще на всякий случай системные логи centos:

centos ntp server
настройка ntpd centos

Все в порядке, сервер запущен и полностью готов к работе.

Теперь настроим автозапуск ntp вместе с загрузкой centos:

Наблюдать за работой службы ntp можно с помощью команды ntpq -p:

настройка ntp сервера

Что значат все эти данные:

remoteАдрес удаленного эталона времени, с которого была синхронизация
refidУказывает, откуда каждый эталон получает точное время. Это могут быть другие сервера времени, система GPS и другое
stStratum (уровень) это число от 1 до 16, которое указывает на точность эталона. 1- максимальная точность, 16 - сервер недоступен. Уровень вашего сервера будет равен уровню наименее точного удаленного эталона плюс 1.
pollИнтервал в секундах между опросами
reachВосьмеричное представление массива из 8 бит, отражающего результаты последних восьми попыток соединения с эталоном. Бит выставлен, если удаленный сервер ответил.
delayВремя задержки ответа на запрос о точном времени
offsetРазница между вашим и удаленным сервером
jitterДисперсия (Jitter) - это мера статистических отклонений от значения смещения (поле offset) по нескольким успешным парам запрос-ответ. Чем меньше значение дисперсии, тем лучше, поскольку позволяет точнее синхронизировать время.

Настройка сервера chrony в CentOS 8

С сервером времени chrony все будет практически идентично ntpd. Принцип работы и формат конфигов у них примерно одинаковый. Если вы еще не установили chrony, то сделайте это и добавьте его в автозагрузку.

Конфигурация сервера времени chrony располагается в файле /etc/chrony.conf. Ниже представлен минимум настроек, необходимых, чтобы он работал в качестве локального сервера времени для клиентов.

Не забываем настраивать firewalld, если отдельно не настраивали iptables, для доступа клиентов к серверу.

Теперь можно перезапустить chrony и проверить синхронизацию времени с какого-нибудь клиента в сети.

Идем на другой компьютер и там проверяем работу нашего сервера времени.

Часто задаваемые вопросы по теме статьи (FAQ)

Есть ли принципиальная разница, что использовать для синхронизации времени, ntp или chrony?

Мне отличия не известны. В общем случае, обе утилиты делают одно и то же. Формат конфигов у них тоже одинаковый. Конечно же, программы имеют отличия, но в общем случае, для типового сервера нет принципиальной разницы.

Нужно ли перезагружать сервер после изменения времени?

Я бы рекомендовал так делать. Если перезагрузиться совсем нельзя, я рекомендую вручную перезапустить основные сервисы. Не все могут автоматически корректно отработать внезапное изменение времени. Может начаться путаница в логах, особенно если время изменилось существенно (на несколько часов).

У меня никак не синхронизируется время на сервере. С чем это может быть связано?

Некоторые провайдеры блокируют порты, необходимые для синхронизации времени. Связано это с тем, что серверы времени могут быть использованы для организации ddos атак. Обычно в таком случае провайдер предоставляет адреса своих внутренних ntp серверов, с которых можно произвести синхронизацию. Так что если у вас никак не работает синхронизация времени на арендованном сервере, рекомендую написать вопрос в тех. поддержку и прояснить этот момент. Подробнее об этом рассказываю в отдельной статье.

Возможна ли одновременная работа chrony и ntpd?

Нет, это не возможно. Да и не имеет практического смысла. Обе эти программы проверяют при запуске, свободен ли udp порт 123 на сетевом интерфейсе. Если он занят другой программой, то запуск завершится с ошибкой.

Как лучше сделать - синхронизировать время всех серверов с внешним источником или настроить сервер времени внутри своей локальной сети?

В общем случае лучше настроить у себя в локальной сети сервер времени и синхронизироваться с него. Так у вас гарантированно у всех серверов будет одинаковое время, даже если по какой-то причине сам сервер времени не будет синхронизироваться с внешним источником. Это лучше, нежели разное время на всех серверах.

Заключение

Не понравилась статья и хочешь научить меня администрировать? Пожалуйста, я люблю учиться. Комментарии в твоем распоряжении. Расскажи, как сделать правильно!

Подведем итог опубликованного материала. Мы рассмотрели практически все, что связано со временем на сервере CentOS. Да и не только на нем, вся информация в статье актуальна практически для любого Linux дистрибутива. Мы научились устанавливать время, изменять часовой пояс, синхронизировать время с помощью ntp, chrony и настраивать сервер времени в локальной сети.

Напоминаю, что данная статья является частью единого цикла статьей про сервер Centos.


Network Time Protocol – NTP- является протоколом, который работает через порт UDP 123 на транспортном уровне и позволяет компьютерам синхронизировать время.

Установка и настройка NTP демона.
1. Покет с NTP сервером предоставляется по умолчанию из официальных CentOS / RHEL 7 репозиториев и может быть установлен:

2. После установки сервера, первое что необходимо сделать, так это перейти на сайт с официальными NTP серверами и выбрать нужный пул для вашего местоположения.

Для примера, я буду использовать следующие пулы:

4. Кроме того, необходимо позволить клиентам из вашей сети синхронизировать время с сервером. Для этого добавьте следующую строку в файл конфигурации NTP, где есть ограничения управления. Замените данный ИП и маску на Вашу, соответственно:

5. Если вам нужна дополнительная информация для устранения неполадок (в случае если у вас возникли какие-либо проблемы с вашим NTP демоном), то стоит добавить файл журнала (лог файл), в котором будет записывать все проблемы с сервером NTP, а для этого, открываем:

и добавляем строчку:

6. После того как вы отредактировали файл конфигурации со всеми настройками что выше, сохраните и закройте файл ntp.conf.

Добавление правил в Firewall и запуск NTP демона.
7. Услуги NTP используют UDP-порт 123 на транспортном уровне OSI (уровень 4). И для корректной работы ntp сервера, нужно открыть этот порт на RHEL / CentOS 7, а можно это сделать:

8. После того как вы открыли в брандмауэре порт 123, то следующим шагом будет запуск сервера NTP:

И добавлю его в автозагрузку ОС:

Проверка синхронизации времени.
9. После того как демон NTP был запущен, подождите несколько минут для синхронизации времени с его списком серверов, выполните следующие команды чтобы проверить статус NTP синхронизации и системного времени:

10. Если вы хотите запросить и синхронизироваться NTP с pool, то используейте команду Ntpdate и затем адрес сервера (или серверов):

Читайте также: