Установка и настройка NTP-сервера на Linux CentOS 8
Установка и настройка NTP-сервера на Linux CentOS 8
Опубликовано: 17.12.2020
Сервер синхронизации времени NTP помогает актуализировать время на всех узлах сети. В инструкции рассказано о его установке и настройке на Linux CentOS 8.
Установка сервера
В CentOS 8 пакетом для синхронизации времени является chrony — он пришел на смену ntpd.
Устанавливаем его командой:
dnf install chrony
Разрешаем автозапуск и стартуем сервис:
systemctl enable chronyd —now
Настройка NTP
Открываем файл с настройками:
Настраиваем серверы, с которых наш NTP будет брать эталонное время. Например:
#pool 2.centos.pool.ntp.org iburst
server 192.168.0.100 iburst prefer
server 192.168.0.110 iburst
server 127.127.1.0
- pool — указывает на выполнение синхронизации с пулом серверов.
- server — указывает на выполнение синхронизации с сервером.
- iburst — отправлять несколько пакетов (повышает точность).
- prefer — указывает на предпочитаемый сервер.
- server 127.127.1.0 — позволит в случае отказа сети Интернет брать время из своих системных часов.
* в данном примере мы закомментировали указанный пул по умолчанию и добавили свои серверы 192.168.0.100 и 192.168.0.110.
* в данном примере мы разрешаем синхронизацию времени с нашим сервером для узлов сети 192.168.0.0/255.255.255.0.
systemctl restart chronyd
Добавляем правило в брандмауэр:
firewall-cmd —permanent —add-service=ntp
Тестирование
Проверить состояние получения эталонного времени можно командой:
Мы должны увидеть, примерно, следующее:
210 Number of sources = 2
MS Name/IP address Stratum Poll Reach LastRx Last sample
===============================================================================
^? 127.127.1.0 0 6 0 — +0ns[ +0ns] +/- 0ns
^* server-01.dmosk.local 2 6 17 55 +629us[+1184us] +/- 152ms
Отобразить текущее время можно командой:
Для настройки часового пояса применяем команду:
timedatectl set-timezone Europe/Moscow
* московское время (GMT+3).
Проверить отдачу времени сервером можно введя команду на другом Linux:
* где 192.168.0.15 — адрес нашего NTP-сервера.
Правильный ответ имеет следующий вид:
ntpdate[3576]: adjust time server 192.168.0.15 offset 0.017657 sec
* время было рассинхронизировано на 0.017657 секунд.
Настройка клиента Linux
Для клиентов можно выбрать несколько стратегий настройки — мы рассмотрим 3:
CentOS: Настройка даты и времени, пояса, синхронизация с NTP
10.12.2019
VyacheslavK
CentOS, Linux
Комментариев пока нет
В данной статье я расскажу, как настроить время, дату и изменить часовой пояс(timezone) в Linux CentOS, как выполнять синхронизацию времени с NTP сервером и исправить типичные ошибки.
На серверах существует два вида часов. Аппаратные (real time clock), которые работают даже при выключенном сервере и программные часы операционной системы. Показания этих двух часов, могут отличаться. При этом, после запуска операционной системы, программные часы опираются на показания аппаратных и в дальнейшем могут корректироваться системой.
Абсолютное большинство программ в своей работе используют время программных часов.
Hwclock: настройка аппаратного (системного) времени
Чтобы проверить аппаратное время в Linux используется утилита hwclock:
- hwclock —localtime — проверка аппаратного времени без поправки
- hwclock —utc – проверка времени с условием, что аппаратные часы идут по времени UTC
[root@server etc]# hwclock —localtime
[root@server etc]# hwclock —utc
Чтобы установить аппаратное время равное системному времени, выполните команду:
Чтобы установить конкретное время, выполните:
# hwclock —set —date «27 Nov 2019 17:30»
Ручная настройка времени в CentOS
В Linux за программное время отвечает утилита date или timedatectl. Если вызывать утилиту date без параметров, она покажет текущее время на сервере:
[root@server etc]# date
Если вы хотите выставить время вручную, можно воспользоваться утилитой date с дополнительными ключами:
Где MM – месяц, DD — день, hh – час, mm – минуты.
Для получения расширенной информации о дате, времени, поясе, синхронизации, настройках перехода на сезонное (летнее/зимнее) время (DST), используется утилита timedatectl. Она дает более подробную информацию о настройках времени на сервере.
Timedatectl также позволяет изменить время:
# timedatectl set-time ‘2019-11-27 17:51:00’
Настройка часового пояса в CentOS
Чтобы время на сервере CentOS Linux соответствовало вашему часовому поясу, его можно изменить вручную. Для этого есть две утилиты:
- timedatectl
- tzdata
Чтобы изменить часовой пояс через утилиту timedatectl, выполните команду:
# timedatectl set-timezone Europe/Moscow
Или же можно использовать tzdata. Чтобы воспользоваться данным методом, нужно заменить файл /etc/localtime на нужный вам. Весь список часовых поясов, расположен в директории /usr/share/zoneinfo/. Заменим часовой пояс на Asia/Almaty. Делаем бэкап файла locatime:
# mv /etc/localtime /etc/localtime.bak
Создаем симлинк на нужный часовой пояс:
# ln -s /usr/share/zoneinfo/Asia/Almaty /etc/localtime
Настройка синхронизация времени по NTP в CentOS
Вы можете настроить автоматическую синхронизацию времени на вашем сервере с внешним NTP (Network Time Protocol) сервером. Для этого нужно установить сервис ntp. Например, в CentOS 7 установка выполняется через yum:
# yum install ntp -y
После установки, нужно запустить сервис ntpd и добавить его в автозагрузку:
# systemctl start ntpd.service
# systemctl enable ntpd.service
Проверим, что сервис запущен:
[root@server Asia]# service ntpd status
В файле /etc/ntp.conf нужно указать сервера, с которыми нужно синхронизировать время:
Синхронизация времени выполняется последовательно. Если недоступен первый NTP сервер, идет обращение ко второму и т.д.
Можно вручную синхронизировать время с указанным NTP сервером командой:
По умолчанию, ntpd включает в системе режим “11 minute mode”, то есть время будет синхронизироваться каждые 11 минут. Если вы не можете использовать демон ntpd, вы можете настроить синхронизацию времени по крону, добавьте в крон следующую команду:
Используем chronyd для синхронизация времени в CentOS 8
Для CentOS 8 из официальных репозиториев убрали ntp и ntpdate, поэтому для синхронизации времени нужно использовать chrony.
Основные преимущества chrony:
- высокая скорость и точность синхронизции
- корректная работа при отсутствии доступа к эталонным часам (ntpd требуются регулярные запросы)
- по-умолчанию не меняет сразу время при синхронизации, чтобы не нарушить работу программ
- Меньше использует ресурсов
По умолчанию, утилита chrony уже установлена в системе, но если по какой-то причина у вас ее нет, выполните установку:
# dnf install chrony
Как и любой другой сервис, после установки chrony нужно включить и добавить в автозагрузку:
# systemctl start chronyd
# systemctl enable chronyd
Проверим статус сервиса:
Чтобы проверить, что синхронизация работает, выполнитите команду:
Конфигурационный файл chrony — /etc/chrony.conf. В нем нужно указать список NTP серверов, которые нужно использовать для синхронизации. Как и у ntp, у chrony есть интерфейс командной строки chronyc. Чтобы проверить информацию о текущих параметрах синхронизации времени, используйте:
Чтобы проверить информацию о серверах синхронизации, выполните команду:
Если вы хотите установить конкретное время и дату вручную, вы можете воспользоваться утилитой date, но перед этим нужно отключить демон chronyd.
Распространённые ошибки при настройке времени в CentOS
В данном разделе, я опишу частые ошибки, которые возникают при работе с утилитами timedatectl, ntp.
При ручной синхронизации времени, у вас может возникнуть подобная ошибка:
Она означает, что у вас запущен демон ntpd, который блокирует ручную синхронизация времени. Чтобы выполнить ручную синхронизацию, остановите демон ntpd:
# service ntpd stop
И запустите синхронизацию заново:
Аналогичная ошибка может возникать и при работе с утилитой timedatectl:
Теперь нужно отключить автоматическую синхронизацию в самой утилите timedatectl:
# timedatectl set-ntp 0
И выполнить команду по установке конкретного времени:
При работе с часовыми поясами, они могут быть не установлены у вас на сервере и создать симлинк для localtime не получится. Для того, чтобы в системе были доступны часовые пояса, установите утилиту tzdata:
# yum install tzdata -y
Так при ручной синхронизации, часто бывают ошибки вида:
В этом случае проверьте правила firewalld / iptables, и убедитесь, что у вас на сервере открыт UDP порт 123. Так же некоторые хосты синхронизации могут быть недоступны в момент проверки.
Предыдущая статья Следующая статья
Network Time Protocol daemon (Русский)
Network Time Protocol является одним из самых распространённых методов для синхронизации системных часов на GNU/Linux с серверами времени в интернете. Он разработан для смягчения последствий переменной задержки в сети и обычно может поддерживать время с точностью до десятков миллисекунд при синхронизации через интернет. Точность в локальных сетях даже лучше, до одной миллисекунды.
The NTP Project предоставляет эталонную реализацию протокола, которая называется просто NTP. Эта статья описывает, как установить и запустить демон NTP: как клиент, так и сервер.
Смотрите System time#Time synchronization для информации о других реализациях NTP.
Contents
Установка
Установите пакет ntp . По умолчанию ntpd работает в режиме клиента и не требует дополнительной настройки. Вы можете перейти к разделу #Использование, если вас устраивает стандартный файл конфигурации Arch. Для настройки сервера смотрите #Режим сервера NTP.
Настройка
Основной демон ntpd настраивается в файле /etc/ntp.conf . Смотрите ntp.conf(5) для дополнительной информации.
Подключение к серверам NTP
NTP-серверы выстроены в многоуровневую иерархию; уровни называются слоями (англ. strata). Устройства, которые считаются самостоятельными источниками времени, считаются первичными (stratum 0); серверы, непосредственно подключённые к stratum 0 устройствам, считаются источниками stratum 1; серверы, подключенные к stratum 1 серверам, считаются источниками stratum 2 и так далее.
Важно понимать, что слой сервера не может рассматриваться как показатель его точности или надёжности. Обычно для синхронизации пользовательских машин используются stratum 2 серверы. Если вы ещё не знаете, к каким серверам вы собираетесь подключиться, вам следует выбрать пул серверов, расположенный недалеко от вашего местоположения, из списка серверов на pool.ntp.org (альтернативная ссылка).
Начиная с ntp version 4.2.7.p465-2, Arch Linux использует свой собственный стандартный пул NTP-серверов, который предоставляет the NTP Pool Project (смотрите FS#41700). Измените его под свои нужды, например если вы хотите использовать сервера своей страны:
Опция ‘iburst’ рекомендуется, с ее помощью посылается шквал пакетов, если не удается установить соединение с сервером с первого раза. Напротив, опцию ‘burst’ не используйте никогда без особого разрешения, так как Вы можете попасть в «черный список».
Режим сервера NTP
При настройке своего NTP-сервера проверьте, что у вас включен orphan mode, чтобы в случае пропажи интернета он продолжил обслуживать сеть; включите orphan mode с помощью параметра tos (может настроить до stratum 15), чтобы он никогда не использовался, пока интернет доступен:
Затем определите правила, которые позволят клиентам подключиться к вашему сервису (localhost тоже считается клиентом) с помощью команды restrict; в файле уже должна быть примерно такая строка:
Она запрещает всем модифицировать что-либо и предотвращает запрос статуса вашего сервера: nomodify запрещает перенастройку ntpd (через ntpq или ntpdc), а noquery важен для предотвращения дампа статуса ntpd (тоже через ntpq или ntpdc).
Можете также добавить следующие опции:
Если вы хотите изменить что-то из этого, читайте полную документацию по опции «restrict» в ntp.conf(5) , подробные инструкции по ntp и #Использование.
Теперь нужно указать ntpd, какие подключения к Вашему серверу разрешены; если Вы не конфигурируете сервер NTP, следующей строки будет достаточно:
Если Вы желаете принудительно определить адреса по протоколу IPv6, напишите -6 перед IP-адресом или именем хоста (-4 принудительно устанавливает протокол IPv4), например:
Наконец, установите файл-буфер (в котором будет находиться погрешность часов системы) и журнал (лог):
Примерная конфигурация выглядит так:
Использование
По умолчанию пакет настроен на режим клиента и использует отдельные пользователя и группу для избавления от root-прав. При ручном запуске через консоль всегда указывайте опцию -u :
Опция -u используется в двух systemd-службах. Они также используют опцию -g , которая отключает порог (panic-gate). Таким образом они будут синхронизировать время даже если время на NTP-серверах очень сильно отличается от локального системного времени.
Both services are tied to the system’s resolver, and will start synchronizing when an active network connection is detected.
Запуск ntpd при загрузке системы
Включите службу ntpd.service . Смотрите также #Запуск в chroot.
Используйте ntpq для просмотра списка настроенных пиров и статуса синхронизации:
Задержка, смещение и джиттер должны быть отличны от нуля. Серверы, с которыми синхронизируется ntpd, отмечены звёздочкой. Может потребоваться несколько минут, прежде чем ntpd выберет сервер для синхронизации; попробуйте проверить через 17 минут (1024 секунды).
Синхронизация один раз при загрузке
В качестве альтернативы включите службу ntpdate.service для однократной синхронизации (опция -q ) в non-forking режиме (опция -n ) при загрузке системы вместо запуска постоянно работающего демона в фоне. Этот метод не рекомендуется на серверах и в целом на машинах, которые работают без перезагрузки более нескольких дней.
Если синхронизированное время нужно записать в аппаратные часы компьютера, создайте drop-in файл для этой службы:
Советы и рекомендации
Запуск ntpd при подключении сети
ntpd может быть запущен вашим менеджером сети, чтобы демон запускался только при появлении интернета.
Добавьте следующие строки в ваш профиль netctl:
ntpd можно включать/выключать вместе со стартом сетевого соединения с помощью диспетчерских скриптов. Пакет networkmanager-dispatcher-ntpd AUR устанавливает скрипты, настроенные на запуск и остановку ntpd.service одновременно с соединением.
Для Wicd создайте запускающий скрипт в каталоге postconnect и останавливающий скрипт в каталоге predisconnect . Не забудьте сделать их исполняемыми:
KDE может использовать NTP (ntp должен быть установлен) путём нажатия правой кнопкой мыши по часам и выбору синхронизации даты/времени. Однако при этлм демон ntp должен быть отключен. [2]
Использование ntpd с GPS
Многие статьи предлагают настраивать ntpd на получение времени из GPS через общую память, однако как минимум с версии 4.2.8 появился гораздо более хороший метод. Он подключается напрямую к gpsd, так что gpsd должен быть установлен.
Добавьте следующие строки в /etc/ntp.conf :
Для проверки сперва убедитесь, что gpsd работает:
Затем подождите несколько минут и запустите ntpq -p . Он должен показать, что ntpd общается с gpsd:
- Если reach равен 0, это означает, что ntpd не смог пообщаться с gpsd. Подождите несколько минут и попробуйте снова.
- GPS-устройство должно поддерживать PPS. Вы можете проверить своё устройство с помощью команды ppscheck /dev/gps0 .
Запуск в chroot
Создайте каталог /etc/systemd/system/ntpd.service.d/ (если его ещё нет) и drop-in файл customexec.conf в нём со следующим содержимым:
Затем измените /etc/ntp.conf , прописав пути относительно chroot. Измените:
Создайте необходимое chroot-окружение, чтобы getaddrinfo() работал:
и пропишите bind mount для упомянутых файлов:
Затем перезапустите демон ntpd . После перезапуска вы можете проверить, действительно ли он запустился в chroot, посмотрев, куда ведёт символьная ссылка /proc/
Должно ссылаться на /var/lib/ntp вместо / .
Скорее всего придётся немного подождать, чтобы проверить корректность настройки driftfile, так как ntpd пишет и читает не очень часто. Если вы ошиблись, демон отпечатает ошибку в журнале; если всё в порядке, он обновит метку времени. Если вы не наблюдаете ошибок в течение суток и время при этом обновляется, значит всё хорошо.
Ограничение прослушивающих сокетов
Вы можете ограничить сокеты, которые прослушивает ntpd, используя опцию interface:
Centos синхронизация времени интернета
Добрый день уважаемые читатели и гости блога pyatilistnik.org, продолжаем изучать админские операционные системы, в частности CentOS. В прошлый раз мы ее установили и подробнейшим образом познакомились с ее файловой структурой и общими элементами управления. Азы изучены, двигаемся к реальной практике, очень часто бывает ситуация, что в момент установки вы не правильно указали дату или время, либо ваши системные часы отстают получая не правильное время с NTP сервера, вот в таких моментах вам может потребоваться умение устанавливать, менять дату и время на CentOS 7.
На что влияет время в CentOS 7
Я хочу до вас донести, для чего нужно иметь всегда актуальное время на сервере.
- Представить будни системного администратора без аварий, просто не возможно. Это у руководства компаний в мозгу все хорошо и все должно работать 365 дней в году, без отпуска и обеда :), но в реальности желез может сломать, может произойти хакерская атака или глюк операционной системы. Все эти инциденты, всегда оставляют в CentOS 7 системные события или просто логи и вот, чтобы их правильно идентифицировать (момент срабатывания) вы обязаны иметь корректную дату и время в системе. Я много раз в своей практике встречал моменты, когда системные администраторы, на сетевом оборудовании или некоторых серверах, оставляли стандартные, заводские настройки, которые изначально имели не тот часовой пояс, после чего когда нужно было изучать логи, они садились в лужи, так как видели кривую дату.
- Если у вас CentOS является членом домена Active Directory, то там могут быть проблемы. Простой пример у вас есть файловый сервер на CentOS, если разница на нем и на контроллере домена более 5 минут, то люди не смогут получать доступ к своим папкам, так как будут проблемы с аутентификацией по протоколу Kerberos.
- Еще одна большая беда, это запланированные задачи в планировщике cron.
Как установить, изменить время и часовой пояс в CentOS 7
Если вы сами устанавливали сервер с CentOS 7, то в мастере инсталляции вы должны били видеть пункт «Дата и время или Date $ Time»
В данном пункте вы можете настроить:
- Часовой пояс
- Время
- Дату
По умолчанию, все данные будут браться из BIOS компьютера, очень часто системные администраторы этот этап пропускают или ошибаются в настройке, встречал я еще интересные случаи, когда сервера заказывались в аренду за рубежом и там система была предустановлена, и естественно там была другая дата, часовой пояс и время. Так, что учимся все это исправлять.
Синтаксис и настройка времени в CentOS 7
Первый раз попав на сервер, я вам советую выработать привычку вводить команду timedatectl. Обратите внимание, что тут есть все данные о времени, дате с учетом часового пояса и без него, сам часовой пояс, в моем примере это GMT, показан NTP сервер, статус синхронизации.
Теперь у вас на выбор два метода, утилитой date или timedatectl.
Установка даты с помощью date
Посмотрим команду date.
- Sat — это день недели, в моем случае суббота
- Nov — месяц ноябрь
- 11 — число
- 22:06:25 — часы, минуты и секунды
- GMT 2017 — год
Теперь предположим, что вам нужно быстро все исправить и задать правильную дату и время, формат команды date будет иметь вот такой вид:
- MM — месяц
- DD — число
- hh — час
- mm — минуты
Я например, хочу дату 04 июня 10:00 2017
Если вам необходимо получить информацию о времени, без учета часового пояса, то есть ключ UTC. В выводе видим время относительно нулевого меридиана, без поправок на часовой пояс.
Установка даты с помощью timedatectl
Тут все так же просто, есть синтаксис timedatectl set-time ‘YYYY-MM-DD HH:MM:SS’
- YYYY — год
- MM — месяц
- DD — число
- HH:MM:SS — часы, минуты, секунды.
Все дату и время мы настроили, давайте зададим правильный часовой пояс.
Установка и настройка часового пояса в CentOS 7
Для того, чтобы задать нужный вам часовой пояс в операционной системе CentOS 7, есть два метода.
- Через утилиту timedatectl
- Через утилиту tzdata
Утилита timedatectl
Что хорошо, ее можно сразу использовать из коробки. И так как помните у меня часовой пояс GMT это +0, я хочу изменить на Москву, это +3. Для начала посмотрим доступный список часовых поясов в Centos, делается это ключомlist-timezones.
Список будет огромный, поэтому сделаем фильтрацию по европе.
Нахожу тут Europe / Moscow, то что мне и нужно.
Далее его задаем, командой;
Как видите, все прекрасно поменялось.
Утилита tzdata
В CentOS 7, все настройки о часовых поясах, хранятся файле /etc/localtime и способ с использованием утилиты tzdata, заключается в том, чтобы его подменить на нужный.
Делаем резервную копию файла localtime, командой:
Устанавливаем пакет tzdata
Посмотрим список часовых поясов в папке /usr/share/zoneinfo/
Теперь, когда основной файл localtime мы переименовали, можем за место него сделать символическую ссылку из папки /usr/share/zoneinfo/.
Все на этом настройка времени, даты и часового пояса закончена. Но мы же с вами не обезьянки делать постоянно одну и туже работу, поэтому давайте настроим синхронизацию с NTP сервером.
Настройка времени ntp в CentOS
Это на своей рабочей станции вы всегда видите часы перед глазами и расхождение даже на 5 минут будет сразу видно. А на сервер заходят тогда, когда что-то случилось или просто для профилактики, но вряд-ли часто. И в консоли время не показывается. А сбиться оно может. А последствия могут быть разными. Простой вариант: дата создания или редактирования файла будет не верной. А если это почтовый сервер? Вы письмо приняли раньше, чем его отправили? Или запостили новость на сайт завтрашним днем? Дата важна для логов, для множества вещей. Итак, время должно быть точным.
В компьютере время бывает двух видов: аппаратное (BIOS) и программное (операционная система). В Windows при изменении программного времени вы автоматически изменяете и аппаратное, вы даже вряд ли задумывались, что время может быть разное.
Проверить показания системных часов (время в операционной системе) можно командой date:
А так можно посмотреть время на нулевом меридиане с точки зрения вашего сервера:
Проверить показания часов в BIOS можно командой:
Синхронизация времени
Для синхронизации времени используется ntp (network time protocol).
# yum install ntp
В конец файла /etc/sysconfig/ntpd добавим:
которая указывает обновить время в BIOS, а не только в операционной системе.
В файле /etc/ntp.conf есть директивы, указывающие, какой сервер времени использовать. По-умолчанию это:
server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
Возможна ситуация, что ответ от серверов сразу не был получен. По-умолчанию, ntpd через определенный интервал опять повторит запрос. Чтобы уменьшить этот интервал и увеличить количество запросов, можно добавить опцию iburst (добавлена по-умолчанию). Это мой перевод найденного значения, суть такая, а вот совсем точно не скажу, что за зверь такой, iburst 🙂
Список серверов оставьте по-умолчанию или добавьте другой сервер, по желанию.
Осталось запустить сервис ntp:
service ntpd start
и добавить его в атозапуск:
chkconfig ntpd on
Командой date можно проверить изменения.
Изменение часового пояса в CentOS
Текущее значение временной зоны аппаратных часов (BIOS) находится в файле /etc/sysconfig/clock:
Для изменения программного (в операционной системе) часового пояса надо сделать следующее.
Сначала сделаем копию файла зоны. Это символьная ссылка.
mv /etc/localtime /etc/localtime.bak
В директории /usr/share/zoneinfo/ находятся файлы доступных к использованию временных зон. В нашем случае это /usr/share/zoneinfo/Europe/Moscow. В вашем случае может быть /usr/share/zoneinfo/Europe/Paris, да что угодно.
Создадим символьную ссылку /etc/localtime на нужную нам зону:
ln -s /usr/share/zoneinfo/Europe/Paris /etc/localtime
Все. Мы с вами сменили часовой пояс системных часов.
Под конец приведу адрес сайта, где все изложено достаточно ясно: https://moonback.ru/page/centos-time. Спасибо тебе, добрый человек!
Авторизуйтесь для добавления комментариев!
Почтовый сервер Шифрование Squid 3proxy VPN Mikrotik Настройка сервера Виртуальные машины kvm Защита почты Резервное копирование Групповые политики SELinux WDS IPFW OpenVPN firewalld systemd Mobile libvirt Samba WiFi Iptables NAT Lightsquid Remote desktop Postfix Dovecot Удаление данных Софт Безопасность Настройка прокси Winbox User agent Хостинг Передача данных Онлайн сервисы Privacy LetsEncrypt VPN сервер RRDTool sendmail Rsync Linux SSH Система Windows Синхронизация Облако fail2ban FreeBSD