Введение.
Система Linux, как и большинство других современных операционных систем, фактически имеет двое часов. Первые часы - аппаратные, иногда называемые Real Time Clock, сокращенно (RTC), или часы BIOS, обычно они связаны с колеблющимся кварцевым кристаллом, имеющим точность хода до нескольких секунд в день. Точность зависит от различных колебаний, например, окружающей температуры. Вторые часы - внутренние программные часы, которые идут непрерывно, в том числе и при перерывах в работе системы. Они подвержены отклонениям, связанным с большой системной нагрузкой и задержкой прерываний. Однако система обычно считывает показания аппаратных часов при загрузке и потом использует системные часы. Команда date, устанавливает не аппаратные, а системные часы.
Если используется NTP, можно установить аппаратные часы в ходе первой инсталляции системы и больше никогда не беспокоиться о них.
Микросхема часов реального времени (ЧРВ), используемая на материнских платах, не особенно точна и обычно отстает, или забегает вперед на определенное время каждый день.
Можно синхронизировать аппаратные часы с системными при помощи команды hwclock с опцией -w или —systohc и синхронизировать системные часы с аппаратными при помощи команды hwclock с опцией -s или –hctosys.
Настройка.
Для начала в файле /etc/ntp.conf добавляем строчку:
Время будет синхронизироваться с указанного сервера. Если первый недоступен берутся следующие по списку. Первым прописал локальный сервер NTP.
Следующий момент, устанавливает локальное или всемирное время будет использоваться.
#cat /etc//etc/sysconfig/clock
У нас не то:
Правим ZONE – на "Europe/Moscow"
Получаем:
UTC=true системные часы не используют универсальное представление времени
ARC=true Используется нормальная эпоха UNIX.
Временная зона под Linux устанавливается через символическую ссылку, из /etc/localtime на файл из директории /usr/lib/zoneinfo(или /usr/share/zoneinfo), чем указывается в какой временной зоне вы находитесь.
Рисунок. Содержимое /usr/share/zoneinfo
Выполняем команды.
rm -rf /etc/localtime
ln -s /usr/share/zoneinfo/Europe/Moscow /etc/localtime
Все работает!
Если демон ntpd запущен то выдается следующее сообщение, при попытки выполнить синхронизацию с ntp сервером.
Данная команда показывает, к каким серверам производиться подключение.
Дополнение:
Установка аппаратных часов
Для установки аппаратных часов, установите сначало системное время а потом уже аппаратное используя программу «/sbin/clock -w» (или«/sbin/clock -wu» в случае использования всемирного времени).Чтобы узнать аппаратное время запустите clock без параметров. Если аппаратные часы установлены в локальное время а вы хотите увидеть всемирное наберите «/sbin/clock –u»
Установка системных часов
Для установки системных часов в Линуксе, используется программа date. Для примера установка текущего времени (системного!) и даты на 31 июля, 23:16,наберите «date 07312316» (обратите внимание что время дано в 24-часовой записи) Если вы хотите изменить год то набиретие «date 073123161998». Для установки секунд набирите «date 07312316.30» или «date 073123161998.30». Чтобы узнать системное время запустите date без аргументов.
На днях вновь потребовалось настроить ntp и, как обычно, выяснилось, что за давностью лет предыдущей настройки все забыто нафик. Поэтому пишем себе заметочку на будущее, дабы в следующий раз не искать. Ну и моим читателям глядишь пригодится.
Установка
Платформой для установки нам послужит, как обычно, Gentoo. Служба ntp - net-misc/ntp.
Первым делом обновляем дерево портеджей:
Настройка сервера.
Определимся у кого будем брать время. Я предлагаю использовать сервера точного времени , Stratum 1 как никак.
ntp1.vniiftri.ruПараметры запуска демона ntpd определяются в файле /etc/conf.d/ntpd
ntp2.vniiftri.ru
ntp4.vniiftri.ru
# /etc/conf.d/ntpdЗдесь -g -ключ разрешающий переход на большой скачек времени, -с -файл конфигурации службы ntp, чтобы указать pid-файл отличный от используемого по умолчанию можно использовать ключ -p, например:# Options to pass to the ntpd process
# Most people should leave this line alone ...
# however, if you know what you"re doing, feel free to tweak
NTPD_OPTS="-g -c /etc/ntp.conf"
NTPD_OPTS="-p /var/run/ntpd.pid -g -c /etc/ntp.conf"Настройка службы ntp по умолчанию производится в файле /etc/ntp.conf, если указали в предыдущем пункте другой, то правим тот который указали
# /etc/ntp.confЗапускаем ntpd
# Наш локальный сервер
server 192.168.0.1
# Серверы в сети
server 195.2.64.6
server ntp1.vniiftri.ru
server ntp2.vniiftri.ru
server ntp4.vniiftri.ru#Пути к служебным файлам
driftfile /var/lib/ntp/ntp.drift
logfile /var/log/ntpd.log# Разрешения на доступ к нашему серверу
restrict default ignore # По умолчанию доступ запрещен
restrict localhost # Локально можно все
restrict 192.168.0.0 mask 255.255.255.0 nomodify nopeer notrap # По внутренней сети можно только читать время# Разрешаем синхронизироваться с внешними серверами, иначе синхронизация не пойдет.
restrict 127.0.0.1
restrict 192.168.0.1
restrict 195.2.64.6
restrict ntp1.vniiftri.ru
restrict ntp2.vniiftri.ru
restrict ntp4.vniiftri.ru# Эта запись позволяет присвоить самому себе Stratum 3, чтобы сервер доверял сам себе
server 127.127.1.1
fudge 127.127.1.1 stratum 3
Добавляем ntpd в автозагрузку
Теперь нужно обождать минут 10 - 20, поскольку синхронизация происходит не сразу, а через некоторое время.
Проверяем на сервере
значит все нормально, синхронизация пошла. Поподробнее рассмотрим обозначения в полученной таблице.
remote refid st t when poll reach delay offset jitter
==============================================================================
192.168.0.1 .INIT. 16 u - 1024 0 0.000 0.000 0.000
-ntp1.zenon.net 195.2.64.5 2 u 596 1024 377 2.261 -0.104 0.680
*ntp1.vniiftri.r .PPS. 1 u 909 1024 377 4.266 -0.603 0.353
+ntp2.vniiftri.r .PPS. 1 u 562 1024 377 3.914 -0.453 0.457
+ntp4.vniiftri.r .PPS. 1 u 554 1024 377 4.487 -0.664 0.249
LOCAL(1) .LOCL. 3 l 229m 64 0 0.000 0.000 0.000
Поля таблицы:
remote - имена удаленных ntp серверов
refid - сервер, с которым производит синхронизацию удаленный сервер ntp
st - стратум (уровень) удаленного сервера. 1 - самый высокий, 16 - рядовая машина/клиент.
t - тип пира (u = unicast, m = multicast, l = local)
when - указывает на то, как давно была произведена синхронизация с сервером
poll - частота в секундах, с которой NTP демон синхронизируется с пиром
reach - состояние доступности сервера, это значение стабилизируется на уровне 377 если последних 8 попыток синхронизации с удаленным сервером были успешны
delay - задержка (в миллисекундах) ответа от сервера
offset - разница в миллисекундах между системным временем и временем удаленного сервера; значение с минусом - отставание, с плюсом - убегание
jitter - смещение времени на удаленном сервере
Значки в строках таблицы:
* - пир, с которым была выполнена синхронизация последний раз
+ - пригодный для обновления сервер
- - непригодный для обновления сервер
х - сервер не отвечает
Проверяем на клиенте:
25 Oct 17:28:04 ntpdate: adjust time server 192.168.0.1 offset -0.016567 secОднако, возможно получить следующее сообщение:
25 Oct 17:29:14 ntpdate: no server suitable for synchronization foundЧтобы понять что за ерунда выполняем:
Смотрим ответ:
192.168.0.1: Server dropped: strata too highЭто означает, что уровень доверия очень мал (stratum=16, самый низкий уровень), то есть сервер сам себе не доверяет, чтобы отдавать время. Необходимо либо подождать, либо изменить список серверов, с которыми он синхронизируется. Поскольку в конфиге у нас прописано, что сервер наш stratum 3, то такое сообщение мы вряд ли увидим.
server 192.168.0.1, port 123
stratum 16, precision -8, leap 11, trust 000
Настраиваем клиентов.
LINUX
Клиенты у меня тоже Gentoo, в основном, конфигурация клиента прописывается в файле /etc/conf.d/ntp-client. Тут не мудрим, оставляем все как есть, только указываем наш сервер в параметрах синхронизации:
# /etc/conf.d/ntp-clientДобавляем в автозагрузку:# Command to run to set the clock initially
# Most people should just leave this line alone ...
# however, if you know what you"re doing, and you
# want to use ntpd to set the clock, change this to "ntpd"
NTPCLIENT_CMD="ntpdate"# Options to pass to the above command
# This default setting should work fine but you should
# change the default "pool.ntp.org" to something closer
# to your machine. See http://www.pool.ntp.org/ or
# try running `netselect -s 3 pool.ntp.org`.
NTPCLIENT_OPTS="-s -b -u 192.168.0.1 "
# rc-update add ntp-client defaultСледует иметь в виду, что служба ntp-client синхронизирует время только один раз, при запуске системы, поэтому для машин работающих длительное время без перезапуска делаем следующее:
Создаем в папке /etc/cron.hourly исполняемый файл со следующим содержимым
#!/bin/shВсе, теперь наша машина будет синхронизироваться с ntp ежечасно.
NTPCLIENT_OPTS="-s -b -u 192.168.0.1"Ntpdate $NTPCLIENT_OPTS >> /dev/null 2>&1
WINDOWS 2003 Server
Все телодвижения выполняем в командной строке.
#w32tm /config /syncfromflags:manual /manualpeerlist:192.168.0.1Далее, в командной строке указываем приоритетный NTP сервер, перезапускаем службу точного времени и принудительно синхронизируем время:
#w32tm /config /update
#net time /setsntp:192.168.0.1В результате должны получить:
#net stop w32time && net start w32time
#w32tm /resync
Команда синхронизации отправлена на local computer...Через некоторое время можно проверить журнал событий системы. Если все настроено и отработало верно, то в журнале будет информационное сообщение от источника W32Time с кодом (ID) 37 и текстом "NTP-клиент поставщика времени получает правильные данные о времени от 192.168.0.1", а затем с кодом 35 и текстом "Служба времени выполняет синхронизацию системного времени с источником времени 192.168.0.1".
Команда выполнена успешно.
UPD
WINDOWS 2012 Server
Тут все аналогично Windows 2003 Server, но делаем все в Windows PowerShell запущенной от имени администратора.
Указываем какой ntp сервер использовать для синхронизации:
PS C:\> w32tm /config /syncfromflags:manual /manualpeerlist:192.168.0.1 /syncfromflags:MANUALДалее, в командной строке перезапускаем службу точного времени и принудительно синхронизируем время:
PS C:\> w32tm /config /update
PS C:\> Service-Stop w32timeВ результате должны получить:
PS C:\> Service-Start w32time
PS C:\> w32tm /resync
Отправка команды синхронизации на локальный компьютерПроверяем:
Команда выполнена успешно.
На выходе должны получить нечто подобное:
Индикатор помех: 0(предупреждений нет)
Страта: 3 (вторичная ссылка - синхронизирована с помощью (S)NTP)
Точность: -6 (15.625ms за такт времени)
Задержка корня: 0.0356903s
Дисперсия корня: 7.8069513s
Идентификатор опорного времени: 0xC0A86301 (IP-адрес источника: 192.168.0.1)
Время последней успешной синхронизации: 22.03.2016 16:21:25
В статье рассмотрим настройку NTP клиента.
Установка временной зоны
Для начала смотрим какая у нас установлена временная зона. Для этого используем команду .
# date Пт мар 8 17:38:47 MSK 2019
Если временная зона установлена неправильно, то устанавливаем правильную временную зону. Для этого создаем на файл /etc/localtime с соответствующей временной зоны из каталога /usr/share/zoneinfo/. Например для Москвы.
Ln -sf /usr/share/zoneinfo/Europe/Moscow /etc/localtime
Настройка синхронизации NTP-клиента с NTP-сервером
Устанавливаем пакет ntp
Yum install ntp
Для синхронизации локальной клиентской машины на Linux с NTP-сервером требуется отредактировать файл /etc/ntp.conf . В следующем примере указывается несколько серверов времени, что полезно на случай недоступности одного из них. Или можете прописать другие внешние сервера, например pool.ntp.org
Server 0.rhel.pool.ntp.org iburst server 1.rhel.pool.ntp.org iburst server 2.rhel.pool.ntp.org iburst server 3.rhel.pool.ntp.org iburst
iburst : данный параметр повышает точность синхронизации, вместо одного пакета отправляется восемь. Когда сервер не отвечает, пакеты отправляются каждые 16 секунд, когда отвечает – каждые 2 секунды.
Server 192.168.1.1 prefer
prefer : если указана данная опция, заданный сервер считается предпочтительным перед остальными, но если ответ этого сервера будет значительно отличаться от ответов остальных серверов, он будет игнорироваться. Вместо 192.168.1.1 укажите ip адрес вашего сервера
Запуск службы NTP
После изменения ntp.conf и задания необходимых параметров запустите службу (демон) NTP. В зависимости от настроек, она может работать и как сервер, и как клиент.
Systemctl start ntpd
и добавьте его в автозагрузку
Systemctl enable ntpd
для проверки времени наберите команду
Проверка состояния NTP
Проверить состояние NTP можно при помощи команды ntpq. Если вы получите ошибку отказа в соединении, значит, сервер времени не отвечает, не запущена служба NTP на клиенте или закрыт порт.
Sudo ntpq –p remote refid st t when poll reach delay offset jitter ========================================================================= *elserver1 192.168.1.1 3 u 300 1024 377 1.225 -0.071 4.606
remote
– имя или адрес сервера времени. Перед ним указан служебный символ, в данном случае «*», что означает используемый сервер. «+» означает, что сервер пригоден для обновления, «-» — что непригоден, «x» — сервер недоступен;
refid
– вышестоящий в иерархии Stratum сервер;
st
– уровень сервера в иерархии Stratum;
t
– тип соединения (u – unicast, одиночное соединение, b – broadcast, широковещательное соединение, l – локальные часы);
when
– время, прошедшее с момента последнего ответа;
poll
– период опроса в секундах;
reach
– состояние доступности (при представлении в двоичном виде 1 означает успешную попытку, 0 – сбой. После 8 успешных попыток устанавливается значение 377);
delay
– время двойного оборота пакета;
offset
– текущее смещение времени относительно сервера;
jitter
– среднеквадратичное отклонение времени.
Значение jitter должно быть низким, если это не так, проверьте смещение относительно часов в файле погрешности (driftfile). Если оно слишком велико, может потребоваться смена NTP-сервера. Следующая команда вручную синхронизирует время с NTP-сервером:
Ручная синхронизация времени
Для опроса NTP-сервера и установки даты и времени в ручную используется команда ntpdate . Обычно это требуется только один раз.
Для начала отключите ntp службу
Systemctl stop ntpd
Запустите синхронизацию указав сервер с которого нужно синхронизировать время
Ntpdate 192.168.1.1
Запустите службу ntp
Systemctl start ntpd
После такой первоначальной синхронизации NTP-клиент будет регулярно опрашивать NTP-сервер для обеспечения соответствия локального времени точному времени.
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter .