Синхронизация времени имеет решающее значение в современных компьютерных сетях, потому что такие важные задачи, как управление, обеспечение безопасности, планирование и отладка сети, требуют точно установленного времени. При этом поддержание точного времени — сложная задача, поскольку часы компьютера смещаются на несколько минут или секунд каждый день. Решить проблему синхронизации временем на устройствах помогает протокол сетевого времени (NTP — Network Time Protocol). В статье рассказываем, что такое протокол NTP, зачем нужна настройка NTP-сервера, как включить NTP и как поменять время на сервере.
Протокол сетевого времени (NTP) — это протокол, который помогает синхронизировать время устройств (компьютеров, серверов, коммутаторов, маршрутизаторов) в сети.
Внешним источником точного времени, к которому делается запрос, является NTP-сервер синхронизации времени. В то же время сам NTP-сервер получает точное всемирное координированное время (UTC — Coordinated Universal Time) от авторитетного источника времени, такого как атомные часы или GPS.
Для обозначения того, кто запрашивает время, используется термин «NTP-клиент». А источником информации о времени служит NTP-сервер.
Конечной целью NTP является синхронизация часов всех участвующих устройств с высокой точностью относительно UTC.
Если у вас только один компьютер, то установить точное время несложно. А если вы администрируете большое количество компьютеров, серверов и других устройств, которые должны работать с одинаковым временем, то стоит использовать NTP.
Вот несколько примеров использования NTP:
Как мы уже говорили выше, для обозначения связи между участниками синхронизации времени используют термины «NTP-сервер» и «клиент». Где клиент — это система, стремящаяся синхронизировать свои часы с сервером, а сервер — источник информации о времени. Чтобы понять, как устроен протокол сетевого времени, обратимся к его структуре.
Протокол NTP использует иерархическую структуру источников времени. Каждый уровень этой иерархии называется слоем (от англ. stratum).
Первый слой образуют первичные серверы (главные серверы), которые синхронизируются непосредственно с авторитетными и самыми точными источниками времени — атомными часами или GPS.
Вторичные серверы уже получают время от первичных серверов, а также могут синхронизироваться между собой. А серверы третьего уровня синхронизируются с вторичным серверами и так далее. Всего может быть 15 слоев. Меньшее значение указывает на более высокую точность. Но все равно разница будет незначительной и составит микросек isунды.
Часто компании настраивают свой NTP-сервер в локальной сети и указывают его для других устройств. То есть этот NTP-сервер будет узнавать время у публичных серверов в интернете и потом передавать его вашим устройствам, подключенным к локальному серверу. Это обеспечит одинаковое время для всех ваших устройств в локальной сети.
Обеспечить бесперебойную работу программного обеспечения NTP возможно в режиме системной службы. В операционной системе Windows — это служба W32Time, для Linux — демон Ntpd.
Далее расскажем, как установить сервер времени, на каждой из этих систем.
Служба времени W32Time в операционной системе Windows синхронизирует время в домене Active Directory. Для начала нужно открыть открыть 123 udp порт для контроллера домена.
net stop w32time
w32tm /config /syncfromflags:manual /manualpeerlist:"0.pool.ntp.org, 1.pool.ntp.org, 2.pool.ntp.org"
w32tm /config /reliable:yes
net start w32time
w32tm /query /configuration
Готово! Синхронизация времени в домене Windows настроена.
С помощью утилиты NetTime можно быстро настроить синхронизацию времени с NTP серверами.
Так выглядят настройки программы:
В программе можно легко настроить список NTP-серверов, с которых вы хотите получать точное время, настроить интервал синхронизации и т.д.
Ntpd (Network Time Protocol daemon) — это демон операционной системы Linux, который устанавливает и поддерживает системное время синхронно с серверами точного времени в интернете.
По шагам рассказываем, как установить и настроить ntpd в Linux.
Шаг 1. Установка.
Для установки используется менеджер пакетов sudo apt-get install ntp
Шаг 2. Редактирование файла конфигурации.
Откройте файл /etc/ntp.conf.
sudo nano /etc/ntp.conf
Шаг 3. Ввод серверов времени.
Укажите несколько NTP-серверов.
server 0.ubuntu.pool.ntp.org
server 1.ubuntu.pool.ntp.org
server 2.ubuntu.pool.ntp.org
server 3.ubuntu.pool.ntp.org
Шаг 4. Перезапуск.
Перезапустите ntpd.
sudo service ntp restart
Шаг 5. Проверка результата.
Проверьте, запущен ли ntpd.
sudo ntpq -p
Протокол NTP нужен для синхронизации времени компьютеров и других устройств в сети. Компьютер, который хочет получить точное время, запрашивает его у NTP-сервера. В свою очередь NTP-сервер работает с точными атомными часами и GPS и синхронизируют время между клиентами (устройствами, которые запрашивают время), используя эти точные часы в качестве эталонного времени.
У протокола NTP иерархическая структура. На первом уровне иерархии находятся серверы, которые синхронизируются с эталонными часами. Вторичные серверы запрашивают время у серверов первого уровня. Серверы, которые находятся на третьем уровне, синхронизируются с серверами второго уровня и т.д. При этом каждый уровень показывает точное время, а разница составляет микросекунды.
Также в статье мы рассказали, как поставить время на сервере в операционных системах Windows и Linux. В Windows это можно сделать с помощью службы времени W32Time. В качестве альтернативы можно установить утилиту NetTime и синхронизировать время. Для настройки времени в операционной системе Linux используется демон ntpd.