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:
Демон 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 часов практики и доступ навсегда.Цели статьи
- Показать способы настройки и смены времени и часового пояса в centos.
- Рассказать о средствах для автоматической синхронизации времени.
- Настройка своего сервера точного времени на основе centos.
Данная статья является частью единого цикла статьей про сервер Centos.
Время на сервере CentOS
Почему важно, чтобы в системе было правильное время? Причин может быть несколько:
- Для корректного логирования событий той или иной службы. Например, у вас в сети случился какой-то инцидент и вы его расследуете. Удобно, когда время на всех машинах сети одинаковое, это упрощает проверку и сопоставление различных действий.
- Могут возникнуть проблемы с работой в доменной среде windows, если у вас существенно различаются данные системных часов. Это актуально, если у вас файловый сервер centos интегрирован в доменную сеть windows. Пользователь в определенный момент не сможет получить доступ к файлам, если время сервера превысит допустимое отклонение от контроллера домена (более 5 минут). Это связано с особенностью работы протокола аутентификации Kerberos.
- На вашем сервере может располагаться web хостинг с сайтами, в которых указано время публикации материала. Если часы сервера не будут совпадать с временной зоной основной аудитории, то могут возникать курьезные моменты, когда посетители увидят статьи, опубликованные в будущем. Так же некорректно будет работать статистика, основанная на анализе логов apache или nginx.
- Вы используете планировщик cron в своей работе. Для корректной и предсказуемой работы запланированных событий дата и часовой пояс на сервере должны быть настроены правильно.
Чтобы избежать проблем в подобных ситуациях, займемся настройкой времени, даты и часового пояса. Кратко этот вопрос я разбирал в отдельном материале по базовой настройке centos после установки. Рекомендую с ним ознакомиться, там много полезного.
Установка и настройка времени в CentOS
Первым делом проверим текущую дату и время на сервере с помощью команды date:
Или более подробной команды timedatectl.
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 на всякий случай:
Далее найдите в каталоге /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. Ставим ее:
Запускаем и добавляем в автозагрузку.
Программа стартовала и уже выполнила синхронизацию с источниками точного времени в интернете. Каких-то особых настроек для получения точного времени больше не надо. Служба будет постоянно работать и выполнять синхронизацию. Проверим это с помощью 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 , удалив все лишнее:
После завершения редактирования файла настроек запускаем службу синхронизации времени:
Проверяем запустился ли сервер:
Все в порядке, служба слушает положенный порт 123. Проверим еще на всякий случай системные логи centos:
Все в порядке, сервер запущен и полностью готов к работе.
Теперь настроим автозапуск ntp вместе с загрузкой centos:
Наблюдать за работой службы ntp можно с помощью команды ntpq -p:
Что значат все эти данные:
remote | Адрес удаленного эталона времени, с которого была синхронизация |
refid | Указывает, откуда каждый эталон получает точное время. Это могут быть другие сервера времени, система GPS и другое |
st | Stratum (уровень) это число от 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 и затем адрес сервера (или серверов):
Читайте также: