[2024-feb-29] Sad news: Eric Layton aka Nocturnal Slacker aka vtel57 passed away on Feb 26th, shortly after hospitalization. He was one of our Wiki's most prominent admins. He will be missed.

Welcome to the Slackware Documentation Project

Это старая версия документа!


Синхронизируйте Вашу сеть с NTP

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

  • конфигурирование NTP сервера в Slackware Linux;
  • синхронизация клиентских ПК с локальным NTP сервером.

Введение

Когда несколько пользователей работают в сети с общими файлами на разных ПК, очень важно, что бы эти машины были синхронизированы. Это особенно важно если Вы обмениваетись файлами через NFS, или если Вы используете NIS для централизованной системы авторизации. Если Ваши часы будут рассинхронизированны, то Вы будете получать странные ошибки, и долго искать причину. К сожалению часы в клиентских машинах не очень точны Вот где NTP пригождается. Он позволяет машинам подключёным к сети правильно корректировать свои часы, будучи идельно синхронизированными друг с другом. Публичные сервера времени в интернете, позволяют получать точное время. С этого места, мы можем использовать NTP разными путями.

  • Команда ntpdate инициализирует корректировку часов BIOS'а.
  • Одноразовой корректировки не достаточно для сервера который работает 24/7, так как его часы будут постепенно отклоняться от точного времени. Для этого случая у нас есть ntpd даемон (поставляется вместе с пакетом ntp). Этот даемон регулярно подключается к публичным серверам и инкрементирует коррецию времени локальных часов.
  • ntpd Даемон может быть сконфигурирован как сервер времени для обслуживания локальных клиентских машин в сети.

Это хорошая практика сипользовать ntpdate для первой корректировки и ntpd для регулярной синхронизации.

Информация для настройки фаервола

Сервис NTP использует UDP порт 123. Откройте этот порт если Вы хотите разрешить удалённым машинам подключаться к Вашему NTP серверу.

Синхронизация локального или публичного корневого сервера с NTP сервером в интернете

Создание пустого файла-журнала:

 # touch /var/log/ntp.log

Посетите http://www.pool.ntp.org для выбора списка серверов для вашего местоположения. Настройте NTP сервис редактированием файла /etc/ntp.conf. Сделайте резервную копию этого файла и начните с нуля. В примере ниже, список из четырёх серверов выбраных мною для моего местоположения (Франция):

# /etc/ntp.conf

driftfile /etc/ntp/drift
logfile /var/log/ntp.log

server 0.fr.pool.ntp.org
server 1.fr.pool.ntp.org
server 2.fr.pool.ntp.org
server 3.fr.pool.ntp.org

server 127.127.1.0
fudge 127.127.1.0 stratum 10

restrict default nomodify nopeer notrap
restrict 127.0.0.1 mask 255.0.0.0

Небольшое описание некоторых параметров:

  • Эта ерунда 127.127.1.10 со стратумом 10, является директивой с описанием аварийного сервера, который будет использоваться в случае если внешние источники стали недуступны. Когда это случилось, NTP продолжает работать сам опираясь на внутрений сервер.
  • NTP имеет свой арсенал правил для ограничения доступа к сервису, которые могут быть использованы вне зависимости от фаервола. Директива «restrict» в вышеуказанной конфигурации предоствращает изменение серверов на удалённой машине (первая restrict опция), и настроен для доверия свмому себе (вторая опция restrict).
  • Директива restrict без аргументов но с указанием имени хоста (или IP адреса) сводиться к тому, что всё будет разрешено.

Управление NTP сервисом

Перед тем как запустить сервис, проведите корректировку системных часов:

# ntpdate pool.ntp.org
Команда ntpdate считается устаревшей, но она пригодится при настройке времени. «Православный» способ использовать команду ntpd -g - это официальная замена ntpdate - но этот способ может провалиться если ваши часы сбились больше чем на пол часа.

Активируем сервис NTP:

# chmod +x /etc/rc.d/rc.ntpd

Управление сервисом NTP

# /etc/rc.d/rc.ntpd start|stop|restart|status

Теперь отобразим список серверов к которым Ваша машина подключена:

# ntpq -p
remote           refid      st t when poll reach   delay   offset jitter
==============================================================================
*panopea.unstabl 213.251.128.249  2 u   30   64  377   56.136  -249.48 80.680
+88-190-17-126.r 145.238.203.14   2 u   29   64  377   77.571  -205.94 94.278
+62.210.255.117  192.93.2.20      2 u   29   64  377   77.097  -249.57 85.641
-ntp.univ-poitie 145.238.203.10   3 u   29   64  377   57.747  -191.58 107.002
LOCAL(0)        .LOCL.          10 l  164   64  374    0.000    0.000 0.001

Маленькая * звездочка встречающаяся в одной из линий выше, означает что Ваша машина успешно синхронизируется с этим сервером.

Первая синхронизация может затянуться до нескольких минут, а иногда даже до полу часа.

Синхронизация клиентских ПК с Вашим локальным NTP сервером

В локальной сети, разумно использовать синхронизацию только на одной машине - на сервере - с публичным NTP сервисом, а клиентские ПК с этим локальным сервером. Это сохранит пропускную способность и немного разгрузит публичные серверы NTP. Как и выше, проведем инициализированную корректировку системных часов:

# ntpdate pool.ntp.org

Создаём пустой файл-журнал:

# touch /var/log/ntp.log

Теперь настроим NTP для синхронизации с локальным сервером. Замените в примере IP (192.168.2.1) на свой реальный серверный IP:

# /etc/ntp.conf

driftfile /etc/ntp/drift
logfile /var/log/ntp.log

server 192.168.2.1

server 127.127.1.0
fudge 127.127.1.0 stratum 10

restrict default ignore
restrict 127.0.0.1 mask 255.0.0.0
restrict 192.168.2.1 mask 255.255.255.255
  • Этот список restrict опций означают, мы блокируем весь NTP трафик за исключением своего клиента и сервера.

Активируем и запустим сервис NTP:

# chmod +x /etc/rc.d/rc.ntpd
# /etc/rc.d/rc.ntpd start

Как и в примерах выше, воспользуемся командой ntpq -p для проверки когда же пройдёт синхронизация.

# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*192.168.2.1     81.19.16.225     3 u  916 1024  377    0.367    7.897   2.552
 LOCAL(0)        .LOCL.          10 l  10h   64    0    0.000    0.000   0.000
Опять же, Вы должны подождать несколько минут прежде чем пройдёт первая синхронизация.

Синхронизация при загрузке системы

Если Вам необходимо выполнить один раз синхронизацию при загрузке системы, то можно обойтись без даемона, воспользовавшись командой ntpd -qg & в конце файла /etc/rc.d/rc.local. Эта команда проведёт синхронизацию один раз в фоновом режиме и выйдет по завершении, для выполнения этой команды файл /etc/rc.d/rc.ntpd не должен быть исполняемым.

~# cat /etc/rc.d/rc.local
#!/bin/sh
#
# /etc/rc.d/rc.local:  Local system initialization script.
#
# Put any local startup commands in here.  Also, if you have
# anything that needs to be run at shutdown time you can
# make an /etc/rc.d/rc.local_shutdown script and put those
# commands in there.
.
.
.
ntpd -qg &

Sources

 ru:howtos:network_services:ntp ()
Этот перевод старее, чем оригинальная страница, и может быть неактуальным. Смотрите, что было изменено.
Перевод этой страницы?: