Ntp

Материал из wiki.lissyara.su
Перейти к: навигация, поиск

И так, есть FreeBSD 7.0 с которой идет уже устаревшая версия ntpd. Так что для начала поставим новую версию из портов. Но перед тем как приступить к установке, немного изменим дефолтные пути поиска бинарников (эту операцию необходимо проворачивать всегда, если планируется ставить софт из портов изначально присутствующий во FreeBSD - ntpd, ssl и т.д).

# cd /root
# ee .cshrc
#set path = (/sbin /bin /usr/sbin /usr/bin /usr/games /usr/local/sbin /usr/local/bin
            /usr/X11R6/bin)
 set path = (/usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /sbin /bin $HOME/bin)

Сохраняем, а затем делаем logout и снова login. Проверяем, правильно все работает:

echo $path
/usr/local/sbin /usr/local/bin /usr/sbin /usr/bin /sbin /bin /root/bin

Теперь обновляем порты и ставим ntpd:

# cd /usr/ports/net/ntp
# make install clean
# rehash

Теперь создаем drift - файл в котором храниться информация о смещении времени локальной машины относительно серверов точного времени.

# touch /etc/ntp/drift

Теперь приступим к написанию главного конфигурационного файла ntpd - ntp.conf

# ee /etc/ntp.conf
#добавляем сервера, с которыми будет проводиться синхронизация
server 0.ua.pool.ntp.org iburst prefer
server 1.ua.pool.ntp.org iburst
server 2.ua.pool.ntp.org iburst
server 3.ua.pool.ntp.org iburst
#путь к дрифт файлу
driftfile /etc/ntp/drift
#лог
logfile /var/log/ntp.log
#разрешаем обновляться только локальной сети
restrict default ignore
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

Рекомендация: prefer запись лучше назначать наиболее "быстрому" серверу, так же рекомендуется использовать pool сервера, выбрать подходящий для вас сервер можно на странице http://support.ntp.org/bin/view/Servers/WebHome (Англ.), там же можно найти ссылки, для более полного изучения вопроса.

Опция iburst позволяет ntpd ускорить начальный процесс синхронизации, prefer - отмечает предпочитаемый сервер. Конфиг готов, теперь добавляем в rc.conf следующие строчки:

# ee /etc/rc.conf
ntpd_enable="YES"
ntpd_program="/usr/local/bin/ntpd"

И стартуем демон:

# /etc/rc.d/ntpd start

Ждем порядка 10 минут.

Теперь можно проверить состояние синхронизации:

# ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*shtucer.tstu.ed 193.190.230.65   2 u    -  128   37   93.311   -1.769   0.844
+ns1.odessa.coms 198.123.30.132   2 u   65   64   17   55.824   -5.750   0.676
x212.111.205.110 62.149.0.30      2 u   91  256    7  1936.77  913.387   0.647
+shkvoren.tstu.e 147.231.19.43    2 u    1   64   37   93.840   -0.587   1.099

Тут остановимся по-подробнее.

remote - имена удаленных ntp серверов (в нашем случае полученные из пулов 0/1/2/3.ua.pool.ntp.org)

refid - сервер, с которым производит синхронизацию удаленный сервер ntp

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

t - тип пира (u = unicast, m = multicast)

when - указывает на то, как давно была произведена синхронизация с сервером

poll - частота в секундах, с которой NTP демон синхронизируется с пиром

reach - состояние доступности сервера, это значение стабилизируется на уровне 377 если последних 8 попыток синхронизации с удаленным сервером были успешны

delay - он и в Африке delay - задержка (в миллисекундах) ответа от сервера

offset - разница в миллисекундах между системным временем и временем удаленного сервера; значение с минусом - отставание, с плюсом - наши часики спешат

jitter - смещение времени на удаленном сервере

Теперь немного о значках, следа от имени пира:

"*" - пир, с которым последний раз у нас была выполнена синхронизация

"+" - "хороший" (пригодный для обновления) сервер

"-" - "плохой" (непригодный для обновления) сервер

"х" - сервер не отвечает


Узнать, пригоден ли наш сервер для синхронизации, а также узнать некоторые его данные можно следующей командой:

# ntpdate -q localhost

В ответ должны получить что-то подобное:

Looking for host localhost and service ntp
host found : localhost
server 127.0.0.1, stratum 3, offset 0.000003, delay 0.02573
17 Nov 15:28:54 ntpdate[4918]: adjust time server 127.0.0.1 offset 0.000003 sec

Этот ответ означает, что наш сервер пригоден для синхронизации, его страта равна трем, смещение - 0.000003 а задержка при ответе равна 0.02573.

Аналогичной командой можно узнать эти параметры на удаленном сервере:

#ntpdate -q ntp.time.in.ua
Looking for host ntp.time.in.ua and service ntp
host found : ntp.time.in.ua
server 62.149.0.30, stratum 1, offset -0.000233, delay 0.04053
17 Nov 16:10:42 ntpdate[5177]: adjust time server 62.149.0.30 offset -0.000233 sec

Ниже приведен пример ответа сервера, непригодного для синхронизации:

server 132.123.123.123, stratum 16, offset 6.188638, delay 0.03827
17 Nov 16:17:36 ntpdate[1027]: no server suitable for synchronization found

В /var/log/ntp.log должны быть сообщения аналогичные нижеприведенным:

16 Nov 22:23:23 ntpd[27414]: synchronized to 193.34.155.4, stratum=2
17 Nov 01:51:11 ntpd[27414]: synchronized to 82.207.89.35, stratum=3
17 Nov 01:51:13 ntpd[27414]: synchronized to 193.34.155.4, stratum=2

Каждая запись соответствует успешной синхронизации с удаленным сервером.

В случае, если после запуска ntpd он только 1 раз синхронизируется с удаленным сервером а синхронизация не наблюдается, лог выглядит так:

17 Nov 15:47:17 ntpd[5059]: synchronized to 91.198.10.4, stratum=2
17 Nov 15:47:17 ntpd[5059]: kernel time sync disabled 0041
17 Nov 15:47:21 ntpd[5059]: kernel time sync enabled 0001

ntp.conf стоит "нарисовать" так:

server 0.ua.pool.ntp.org iburst burst prefer
server 1.ua.pool.ntp.org iburst burst
server 2.ua.pool.ntp.org iburst burst
server 3.ua.pool.ntp.org iburst burst
driftfile /etc/ntp/drift
logfile /var/log/ntp.log
restrict default ignore
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

Опция burst, указывает ntpd посылать 5 (точно не помню количество) пакетов вместо одного для попытки синхронизации, что повышает шансы на успешную синхронизацию.

Все, теперь настраиваем клиентов на синхронизацию с нашим сервером (192.168.1.1). В случае с клиентом под FreeBSD (под Linux тоже должно работать) рисуем следующий конфиг:

# ee /etc/ntp.conf
server 192.168.1.1 iburst
driftfile /etc/ntp/drift
logfile /var/log/ntp.log
restrict default ignore
restrict 192.168.1.1

Более подробно о настройке, мониторинге и траблшутинге ntpd можно почитать в следующих pdf'ках от SUN: [1] [2] [3]

Алес :)

--m0ps 17:15, 19 ноября 2008 (MSK)