среда, 23 марта 2011 г.

NTPD

Настройка сервера для синхронизации времени в сети, не особенно сложна.
Настраивать будем на FreeBSD. Также опишу пару команд по проверке сервера.
Во многих Unix системах демон ntpd уже установлен, FreeBSD не является исключением.
Для начала нужно определить NTP Public Pool с которого и будем обновляться.
Их список можно посмотреть здесь, например пул для Украины

Можно также проверить ответы от серверов
# ntpdate -q 0.ua.pool.ntp.org
server 82.207.71.1, stratum 2, offset 1.760265, delay 0.03810
server 79.142.192.130, stratum 2, offset 1.765748, delay 0.02658
server 178.150.103.191, stratum 2, offset 1.764228, delay 0.04254
11 Mar 16:47:24 ntpdate[57519]: step time server 79.142.192.130 offset 1.765748 sec


ntp.conf
# cat /etc/ntp.conf
### UAIX pool
#server 0.ua.pool.ntp.org
server 91.203.15.142
server 62.149.0.30
server 91.198.10.4

#server 1.ua.pool.ntp.org
server 82.207.71.1
server 193.193.193.107
server 79.142.192.130

#server 2.ua.pool.ntp.org
server 178.150.103.191
server 91.198.10.1
server 82.207.71.2

#server 3.ua.pool.ntp.org
server 78.152.160.1
server 79.142.192.4
server 89.209.65.130

### Europe pool
#server europe.pool.ntp.org
server 188.40.81.201
server 192.121.13.59
server 87.106.98.153

# Разрешаем внешние сервера для синхронизации
restrict 91.203.15.142 mask 255.255.255.255 noquery notrap
restrict 62.149.0.30 mask 255.255.255.255 noquery notrap
restrict 91.198.10.4 mask 255.255.255.255 noquery notrap
restrict 82.207.71.1 mask 255.255.255.255 noquery notrap
restrict 193.193.193.107 mask 255.255.255.255 noquery notrap
restrict 79.142.192.130 mask 255.255.255.255 noquery notrap
restrict 178.150.103.191 mask 255.255.255.255 noquery notrap
restrict 91.198.10.1 mask 255.255.255.255 noquery notrap
restrict 82.207.71.2 mask 255.255.255.255 noquery notrap
restrict 78.152.160.1 mask 255.255.255.255 noquery notrap
restrict 79.142.192.4 mask 255.255.255.255 noquery notrap
restrict 89.209.65.130 mask 255.255.255.255 noquery notrap
restrict 188.40.81.201 mask 255.255.255.255 noquery notrap
restrict 192.121.13.59 mask 255.255.255.255 noquery notrap
restrict 87.106.98.153 mask 255.255.255.255 noquery notrap

### Drift file
driftfile /var/db/ntpd.drift

### Разрешаем клиентам синхронизроваться
restrict default ignore
restrict 127.0.0.1
restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap

Параметрами server мы зададим, какие сервера использовать для синхронизации.
Естественно, что мы будем использовать пул серверов времени. Для синхронизации должно быть доступно минимум 3 сервера, иначе Ваш сервер получит stratum 16, в результате чего синхронизация с ним будет невозможна.
Для безопасности прописываем явным образом сервера, а затем разрешения для них.
Параметр driftfile задает файл, который используется для хранения смещения частоты системных часов.
Программа ntpd использует его для автоматической компенсации естественного смещения часов, позволяя ему поддерживать достаточно правильную настройку, даже если он на некоторый период отключается от внешнего источника информации о времени.

Создадим этот файл:
#touch /var/db/ntp.drift

Прописываем автостарт
# cat /etc/rc.conf
### NTPD
ntpd_enable="YES"
ntpd_config="/etc/ntpd.conf"
ntpd_flags="-l /var/log/ntpd.log -p /var/run/ntpd.pid -f /var/db/ntpd.drift"
# Обновление времени при старте системы
ntpd_sync_on_start="YES"

Ротация логов /etc/newsyslog.conf
### NTPD
/var/log/ntpd.log       root:wheel      640   7   50   *     JC /var/run/ntpd.pid

Запуск вручную ntpd
# /etc/rc.d/ntpd start

Проверка списка серверов и их состояния (обычно требуется некоторое время ~ 10 мин.).
#ntpq -c peers
или 
#ntpq -p
 remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 shtucer.tntu.ed 62.149.0.30      2 u   48   64    3   15.950  3636.32  25.497
 dfedor.vc.ukrte 192.36.143.150   2 u   49   64    3   13.107  3630.47  24.885
 pechkin.vc.ukrt 192.38.7.240     2 u   47   64    3   12.582  3632.50  25.056
 ourlan.netassis 62.149.2.1       3 u   47   64    3    9.852  3636.01  24.599
 bray.walcz.net  193.120.142.71   2 u   43   64    3   63.515  3638.04  25.901
 daupheus.com    91.121.121.160   3 u   45   64    3   45.973  3638.25  24.580
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
server 127.0.0.1, stratum 3, offset -0.000003, delay 0.02563
server ::1, stratum 0, offset 0.000000, delay 0.00000
23 Mar 16:26:50 ntpdate[91168]: adjust time server 127.0.0.1 offset -0.000003 sec

На остальных серверах прописываем в /etc/rc.conf
### NTP
ntpdate_enable="YES"
ntpdate_flags="-u -b xx.xx.xx.xx 3.ua.pool.ntp.org 1.ua.pool.ntp.org europe.pool.ntp.org"

Прописываем в /etc/crontab, обновлять часы каждую 1-ю минуту часа
# Synchroniz evry day
1       *      *       *       *       root    /usr/sbin/ntpdate -u -b xx.xx.xx.xx 3.ua.pool.ntp.org 1.ua.pool.ntp.org europe.pool.ntp.org


Ссылки:
Ntpdate/Ntpd
NTP – атомные часы на каждом столе
Bog BOS: Network Time Protocol

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

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