Разные заметки

воскресенье, 22 января 2012 г.

Home Server. Часть 4. Настройка NTP сервера для локальной сети.

Собственно, установка демона сводится к установке следующих пакетов: ntp (пакет включающий самого демона), ntpdate (утилита для ручной синхронизации времени - устарела), ntp-doc (документация по пакету), в некоторых дистрибутивах нужно будет установить так же ntp-utils (утилиты для диагностики), в некоторых они включены в пакет ntp.

Приступим.


1. Устанавливаем NTP сервер:
$ sudo aptitude install ntp ntpdate


2.Первым делом, посоветую изменить параметры запуска демона в следующем конфигурационном файле /etc/default/ntp:
$ sudo cat /etc/default/ntp

NTPD_OPTS='-g'


3. Идем сюда и выбираем серверы времени (http://support.ntp.org/bin/view/Servers/WebHome):
Из указанной ссылки я выбрал все сервера Open Access, расположенные в России (RU) + тот, который предоставил провайдер. Проверим их доступность:
$ sudo ntpdate -q ntp2.ntp-servers.net ntp1.vniiftri.ru ntp2.vniiftri.ru ntp4.vniiftri.ru ntp0.ntp-servers.net ntp1.ntp-servers.net ntp3.vniiftri.ru ntp.corbina.net 

server 91.226.136.138, stratum 1, offset 0.013511, delay 0.05078
server 62.117.76.142, stratum 0, offset 0.000000, delay 0.00000
server 62.117.76.141, stratum 1, offset 0.013663, delay 0.03273
server 62.117.76.140, stratum 1, offset -0.003147, delay 0.06731
server 88.147.254.228, stratum 1, offset -0.012271, delay 0.14090
server 91.226.136.136, stratum 1, offset 0.004404, delay 0.06723
server 62.117.76.138, stratum 1, offset 0.005155, delay 0.05037
server 195.14.40.141, stratum 2, offset 0.002443, delay 0.02892
22 Jan 19:43:25 ntpdate[4023]: adjust time server 62.117.76.138 offset 0.005155 sec

4. В примере наши сервера удачно выдали уровень stratum1, что не может не радовать (кроме сервера провайдера ), offset - это расхождение во времени с этим сервером в секундах, delay - задержка синхронизации в секундах. Обычно, бОльшая точность получается при использовании серверов, которые имеют низкую задержку передачи пакетов по сети. Для выявления этого, возможно воспользоваться утилитами ping и traceroute. Соответственно, выбрав сначала те, у которых время ответа меньше, а из них - те, до которых меньше хопов. Я же, чтобы не терять время, воспользуюсь всем указанными серверами и впишу их в конфигурационный файл. Итого, зная все вышеперечисленное, опишу свой получившийся файл /etc/ntp.conf:
$ sudo cat /etc/ntp.conf

# /etc/ntp.conf, configuration for ntpd; see ntp.conf(5) for help

driftfile /var/lib/ntp/ntp.drift


# Enable this if you want statistics to be logged.
#statsdir /var/log/ntpstats/
logfile /var/log/ntp.log


statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable


# You do need to talk to an NTP server or two (or three).
#server ntp.your-provider.example


# pool.ntp.org maps to about 1000 low-stratum NTP servers.  Your server will
# pick a different set every time it starts up.  Please consider joining the
# pool:
#server 0.debian.pool.ntp.org iburst
#server 1.debian.pool.ntp.org iburst
#server 2.debian.pool.ntp.org iburst
#server 3.debian.pool.ntp.org iburst
server  ntp2.ntp-servers.net
server  ntp1.vniiftri.ru
server  ntp2.vniiftri.ru
server  ntp4.vniiftri.ru
server  ntp0.ntp-servers.net
server  ntp1.ntp-servers.net
server  ntp3.vniiftri.ru
server  ntp.corbina.net


# Access control configuration; see /usr/share/doc/ntp-doc/html/accopt.html for
# details.  The web page
# might also be helpful.
#
# Note that "restrict" applies to both servers and clients, so a configuration
# that might be intended to block requests from certain clients could also end
# up blocking replies from your own upstream servers.


# By default, exchange time with everybody, but don't allow configuration.
#restrict -4 default kod notrap nomodify nopeer noquery
#restrict -6 default kod notrap nomodify nopeer noquery


# Local users may interrogate the ntp server more closely.
restrict default ignore
restrict 127.0.0.1
restrict ::1
restrict 192.168.93.0 mask 255.255.255.0 nomodify notrap nopeer


# разрешаем внешним источникам времени доступ:

restrict  ntp2.ntp-servers.net
restrict  ntp1.vniiftri.ru
restrict  ntp2.vniiftri.ru
restrict  ntp4.vniiftri.ru
restrict  ntp0.ntp-servers.net
restrict  ntp1.ntp-servers.net
restrict  ntp3.vniiftri.ru
restrict  ntp.corbina.net


# Clients from this (example!) subnet have unlimited access, but only if
# cryptographically authenticated.
#restrict 192.168.123.0 mask 255.255.255.0 notrust




# If you want to provide time to your local subnet, change the next line.
# (Again, the address is an example only.)
#broadcast 192.168.123.255


# If you want to listen to time broadcasts on your local subnet, de-comment the
# next lines.  Please do this only if you trust everybody on the network!
#disable auth
#broadcastclient


# а этот хак, который выставляет уровень доверия серверу (strata) самому себе равный 3
# в двух словах чем выше уровень-тем меньше число. 0 - это атомные часы,
# 1 - это синхронизированные с ними, 2 - с первым, и так далее.
server  127.127.1.1
fudge   127.127.1.1     stratum 3



5. Наблюдение за сервером ntpd и за синхронизацией
Когда у вас все настроено. NTP будет держать время в синхронизированном состоянии. Этот процесс можно наблюдать при помощи команды NTP Query (ntpq):

$ sudo ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+n44.time1.d6.hs .PPS.            1 u   45   64  377   25.145   13.203   2.126
 ntp1.vniiftri.r .INIT.          16 u    -  256    0    0.000    0.000   0.000
*ntp2.vniiftri.r .PPS.            1 u   45   64  377    7.358   13.708   2.450
-ntp4.vniiftri.r .PPS.            1 u   42   64  377   39.698   -3.873   2.619
xn1.time1.d6.hsd .PPS.            1 u   49   64  377  114.879   -7.538   8.818
-ns1.hsdn.org    .GPS.            1 u   45   64  377   39.775    5.122   1.059
+ntp3.vniiftri.r .PPS.            1 u   46   64  377   24.197    8.417   2.947
 ntp-anycast.cor 192.43.244.18    2 u   49   64  377    3.856    2.877   2.709
 LOCAL(1)        .LOCL.           3 l  257   64  360    0.000    0.000   0.001

Значение каждой колонки следующее:
remote
Имя удаленного NTP-сервера. Если указать ключ -n, вы получите IP-адреса серверов вместо имён.

refid
Указывает, откуда каждый сервер получает время в данный момент. Это может быть имя хоста или что-то вроде .GPS., указывающее на источник глобальной системы позиционирования (Global Positioning System).

st
Stratum (уровень) это число от 1 до 16, указывающее на точность сервера. Единица означает максимальную точность, 16 -- сервер недоступен. Ваш уровень будет равен уровню наименее точного удаленного сервера плюс 1.

poll
Интервал между опросами (в секундах). Значение будет изменяться между минимальной и максимальной частотой опросов. В начале интервал будет маленьким, чтобы синхронизация происходила быстро. После того как часы синхронизируются, интервал начинает увеличиваться, чтобы уменьшить трафик и нагрузку на популярные сервера времени.

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

delay
Количество времени (в секундах) необходимого для получения ответа на запрос "который час? ".

offset
Наиболее важное поле. Разница между временем локального и удаленного серверов. В ходе синхронизации это значение должно понижаться (приближаться к нулю), указывая на то, что часы локальной машины идут все точнее.

jitter
Дисперсия (Jitter) -- это мера статистических отклонений от значения смещения (поле offset) по нескольким успешным парам запрос-ответ. Меньшее значение дисперсии предпочтительнее, поскольку позволяет точнее синхронизировать время.


Значение знаков перед именами серверов
x - фальшивый источник по алгоритму пересечения;
. - исключён из списка кандидатов из-за большого расстояния;
- - удалено из списка кандидатов алгоритмом кластеризации;
+ - входит в конечный список кандидатов;
# - выбран для синхронизации, но есть 6 лучших кандидатов;
* - выбран для синхронизации;
o - выбран для синхронизации, но используется PPS;
пробел - слишком большой уровень, цикл или явная ошибка;

Служба ntpd "умная" и сама отсеивает источники времени слишком выбивающиеся за рамки разумного. Через некоторое время после запуска ntpd выберет наиболее достоверные источники данных и будет синхронизироваться с ними. Представленный нами список эталонных NTP серверов регулярно пересматривается службой.



6. Настройка клиентских машин
Для синхронизации времени на UNIX-машинах локальной сети целесообразно использовать утилиту ntpdate, запуская ее при помощи демона cron несколько раз в сутки, например каждый час. Для этого, в кронтаб пользователя root необходимо добавить следующую строку:
0 * * * * /usr/sbin/ntpdate -s
Ключ -s направляет вывод команды демону syslog.

Для настройки NTP клиента Windows, необходимо выполнить в консоли следующие команды:
C:\>net time /setsntp:
The command completed successfully.
C:\>net stop w32time
The Windows Time service is stopping.
The Windows Time service was stopped successfully.
C:\>net start w32time
The Windows Time service is starting.
The Windows Time service was started successfully.
C:\>net time /querysntp
The current SNTP value is:
The command completed successfully.


Что могу посоветовать почитать дополнительно:
тут описано, как подключить GPS к серверу для организации своего сервера точного времени уровня Stratum1.
тут описано, как настроить авторизацию на ntp-сервере.

Выдержки из источника: http://www.k-max.name/linux/ntp-server-na-linux/

Комментариев нет:

Отправить комментарий