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

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

Работа многих служб ОС зависит от того, насколько точны системные часы. Для чего нужна эта точность? Затем, что неточное время на сервере повлечет за собой много неприятностей.

В качестве примера приведем следующий: если в локальной сети часы машин, которые совместно используют файлы, не будут синхронизированы, то нельзя будет установить время изменения файлов. Из-за этого возникнет конфликт версий или перезаписи данных. Без установки точного времени на сервере появятся и сложности с задачами Cron – непонятно, когда они запустятся. Невозможно будет проанализировать журналы системных событий, чтобы понять причины неисправностей и сбоев.

Для того чтобы эти неприятности не возникли, нужно наладить синхронизацию системных часов. Для этого используется протокол NTP (Network Time Protocol).

Содержание
  1. Как устроен протокол NTP
  2. Как установить и настроить NTP-сервер
  3. Ареал использования серверов NTP
  4. Резервный сервер точного времени
  5. Особые случаи использования NTP
  6. Как проверить синхронизацию
  7. Как установить локальные дату и время
  8. Команда NET TIME вывод текущего времени сервера
  9. NET TIME — как синхронизировать время с сервером в Windows
  10. Синтаксис команды NET TIME
  11. Системная ошибка 1314. Клиент не обладает требуемыми правами
  12. Просмотр параметров (/query)
  13. Время и дата в Ubuntu Server
  14. Утилита date
  15. Утилита timedatectl
  16. Установка и настройка часового пояса в Ubuntu
  17. Синхронизация времени с помощью ntpdate, timedatectl
  18. Клиент ntp
  19. Настройка ntp сервера
  20. Ошибки синхронизации времени
  21. The NTP socket is in use, exiting
  22. No server suitable for synchronization found
  23. Служба ntp не запускается после загрузки сервера
  24. Ubuntu меняет время и часовой пояс в bios
  25. Время загрузки системы
  26. Как узнать точное время включения компьютера с Ubuntu?
  27. Время последнего выключения Ubuntu

Как устроен протокол NTP

Протокол NTP основан на иерархической структуре сервера точного времени, где выделены разные уровни. К нулевому уровню, на котором NTP-серверы не работают, относятся так называемые эталонные часы.

С ними синхронизируются NTP серверы уровня 1, являющиеся источниками для серверов уровня 2. Серверы второго уровня синхронизируются с серверами первого уровня, но еще могут синхронизироваться между собой. Точно так же функционируют серверы третьего уровня и ниже. В целом, поддерживается порядка 256 уровней.

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

Комьюнити теперь в Телеграм

Подпишитесь и будьте в курсе последних IT-новостей

Как установить и настроить NTP-сервер

Чтобы синхронизировать время, используют демон ntpd, который может быть как сервером, принимающим время из удаленных хостов, так и клиентом, раздающим время сторонним хостам. Демон ntpd зависит от указанных в файле конфигурации настроек.

Для установки сервера NTP используется стандартный менеджер пакетов $ sudo apt-get install ntp.

После установки все необходимые настройки NTP будут находиться в файле /etc/ntp.conf.

Первая строчка файла конфигурации – driftfile /var/lib/ntp/ntp.drift. В ней указан файл, в котором хранится информация о том, как часто смещается время. В этом же файле содержится и значение, которое было получено из предыдущих изменений времени. Если по каким-то причинам внешние NTP-серверы недоступны, знание берут из этого файла.

После этого нужно указать файл, сохраняющий логи синхронизации – logfile /var/log/ntp.log.

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

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

Еще можно донести информацию о нужном сервере через опцию prefer:

server 0.ubuntu.pool.ntp.org iburst prefer

Ареал использования серверов NTP

Такие серверы есть во всем мире, но обычно синхронизация происходит с NTP-серверами именно того ареала, где физически находится ваш сервер. Таким образом, в файле конфигурации /etc/ntp.conf указывается поддомен ареала (региона) для pool.ntp.org:

Резервный сервер точного времени

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

Особые случаи использования NTP

Например, NTP могут использовать, чтобы усилить трафик в DDoS-атаках. А чтобы избежать столкновения с различными злоупотреблениями, следует ограничить доступ для внешних клиентов. Говоря об ограничениях, то по умолчанию в /etc/ntp.conf файле выставлены такие:

Такие опции, как nomodify, notrap, nopeer и noquery, не позволяют внешним клиентам менять конфигурации на сервере. Параметр kod (расшифровывается как kiss of death, «смертельный поцелуй») дает дополнительный уровень защиты: клиент, который часто отправляет запросы, получает сперва kod-пакет, являющийся предупреждением о том, что в обслуживании отказано, а потом отключается от сервера.

Для синхронизации машин из локальной сети с сервером NTP в файл конфигурации добавляется такая строчка:

restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

А для локального хоста устанавливается неограниченный доступ к серверу NTP:

Читайте также:  Криптопро где хранятся ключи в реестре

Как проверить синхронизацию

После сохранения всех изменений в файле конфигурации NTP-сервер нужно перезагрузить:

$ service restart ntp

А затем выполнить команду:

$ ntpq -p

На выходе получится таблица, в которой указаны следующие параметры:

Слева от адреса сервера могут быть указаны еще и такие символы:

Чтобы проверить, насколько сервер подходит для синхронизации, нужно использовать команду ntpdate -q.

Как установить локальные дату и время

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

$ ntpdate -u 192.168.1.1

Статус ntpd проверяется при помощи команды:

$ ntpdc -c sysinfo

Команда NET TIME вывод текущего времени сервера

NET TIME синхронизирует показания часов компьютера с другим компьютером или доменом. Если используется без параметров в домене Windows Server, выводит текущую дату и время дня, установленные на компьютере, который назначен сервером времени для данного домена. Эта команда позволяет задать сервер времени NTP для компьютера.

NET TIME — как синхронизировать время с сервером в Windows

Синтаксис команды NET TIME

Часто спрашивают, почему появляется «Системная ошибка 5. Отказано в доступе» при использовании команды Net time. Отвечаю, все в правах пользователя под которым запускается команда. В качестве примера пробовал запустить команду сначала с правами локального администратора на Windows 10 — получил ошибку, далее запустил с правами администратора домена — результат на рисунке ниже.

Системная ошибка 1314. Клиент не обладает требуемыми правами

Вам нужно зайти в «редактор локальной политики безопасности». Открываем «Выполнить» Win+R. Ввести — «secpool».

Локальные политики-Параметры безопасности-Контроль учетный записей: Все администраторы работают в режиме одобрения администратором-Отключить-ОК-Перезагрузить компьютер/ноутбук.

Далее запустил с правами администратора домена, команда успешно выполнилась.

В Windows есть отличное средство управления синхронизацией времени — w32tm. Управление которым осуществляется как через cmd, так и через реестр и даже групповые политики в домене Windows.
В этой статье — мы рассмотрим только первый вариант.

Просмотр параметров (/query)

Так же можно воспользоватся вспомогательной службой net time для синхронизации времени.

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

Время и дата в Ubuntu Server

Как я уже сказал во введении, следить за системным временем в ubuntu server нужно в обязательном порядке, как и в любом другом сервере. Начальные настройки вы делаете еще во время установки системы. Далее вам может понадобиться либо изменение часового пояса, либо более точная настройка и синхронизация часов.

Кстати, если вам интересно узнать, почему я лично использую именно ubuntu server, а не какой-то другой linux дистрибутив, то читайте мой обзор и сравнение ubuntu с другими системами.

Особенно актуальной тема системного времени становится, когда вы арендуете сервера где-то в другой стране с отличным от вашего часового пояса. По умолчанию, у хостера скорее всего будет установлен его часовой пояс. Иногда я забываю это проверить и замечаю только тогда, когда возникают какие-то проблемы. А вот список проблем, которые могут теоретически возникнуть, если на сервере будет неправильное время:

Это список, что первым делом приходит на ум. Думаю, его можно сильно расширить, если потратить чуть больше времени. Но не вижу в этом смысла. Думаю, и так понятно, что часы на сервере должны всегда показывать точное время в нужном вам часовом поясе. Этим мы и займемся далее.

Утилита date

Посмотреть время в командной строке Ubuntu можно с помощью команды date.


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

В данном случае вы видите следующую информацию:

Для того, чтобы посмотреть время в 24-х часовом формате в консоли ubuntu, можно использовать дополнительный ключ к команде, добавив туда еще и саму дату:

date +»%H:%M %d/%m/%Y»
14:09 26/03/2021

Таким образом, с помощью параметров форматирования, вы можете выбирать любой формат времени для отображения. Традиционно, командная строка linux позволяет очень гибко выполнять различные действия с помощью своих утилит. Например, вы можете посмотреть не только время и дату, но и вывести в консоль номер дня недели, добавив дополнительный ключ %j:

date +»%H:%M %d/%m/%Y %j»
14:13 26/03/2021 085

Узнать время сервера в unix формате можно вот так:

Если у вас часовой пояс отличный от UTC, а вы хотите увидеть время именно в этом часовой поясе, то воспользуйтесь следующим ключом команды:

Очень удобно использовать утилиту date с различными параметрами в скриптах, чтобы получать время в удобном для вас формате. Например, когда вы используете время в названиях файлов бэкапов при их создании. Вот несколько примеров наиболее часто используемых форматов отображения даты и времени:

Читайте также:  Доступная стоимость выделенного сервера | Сравните цены и сэкономьте

date +%Y-%m-%d
2021-03-26
date +%H:%M:%S
14:36:35
date +%Y-%m-%d_%H:%M:%S
2021-03-26_14:36:42


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

Утилита timedatectl

В составе systemd есть своя утилита для просмотра и настройки времени через консоль — timedatectl. Далее пример с ее участием для просмотра системного времени сервера ubuntu.


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

С просмотром в консоли текущего времени сервера разобрались, переходим к его настройке.

Ручная настройка времени в ubuntu обычно не представляет какой-то особой сложности, если понимаешь, как это сделать. Для того, чтобы самостоятельно установить время через консоль, необходимо запустить date через sudo со следующими параметрами:


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

В данном случае при обновлении времени мы подразумевали:

То есть базовый формат утилиты date следующий — MMDDhhmm.

В моих примерах время отображается в 12-ти часовом формате на английском языке. Для того, чтобы перевести его в 24-х часовой формат, нужно изменить в locale параметр LC_TIME. Именно там стоит привязка к формату. Например, в локали en_US по умолчанию используется 12-ти часовой формат, а в ru_RU или en_GB 24-х часовой.

Для того, чтобы дата в консоли отображалась на русском языке, а время в 24-х часовом формате, достаточно сформировать locale ru_RU и изменить только формат времени, оставив все остальное на английском языке.

sudo locale-gen ru_RU. UTF-8
sudo update-locale LANG=en_US. UTF-8 LC_TIME=»ru_RU. UTF-8″


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

Еще один способ установки даты и времени с помощью timedatectl:

sudo timedatectl set-time «2021-03-26 18:09:30»

При этом вы можете получить ошибку: Failed to set time: Automatic time synchronization is enabled. Утилита timedatectl более умная, нежели date. Она проверяет, не настроена ли у вас автоматическая синхронизация времени. И если настроена, то вручную не дает его изменить. В целом, это правильный подход, хотя и может создавать неудобства. В этом случае вам надо отключить синхронизацию и только потом установить время руками. Эту тему мы будем рассматривать ниже отдельно.

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

Непосредственно со временем разобрались, рассмотрим теперь настройку временной зоны. Как посмотреть установленный часовой пояс, мы уже разобрались выше. Теперь разберем, как его изменить или просто задать, если ранее этого не сделали и у вас по умолчанию стоит UTC.

Установить часовой пояс можно с помощью утилит — tzselect и timedatectl. С их же помощью можно перед этим посмотреть список доступных зон. Например, так:

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


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

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

sudo timedatectl set-timezone Europe/Moscow

или с помощью tzselect:


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

Меняя эту ссылку, можно так же изменять часовой пояс.

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

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

Первый и самый простой способ синхронизации времени в ubuntu — воспользоваться известной утилитой ntpdate.

sudo apt install ntpdate

В качестве параметра ntpdate принимает адрес сервера точного времени, с которого будет произведена синхронизация локальных часов. Я предлагаю воспользоваться популярным пулом серверов точного времени — pool.ntp.org.

sudo ntpdate pool.ntp.org


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

Пул автоматически выбрал сервер точного времени, с которым мы синхронизировали свои часы. Один из способов автоматизации этого процесса является запуск ntpdate через cron. Но это не очень удобное решение, так как есть более эффективные способы. Например, с помощью локальной службы ntp или chrony, а так же компонента systemd — timesyncd.

После установки системы вам стоит проверить, а не запущена ли у вас уже синхронизация времени с помощью timesyncd. Проверяем:


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

Так и есть. В большинстве современных дистрибутивов, где установлена systemd, уже запущена timesyncd. Параметры этой службы находятся в конфигурационном файле /etc/systemd/timesyncd.conf, где можно посмотреть, какой сервер используется для синхронизации времени и в случае необходимости, заменить. В Ubuntu это ntp.ubuntu.com. Большого смысла менять его на другой сервер нет. Если только вы не хотите синхронизировать время с какого-то своего локального сервера. Как это сделать, я расскажу отдельно ниже.

Клиент ntp

Если вас по какой-то причине не устраивает служба timesyncd, можете ее отключить.

sudo systemctl stop systemd-timesyncd
sudo systemctl disable systemd-timesyncd

А в место нее установить, к примеру, ntp, работающую в режиме клиента.

Поясню немного, зачем это может понадобиться. Если вам необходимо только синхронизировать время, то утилиты timesyncd вполне хватает для этой простой задачи. Но иногда вам нужен более широкий функционал. Например, вы хотите настроить в своей локальной сети свой собственный сервер времени, чтобы остальные компьютеры сверяли свои часы с ним. В этом случае вам нужна будет служба ntp. А раз вы ее и так поставите, то зачем вам дублирование функционала? В этом случае имеет смысл отключить timesyncd и оставить только ntp. Она умеет работать и в качестве сервера времени, и в качестве клиента синхронизации.

Читайте также:  Редиректы сайта это

Итак, установили ntp. Для того, чтобы синхронизировать время, достаточно ее просто запустить:

sudo systemctl enable —now ntp

Проверяем статус синхронизации:

sudo systemctl status ntp


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

Видим пул серверов времени, с которыми наш ubuntu server будет синхронизировать свои часы. Настройки службы находятся в конфигурационном файле /etc/ntp.conf. Посмотреть информацию о работе ntp можно с помощью утилиты ntpq:

Далее рассмотрим вариант, когда вам нужен свой сервер времени в локальной сети. Для этого донастроим установленную службу ntp.

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

Сервер времени в своей работе использует отдельный протокол NTP (Network Time Protocol). Ему нужен для работы UDP Port 123. Так что прежде чем дальше настраивать ntp, откройте этот порт на фаерволе или отключите его. Настройка firewall выходит за рамки данной статьи, так как в его качестве может использоваться разный софт. Если у вас управление фаерволом настроено через ufw, то достаточно такой команды:

sudo ufw allow ntp

Далее открываем конфиг /etc/ntp.conf и приводим его к примерно следующему виду:

driftfile /var/lib/ntp/ntp.drift
restrict -4 default kod notrap nomodify nopeer noquery limited
restrict 127.0.0.1
restrict 10.20.1.0 mask 255.255.255.0 nomodify notrap

pool 0.ubuntu.pool.ntp.org iburst
pool 1.ubuntu.pool.ntp.org iburst
pool 2.ubuntu.pool.ntp.org iburst
pool 3.ubuntu.pool.ntp.org iburst

logfile /var/log/ntp.log

Это минимально необходимое содержимое, чтобы запустить свой собственный сервер времени на базе ntp в локальной сети 10.20.1.0/24. Если вам не нужен протокол ipv6, то можете его отключить. Для этого в файл /etc/default/ntp добавляем параметр:

И перезапускаем службу ntp. Проверяем, как она работает.


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

Служба времени слушает все сетевые интерфейсы. Теперь с любого клиента в локальной сети можно выполнить с помощью ntpdate синхронизацию времени с нашим Ubuntu Server. Проверьте это самостоятельно. Ранее я уже показывал, как это сделать.

Ошибки синхронизации времени

Иногда в логе /var/log/ntp.log или системном логе /var/log/syslog вы можете наблюдать ошибку — kernel reports TIME_ERROR: 0x2041: Clock Unsynchronized. На нее можно не обращать внимание, так как реально это не ошибка, а информационное сообщение. Нам просто сообщают о том, что в момент страта службы ntp, ядро linux еще не синхронизировало время.

The NTP socket is in use, exiting

Если при запуске синхронизации времени с помощью ntpdate вы видите ошибку — the NTP socket is in use, exiting, то это значит, что у вас уже запущена служба ntp. Для того, чтобы не было конфликтов при изменении времени, должно работать что-то одно, либо ntpdate, либо ntp, но не оба одновременно. Чтобы эта ошибка исчезла, достаточно просто остановить ntp и запустить ntpdate еще раз.

No server suitable for synchronization found

Еще одна популярная ошибка, которая может возникнуть при запуске ntpdate. Она означает, что не получается по какой-то причине установить соединение с сервером времени. В общем случае это означает, что есть какие-то сетевые проблемы, но не обязательно. Вы можете попробовать запустить ntpdate c ключом -u. Он означает, что будет использован локальный не 123-й порт udp, как обычно, а другой из непривилегированного диапазона. Иногда это помогает, так как многие провайдеры из-за известной уязвимости протокола ntp блокируют исходящий 123 порт.

ntpdate -u pool.ntp.org

Служба ntp не запускается после загрузки сервера

Если ntp не стартует после загрузки сервера, то связано это может быть в первую очередь с тем, что не отключена служба timesyncd. Отключите ее и проверьте еще раз:

sudo timedatectl set-ntp no

Ubuntu меняет время и часовой пояс в bios

Убунта имеет дурную привычку при синхронизации времени устанавливать в bios часовой пояс UTC. В общем случае это не доставляет проблем, но если у вас установлена параллельно еще какая-то система на компьютере, то это может создавать проблемы. Чтобы Ubuntu не трогала часы в bios, необходимо выполнить следующую команду:

sudo timedatectl set-local-rtc 1

Время загрузки системы

Немного затрону еще одну тему, которая не связана напрямую с часами на сервере, но тем не менее имеет отношение ко времени. Эта информация наиболее актуальна как раз в этой статье.

Как узнать точное время включения компьютера с Ubuntu?

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


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

Эту же информацию можно получить с помощью утилиты who:

who -b
system boot 2021-03-26 17:01

Время последнего выключения Ubuntu

Если вы хотите узнать не только время включения сервера, но и время последних выключений или время последней перезагрузки, то воспользуйтесь утилитой last:

last -x reboot


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

Она показывает, когда последние несколько раз компьютер выключался или перезагружался.

Оцените статью
Хостинги