Страница 1 из 11

NTP сервер

Добавлено: 2008-11-17 17:52:20
m0ps
Товарищ 100kg пару лет назад написал статейку Ntpdate/Ntpd (http://www.lissyara.su/?id=1260). Решил я немного обновить ее с учетом моего опыта.

Код: Выделить всё

И так, есть 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
restrict localhost
#разрешаем синхронизироваться с удаленными серверами
restrict 0.ua.pool.ntp.org
restrict 1.ua.pool.ntp.org
restrict 2.ua.pool.ntp.org
restrict 3.ua.pool.ntp.org

Опция 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
restrict 0.ua.pool.ntp.org
restrict 1.ua.pool.ntp.org
restrict 2.ua.pool.ntp.org
restrict 3.ua.pool.ntp.org

Опция 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:
http://www.sun.com/blueprints/0701/NTP.pdf
http://www.sun.com/blueprints/0801/NTPpt2.pdf
http://www.sun.com/blueprints/0901/NTPpt3.pdf

Алес :)

А теперь вопрос:
стоит ли ее размещать на сайте?

Re: NTP сервер

Добавлено: 2008-11-17 17:59:24
dikens3
Если не на сайте, то на wiki точно пригодиться.

http://wiki.lissyara.su

Re: NTP сервер

Добавлено: 2008-11-17 18:10:40
m0ps
немного обновил. добавил информацию об опции burst

Re: NTP сервер

Добавлено: 2008-11-17 21:58:02
dikens3
Ошибки поправь

милисикундах

Re: NTP сервер

Добавлено: 2008-11-17 22:34:55
m0ps
черновик, я ошибки еще не проверял. вдруг не понадобиться, зачем напрягаться по мелочам :)

Re: NTP сервер

Добавлено: 2008-11-18 9:20:52
mymymy
если ipfw, не забываем так:

Код: Выделить всё

add allow udp from any 123 to ${внешний ip} in via ${внешний интерфейс}
Если синхронизируется со смещением на несколько часов относительно вашего пояса,значит настроен часовой пояс неверно (что я собственно у себя и увидел случайно)

Код: Выделить всё

# tzsetup
На первый вопрос "Is this machine's CMOS clock set to UTC? If it is set to local time, or you don't know, please choose NO here!" отчечаем No.
Далее просят выбрать регион, выбираем 8 Europe.
Далее просят выбрать страну или регион, выбираем 38 Russian Federation.
далее просят выбрать смещение времени относительно Москвы, выбираем 2 Moscow+00 - west Russia.
На вопрос "Does the abbreviation `MSD' look reasonable?" отвечаем Yes.

Re: NTP сервер

Добавлено: 2008-11-19 17:21:06
m0ps
добавил в wiki (http://wiki.lissyara.su/wiki/Ntp).
оформил как мог. нет времени и желание разбираться с туповатой разметкой mediawiki.

Re: NTP сервер

Добавлено: 2008-11-20 11:13:51
Al
На сайте лучше тож обноввить. Во -первых,не все любят вики, во-вторых - зачем на сайте старая,если есть уже дополненная?

Re: NTP сервер

Добавлено: 2008-11-20 15:39:35
m0ps
Al писал(а):На сайте лучше тож обноввить. Во -первых,не все любят вики, во-вторых - зачем на сайте старая,если есть уже дополненная?
ну никто же не поддержал... да и товарищ "главный начальник" ;) промолчал

Re: NTP сервер

Добавлено: 2008-11-21 7:23:57
Alex Keda
я физически не успеваю просмотреть все темы
поэтому лучше носом меня тыкать во что-то важное.
======
пиши на сайт.
Старую в архив двину.

Re: NTP сервер

Добавлено: 2008-11-21 9:45:13
m0ps
ок

Update:
добавил на сайт:
http://www.lissyara.su/?id=1809

Re: NTP сервер

Добавлено: 2008-12-01 21:44:43
kolesya

Код: Выделить всё

 1 Dec 20:17:46 ntpd[54330]: sendto(193.34.155.3) (fd=22): Permission denied
 1 Dec 20:17:47 ntpd[54330]: sendto(82.94.245.2) (fd=22): Permission denied
 1 Dec 20:17:49 ntpd[54330]: sendto(193.34.155.2) (fd=22): Permission denied
 1 Dec 20:17:50 ntpd[54330]: sendto(212.111.205.110) (fd=22): Permission denied
Просветите плз .... что не так ?

в упор не могу понять что не так с моими руками в отношении с ntpd.
по результатам

Код: Выделить всё

tcpdump -i re0 dst port 123 or src port 123
в логе ntpd куча записей (внешний хост привожу тока один).....

Код: Выделить всё

20:36:43.130699 IP host.in.inet.ntp > ns1.odessa.comstar.net.ua.ntp: NTPv4, Client, length 48
20:36:43.146682 IP ns1.odessa.comstar.net.ua.ntp > host.in.inet.: NTPv4, Server, length 48
по фаеру уже почти все перепробовал .... кроме "all from any to any"
фря 7.0. стоит в продакшине, все норм работает.

Re: NTP сервер

Добавлено: 2008-12-02 9:30:02
m0ps
Permission denied
вот что не так :)
проверь все права везде а также покажи конфиг... тогда может что родится...

Re: NTP сервер

Добавлено: 2008-12-02 14:10:53
kolesya

Код: Выделить всё

# ee /etc/ntp.conf
....
restrict default ignore
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
Итак - лажа в статье. Такой конфиг не позволяет принимать команды modify вообще ни от кого

Re: NTP сервер

Добавлено: 2008-12-02 14:40:06
m0ps
точно... забыл про

Код: Выделить всё

restrict 0.ua.pool.ntp.org
restrict 1.ua.pool.ntp.org
restrict 2.ua.pool.ntp.org
restrict 3.ua.pool.ntp.org
спасибо...

NTP сервер

Добавлено: 2008-12-07 12:11:18
Горыч
Добрый.

Обновил NTP по вашей статье. FreeBSD 7.0.

gate# ntpd -v
ntpd: option `var' requires an argument
ntpd - NTP daemon program - Ver. 4.2.4p4

В логах же сообщение:

7 Dec 11:52:30 ntpd[670]: ntpd 4.2.0-a Sun Feb 24 16:32:46 UTC 2008 (1)

При установке bash описанная процедура не работает. Можно просвятить не грамотного???

Re: NTP сервер

Добавлено: 2008-12-07 12:29:36
m0ps
Горыч писал(а):При установке bash описанная процедура не работает. Можно просвятить не грамотного???
измени дефолтные пути поиска бинарников, как это сделать при использовании баша - я не вкурсе, т.к. им не пользуюсь, мне и csh хватает

Re: NTP сервер

Добавлено: 2008-12-07 12:34:55
Горыч
В логах же сообщение:

7 Dec 11:52:30 ntpd[670]: ntpd 4.2.0-a Sun Feb 24 16:32:46 UTC 2008 (1)

почему?

Re: NTP сервер

Добавлено: 2008-12-07 13:02:13
m0ps
во блин, не дочитал...
при загрузке стартует старая версия.

в rc.conf точно указал:

Код: Выделить всё

ntpd_program="/usr/local/bin/ntpd"
ну или куда там у тебя он стал?

Re: NTP сервер

Добавлено: 2008-12-07 14:13:06
Горыч
Извините, действительно не обратил внимания на строку

ntpd_program="/usr/local/bin/ntpd"

NTP сервер

Добавлено: 2008-12-14 20:45:40
Горыч
Добрый.
Подскажите в чем проблема???
До обновления, описанного в этой статье все работало, т.е. синхронизация происходила. Обновляю, запускаю, не работает.

В логах такие записи:
ntp.log

Код: Выделить всё

14 Dec 20:24:48 ntpd[45842]: ntpd exiting on signal 15
сообщение об остановке ntp

debug.log

Код: Выделить всё

Dec 14 20:38:33 gate ntpd[68247]: ntp_io: estimated max descriptors: 7207, initial socket boundary: 20

Re: NTP сервер

Добавлено: 2008-12-16 20:05:35
sudosu
Горыч писал(а):Добрый.
Подскажите в чем проблема???
До обновления, описанного в этой статье все работало, т.е. синхронизация происходила. Обновляю, запускаю, не работает.

В логах такие записи:
ntp.log

Код: Выделить всё

14 Dec 20:24:48 ntpd[45842]: ntpd exiting on signal 15
........
ммммм

Код: Выделить всё

file /usr/local/bin/ntpd
или где там он у тебя, что кажет?

Re: NTP сервер

Добавлено: 2008-12-16 20:45:24
m0ps
не знаю.. я наверное на 10-ке серверов делал - ни одной проблемы.
а ты уверен что он у тебя не запущен?
попробуй ntpq вызвать (к примеру ntpq -p)

NTP сервер

Добавлено: 2008-12-16 22:15:57
Горыч
Добрый.

Вывод команд:

# file /usr/local/bin/ntpd
/usr/local/bin/ntpd: ELF 32-bit LSB executable, Intel 80386, version 1 (FreeBSD), for FreeBSD 7.0 (700055), dynamically linked (uses shared libs), FreeBSD-style, stripped

# ntpq -p
localhost: timed out, nothing received
***Request timed out

NTP сервер

Добавлено: 2008-12-16 22:18:53
Горыч
Вдогонку к предыдущему сообщению:

# ps aux | grep ntp
root 676 0,0 1,1 5820 5844 ?? Ss 22:13 0:00,10 /usr/local/bin/ntpd -c /etc/ntp.conf -p /var/run/ntpd.pid -f /var/db/ntpd.drift