Европейский Университет в Санкт-Петербурге
Опубликован: 04.07.2008 | Доступ: свободный | Студентов: 1076 / 303 | Оценка: 4.30 / 3.78 | Длительность: 18:28:00
Лекция 14:

Синхронизация времени в Solaris

< Лекция 13 || Лекция 14: 12 || Лекция 15 >
Выбор эталонного сервера времени

Как мы уже знаем, чтобы обеспечить синхронизацию времени, в Интернете существуют "эталонные" серверы времени. Для получения показаний времени локальный сервер времени в своей сети следует настроить для обращений ко вторичным серверам (слой 2), так как нагрузка на главные серверы (слоя 1) очень велика. В России есть по крайней мере один устойчиво функционирующий эталонный сервер слоя 2: ntp.psn.ru (IP-адрес 194.149.67.130). Он расположен в Пущино; вот его регистрационные данные с сервера www.ntp.org:

Location: Pushchino, Moscow region, Russia
Geographic Coordinates: 54:50N, 37:37E
Synchronization: NTP secondary (stratum 2), Alpha/Linux
Service area: Russia
Access policy: open access, please send a message to notify
Contact: clockmaster@psn.ru

Информация о других эталонных серверах времени и о режиме доступа к ним может быть получена по адресу http://www.ntp.org.

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

Запуск сервера времени

Демон xntpd при старте читает файл /etc/inet/ntp.conf или принимает параметры из командной строки. Единственное, без чего он не может работать – адреса эталонных серверов и (или) режим работы.

Если файл /etc/inet/ntp.conf не удается прочесть и с ключом –c не указан иной файл конфигурации, демон, если был заранее скомпилирован с поддержкой NetInfo, прислушивается к широковещательным сообщениям в сети и пытается сам найти себе эталон времени. Маловероятно, что в этом его ждет успех, если сервер времени находится за фильтром пакетов (межсетевым экраном, firewall'ом – это одно и то же).

Программа ntpq позволяет получать информацию о текущей конфигурации прямо от сервера времени и изменять настройки xntpd "на ходу", без перезапуска сервера.

В командной строке вызова xntpd доступны следующие ключи:

  • -a – включить аутентификацию (по умолчанию – выключена);
  • -A – выключить аутентификацию;
  • -b – синхронизироваться по широковещательным сообщениям NTP;
  • -c conffile – использовать указанный файл вместо /etc/inet/ntp.conf ;
  • -d – включить режим отладки;
  • -e authdelay – указать явно время в секундах, которое требуется данной системе для вычисления ключа;
  • -f driftfile – указать путь к файлу со значением сдвига часов;
  • -k keyfile – указывает файл с ключами для аутентификации в NTP;
  • -l logfile – указывает файл протокола; по умолчанию протоколирование ведется через syslog() ;
  • -m – синхронизировать часы по multicast сообщениям NTP на группу multicast-адресов 224.0.1.1; требует поддержки multicast в ядре;
  • -p pidfile – указывает файл, в который пишется PID процесса xntpd.
Файл конфигурации xntpd – ntp.conf

В файле /etc/inet/ntp.conf команды располагаются по одной в строке, за ключевым словом команды могут идти аргументы. Строки, начинающиеся со знака решетки ( # ), являются комментариями. Пустые строки игнорируются. Аргументы отделяются от команды и друг от друга пробелами.

Параметры настройки xntpd могут быть установлены в файле или из командной строки, ключи командной строки имеют преимущество перед установками в файле конфигурации.

Аргументы могут быть именами компьютеров или IP-адресами, а также спецификацией времени (числом с плавающей точкой) и текстовой строкой.

Рассмотрим пример конфигурации:

server ntp.cpsc.ucalgary.ca prefer
server ntp.my-provider.ru
server louie.udel.edu
driftfile /var/db/ntp.drift

Параметр server указывает, какие эталонные серверы времени следует использовать, перечисляем по одному в каждой строке. Если один из серверов указан с модификатором prefer, как ntp.my-provider.ru в нашем примере, то ответу этого сервера отдается предпочтение перед остальными. Парметр server нельзя использовать в случае, если наш сервер определяет соседей, слушая широковещательные пакеты NTP.

Ответ даже от предпочитаемого сервера будет отброшен, если он значительно отличается от ответов других серверов. В ином случае он будет использоваться вне зависимости от других ответов. Модификатор prefer применяется для тех серверов NTP, о которых известно, что они очень точны. Например, серверам из слоя 2 имеет смысл отдавать предпочтение перед серверами провайдера, филиала вашей фирмы или дружественной компании.

Параметр driftfile задает файл, который надо задействовать для хранения смещения частоты системных часов. Файл требуется программе xntpd для автоматической компенсации естественного смещения часов. При этом обеспечивается правильная настройка часов, даже если компьютер на некоторое время отключается от внешнего источника синхронизации времени, что может быть вызвано сбоем сети или этого источника.

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

Файл конфигурации /etc/inet/ntp.conf также определяет параметры доступа к нашему NTP-серверу. По умолчанию сервер NTP доступен любым хостам, которые могут к нему обратиться. При отсутствии фильтрации пакетов это означает свободный досутп из Интернет для всех.

Для ограничения группы компьютеров, имеющих право запрашивать время у xntpd, используется параметр restrict:

restrict 192.168.1.0 mask 255.255.255.0 nomodify

Такая установка разрешает обращаться к xntpd только компьютерам из сети 192.168.1.0 с маской сети 255.255.255.0, но запрещает им требовать от сервера NTP изменить его локальное время.

Директив restrict в файле /etc/inet/ntp.conf может быть несколько.

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

Если ваша сеть невелика, а требования к точности времени умеренные (часы могут спешить или отставать на 30 миллисекунд и немного больше), то xntpd может показаться не лучшим выбором. Для синхронизации часов только при загрузке системы достаточно использовать программу ntpdate.

Ее можно вызывать не только при загрузке системы. Если в процессе работы системные часы отклоняются несильно и высокая точность (30 мс или выше) не нужна, запускайте раз в два часа ntpdate для синхронизации с эталонным сервером из cron:

1 */2 * * * root /usr/sbin/ntpdate -b –s адрес_NTP-сервера

Проверка настроек сервера времени

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

ntpq -p
remote refid st t when poll reach delay offset disp
=================================================================
ensb.cpsc.ucalg montpelier 2 u 26 64 1 189.36 2879.39 15875.0

Если надо проследить цепочку, по которой точное время добирается до вашей сети, пригодится программа ntptrace:

ntptrace ntp.cpsc.ucalgary.ca
ensb.cpsc.ucalgary.ca: stratum 2, offset 2.867748, synch distance
0.05968
montpelier.ilan.caltech.edu: stratum 1, offset 2.863728, synch
distance 0.00113, refid ''
ntptrace localhost
localhost: stratum 16, offset 0.000014, synch distance 1.00270

Так как служба времени в Solaris контролируется с помощью SMF, можно использовать обычные для этого механизма команды для наблюдения и управления службой:

svcprop -v svc:/network/ntp
network/entities fmri svc:/network/service
network/grouping astring require_any
network/restart_on astring error
network/type astring service
general/entity_stability astring Unstable
general/single_instance boolean true
dependents/ntp_multi-user fmri svc:/milestone/multi-user
start/exec astring /lib/svc/method/xntp
start/timeout_seconds count 1800
start/type astring method
stop/exec astring :kill
stop/timeout_seconds count 60
stop/type astring method
tm_common_name/C ustring Network\ Time\ Protocol\ \(NTP\)
tm_man_xntpd/manpath astring :default
tm_man_xntpd/section astring 1M
tm_man_xntpd/title astring xntpd
tm_man_ntpdate/manpath astring :default
tm_man_ntpdate/section astring 1M
tm_man_ntpdate/title astring ntpdate
tm_man_ntpq/manpath astring :default
tm_man_ntpq/section astring 1M
tm_man_ntpq/title astring ntpq
< Лекция 13 || Лекция 14: 12 || Лекция 15 >
Александр Тагильцев
Александр Тагильцев

Где проводится профессиональная переподготовка "Системное администрирование Windows"? Что-то я не совсем понял как проводится обучение.