Служба точного времени
Материал из Xgu.ru
- Источник: http://wiki.lissyara.su/wiki/Ntp
- Правки: RemiZOffAlex
- Дата последнего обновления: 17 июля 2013
Содержание |
[править] Установка
[править] Arch Linux
# pacman -S ntp resolving dependencies... looking for inter-conflicts... Packages (1): ntp-4.2.6.p5-14 Total Download Size: 0.45 MiB Total Installed Size: 1.55 MiB :: Proceed with installation? [Y/n] Y :: Retrieving packages ... ntp-4.2.6.p5-14-x86_64 464.2 KiB 300K/s 00:02 [###############################################] 100% (1/1) checking keys in keyring [###############################################] 100% (1/1) checking package integrity [###############################################] 100% (1/1) loading package files [###############################################] 100% (1/1) checking for file conflicts [###############################################] 100% (1/1) checking available disk space [###############################################] 100% (1/1) installing ntp [###############################################] 100%
[править] openSUSE
# zypper install ntp
[править] Настройка
Адрес | Порт | Уровень | Устройство | Доступ |
---|---|---|---|---|
ntp1.vniiftri.ru | IPv4 UDP 123 | stratum 1 | Meinberg LANTIME M300/MRS | свободный |
ntp2.vniiftri.ru | IPv4 UDP 123 | stratum 1 | Meinberg LANTIME M300/MRS | свободный |
ntp3.vniiftri.ru | IPv4 UDP 123 | stratum 1 | Meinberg LANTIME M300/MRS | свободный |
ntp4.vniiftri.ru | IPv4 UDP 123 | stratum 1 | MEINBERG LANTIME Version: 3.05 | свободный |
ntp21.vniiftri.ru | IPv4 UDP 123 | stratum 2 | Linux kernel 2.6.32. ntpd 4.2.4p8 Intel Xeon | свободный |
[править] Установка часового пояса
[править] Linux
# tzsetup Please identify a location so that time zone rules can be set correctly. Please select a continent or ocean. 1) Africa 2) Americas 3) Antarctica 4) Arctic Ocean 5) Asia 6) Atlantic Ocean 7) Australia 8) Europe 9) Indian Ocean 10) Pacific Ocean 11) none - I want to specify the time zone using the Posix TZ format. #? 8 Please select a country. 1) Aaland Islands 18) Greece 35) Norway 2) Albania 19) Guernsey 36) Poland 3) Andorra 20) Hungary 37) Portugal 4) Austria 21) Ireland 38) Romania 5) Belarus 22) Isle of Man 39) Russia 6) Belgium 23) Italy 40) San Marino 7) Bosnia & Herzegovina 24) Jersey 41) Serbia 8) Britain (UK) 25) Latvia 42) Slovakia 9) Bulgaria 26) Liechtenstein 43) Slovenia 10) Croatia 27) Lithuania 44) Spain 11) Czech Republic 28) Luxembourg 45) Sweden 12) Denmark 29) Macedonia 46) Switzerland 13) Estonia 30) Malta 47) Turkey 14) Finland 31) Moldova 48) Ukraine 15) France 32) Monaco 49) Vatican City 16) Germany 33) Montenegro 17) Gibraltar 34) Netherlands #? 39 Please select one of the following time zone regions. 1) Moscow-01 - Kaliningrad 10) Moscow+05 - Lake Baikal 2) Moscow+00 - west Russia 11) Moscow+06 - Lena River 3) Moscow+00 - Caspian Sea 12) Moscow+06 - Tomponsky, Ust-Maysky 4) Moscow+00 - Samara, Udmurtia 13) Moscow+07 - Amur River 5) Moscow+02 - Urals 14) Moscow+07 - Sakhalin Island 6) Moscow+03 - west Siberia 15) Moscow+07 - Oymyakonsky 7) Moscow+03 - Novosibirsk 16) Moscow+08 - Magadan 8) Moscow+03 - Novokuznetsk 17) Moscow+08 - Kamchatka 9) Moscow+04 - Yenisei River 18) Moscow+08 - Bering Sea #? 2 The following information has been given: Russia Moscow+00 - west Russia Therefore TZ='Europe/Moscow' will be used. Local time is now: Wed Jun 26 21:18:51 MSK 2013. Universal Time is now: Wed Jun 26 17:18:51 UTC 2013. Is the above information OK? 1) Yes 2) No #? 1 You can make this change permanent for yourself by appending the line setenv TZ 'Europe/Moscow' to the file '.login' in your home directory; then log out and log in again. Here is that TZ value again, this time on standard output so that you can use the /usr/bin/tzselect command in shell scripts: Europe/Moscow
[править] FreeBSD
И так, есть FreeBSD с которой идет ntpd. Для начала указываем часовой пояс.
# tzsetup Europe/Moscow
И синхронизируем время ручками.
# ntpdate ntp1.vniiftri.ru
Создаем drift - файл в котором храниться информация о смещении времени локальной машины относительно серверов точного времени.
# touch /etc/ntp/drift
[править] ntp.conf
Теперь приступим к написанию главного конфигурационного файла ntpd
[править] Linux
Code: /etc/ntp.conf |
server ntp1.vniiftri.ru iburst prefer server ntp2.vniiftri.ru iburst server ntp3.vniiftri.ru iburst server ntp4.vniiftri.ru iburst restrict default nomodify nopeer noquery restrict 127.0.0.1 restrict ntp1.vniiftri.ru restrict ntp2.vniiftri.ru restrict ntp3.vniiftri.ru restrict ntp4.vniiftri.ru }} ==== [[FreeBSD]] ==== {{Code|/etc/ntp.conf|<pre> #добавляем сервера, с которыми будет проводиться синхронизация server ntp1.vniiftri.ru iburst prefer server ntp2.vniiftri.ru iburst server ntp3.vniiftri.ru iburst server ntp4.vniiftri.ru 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 ntp1.vniiftri.ru restrict ntp2.vniiftri.ru restrict ntp3.vniiftri.ru restrict ntp4.vniiftri.ru |
Внимание! prefer запись лучше назначать наиболее "быстрому" серверу, так же рекомендуется использовать pool сервера, выбрать подходящий для вас сервер можно на странице http://www.vniiftri.ru/index.php/ru/services/22-ntp (рус.), там же можно найти ссылки, для более полного изучения вопроса. |
Опция iburst позволяет ntpd ускорить начальный процесс синхронизации, prefer - отмечает предпочитаемый сервер.
[править] Логирование
[править] Arch Linux
[править] FreeBSD
По умолчанию лог ntpd имеет имя ntp.log и находится в папке /var/log. Для того, чтобы newsyslog(8) выполнял его ротацию, необходимо добавить в файл /etc/newsyslog.conf строку:
/var/log/ntp.log 644 3 128 * J
[править] Файервол
[править] Linux
[править] FreeBSD
Разрешаем клиентам обновляться от себя в качестве сервера:
# ipfw add add pass udp from 192.168.0.1/24 to me 123 in via re0 # ipfw add add pass udp from me 123 to 192.168.0.1/24 out via re0
Разрешаем себе синхронизацию с серверами:
# ipfw add add pass udp from me to any 123 out via re1 # ipfw add add pass udp from any 123 to me in via re1
[править] Использование
Конфиг готов, теперь добавляем в rc.conf следующие строчки:
# ee /etc/rc.conf ntpd_enable="YES"
И стартуем демон:
# /etc/rc.d/ntpd start
Ждем порядка 2 минут.
Теперь можно проверить состояние синхронизации:
# ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== *ntp1.vniiftri.r .PPS. 1 u - 256 377 7.917 3.725 0.667 -ntp2.vniiftri.r .PPS. 1 u 117 256 377 7.937 2.799 3.380 +ntp3.vniiftri.r .PPS. 1 u 87 256 377 8.034 3.840 0.680 +ntp4.vniiftri.r .PPS. 1 u 110 256 377 8.104 2.959 0.521
Тут остановимся по-подробнее.
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 ntp1.vniiftri.ru server 62.117.76.142, stratum 1, offset 0.002487, delay 0.03352 29 Oct 02:28:14 ntpdate[9245]: adjust time server 62.117.76.142 offset 0.002487 sec
Ниже приведен пример ответа сервера, непригодного для синхронизации:
server 62.117.76.142, stratum 1, offset 0.002487, delay 0.03352 29 Oct 02:28:14 ntpdate[9245]: no server suitable for synchronization found
В /var/log/ntp.log должны быть сообщения аналогичные нижеприведенным:
28 Oct 20:34:56 ntpd[6558]: synchronized to 62.117.76.142, stratum 1 28 Oct 20:35:09 ntpd[6558]: synchronized to 62.117.76.138, stratum 1 28 Oct 20:37:01 ntpd[6558]: synchronized to 62.117.76.142, stratum 1
Каждая запись соответствует успешной синхронизации с удаленным сервером.
В случае, если после запуска 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
[править] Ссылки
Более подробно о настройке, мониторинге и траблшутинге ntpd можно почитать в следующих pdf'ках от SUN: