Ntp
И так, есть 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)