@ Карта сайта News Автора!

Bog BOS: ntpd (xntpd) - сервер NTP4 (NTP3)

apache inn MySQL nntpcache Cyrus IMAP exim Squid ssh syslog tacacs ProFTPD wu-ftpd xntpd

Последние изменения:
2024.11.22: sysadmin: systemd-journald (централизованное хранение)
2024.11.11: sysadmin: Linux: пространства имён
2024.11.06: sysadmin: настройка TCP/IP в Linux: виртуальный интерфейс и виртуальный мост
2024.10.25: sysadmin: Linux VFS, атрибуты, расширенные атрибуты, ACL

Последнее изменение текста: 20110713
Скопировано с www.bog.pp.ru: 2024.11.23

Bog BOS: ntpd (xntpd) - сервер NTP4 (NTP3)

Пакет NTP4 представляет собой реализацию сервера протокола NTP версии 4, используемого для синхронизации времени. Обеспечивается совместимость с версиями 3 и 2 (поддержка версии 1 удалена из-за проблем с безопасностью). Доступен для бесплатного использования, включая исходные тексты. Текущая (на 14 февраля 2005) стабильная версия - 4.2.0 от 2003/10/15. В статье описывается его установка и настройка. Требуется предварительное знакомство с механизмами обработки времени в UNIX и протоколом NTP (там же приводится список доступных NTP серверов).

Отличия версии 4 от версии 3:

Альтернативная реализация - chronyd.

Установка в Red Hat Linux

Предварительно необходимо проделать дырки в сетевом экране (UDP/123) для всех хостов, на которых работает сервер NTP, получающий информацию снаружи (ipchains, Cisco IOS). Дырку в местном сетевом экране процедура /etc/rc.d/init.d/ntpd в RH проделывает самостоятельно.

Пакет ntp входит в состав дистрибутива (xntp3-5.93 для RH 6.2, ntp-4.0.99j для RH 7.0, ntp-4.1.0 для RH 7.2, ntp-4.1.1a для RH 8.0, ntp-4.1.2 для RH 9.0, ntp-4.2.0 для FC3).

Пакет ntp3 (ntp) состоит из

Если DHCP сервер раздаёт адреса NTP серверов, то на сервере NTP необходимо добавить в /etc/sysconfig/network строку PEERNTP=no, иначе dhclient будет "улучшать" /etc/ntp.conf.

Установка новой версии из исходных текстов:

  1. взять и распаковать исходные тексты
  2. прочитать руководство по установке и файл INSTALL
  3. для работы с публичными ключами требуются пакеты openssl и openssl-devel (libcrybto.a и .h)
  4. ./configure --with-openssl-libdir=/usr/local/ssl/lib --with-openssl-incdir=/usr/local/ssl/include/ --disable-all-clocks --disable-parse-clocks --enable-LOCAL-CLOCK (драйверы аппаратных часов отключить, обновленный openssl в нестандартном месте)
  5. make (не забудь добавить /usr/ccs/bin к PATH)
  6. make check
  7. make install
  8. make clean (или make distclean, чтобы освободить место)
  9. настройка /usr/local/etc/ntp.conf
  10. создание директории /usr/local/etc/ntp/ (в ней будут храниться файлы drift, keys, step-tickers)
  11. заполнение /usr/local/etc/ntp/step-tickers
  12. создание или правка /etc/rc.d/init.d/ntpd
  13. запуск сервиса вручную для первого раза

Настройка /etc/ntp.conf (/usr/local/etc/ntp.conf) в режиме клиента:

Перед первым запуском xntpd лучше подстроить часы вручную (ntpdate -B; дождаться завершения!). В любом случае местное время не должно отличаться больше, чем на 1000 секунд (CLOCK_WAYTOOBIG), время прохождения пакета и получение ответа д.б. меньше 1 секунды, ошибка частоты д.б. меньше 390 ppm.

Для тех компьютеров, на которых точное (30мс) время не так важно, можно не занимать память громадным xntpd/ntpd (2 MB), а запускать каждый час следующую команду:
ntpdate -B имя-NTP-сервера1 имя-NTP-сервера2 ...

Установка ntpd 4.2 в RH 4.1 не удалась и ntpdate не работает. Вывернулся так:

  1. исправить /usr/include/sched.h (добавить подчёркивание перед _P)
  2. закоментировать структуры IP6 в /usr/include/linux/in.h
  3. развернуть .tar.gz и зайти внутрь
  4. ./configure --enable-DUMBCLOCK --enable-LOCAL-CLOCK --with-crypto --with-sntp
  5. в config.h заменить установки:
    #undef ISC_PLATFORM_HAVEIPV6
    #undef ISC_PLATFORM_NEEDIN6ADDRANY
    #undef KERNEL_PLL
    
  6. make (компилируется не всё)
  7. make install (устанавливается не всё)
  8. добавить в rc.local (скрипт работоспособен только после перехода сервера в устоявшийся режим, на сервере нельзя задавать noquery для данного клиента):
    ntpq -c rv ntp.systud.msk.su | grep 'clock=' | awk '{if ( $3 == "Jan" ) m = "01"; else if ( $3 == "Feb" ) m = "02"; else if ( $3 == "Mar" ) m = "03"; else if ( $3 == "Apr" ) m = "04"; else if ( $3 == "May" ) m = "05"; else if ( $3 == "Jun" ) m = "06"; else if ( $3 == "Jul" ) m = "07"; else if ( $3 == "Aug" ) m = "08"; else if ( $3 == "Sep" ) m = "09"; else if ( $3 == "Oct" ) m = "10"; else if ( $3 == "Nov" ) m = "11"; else if ( $3 == "Dec" ) m = "12"; print m $4 substr($6,1,2) substr($6,4,2) $5 "." substr($6,7,2)}'

Установка xntp3-5.90 в Solaris 2.5

Предварительно необходимо проделать дырки в сетевом экране (UDP/123) для всех хостов, на которых работает сервер NTP, получающий информацию снаружи (Cisco IOS).

  1. прочитать руководство по установке
  2. взять и распаковать исходные тексты
  3. ./configure --disable-all-clocks --enable-LOCAL-CLOCK (драйверы аппаратных часов отключить)
  4. make (не забудь добавить /usr/ccs/bin к PATH)
  5. make check
  6. make install
  7. оторвать системные часы от батареечных (tickadj -s)
  8. скрипт для автоматического запуск (/etc/rc2.d/S99xntpd)
    #!/bin/sh
    if [ $1 = "start" ]; then
            if [ -x /usr/local/bin/xntpd ]; then
                    echo "Starting NTP daemon, takes about 1 minute... "
                    # The following line is unnecessary if you turn off 
                    # dosynctodr in /etc/system.
                    /usr/local/bin/tickadj -s  
                    /usr/local/bin/ntpdate -v server1 server2
                    sleep 60
                    /usr/local/bin/xntpd
            fi
    else
            if [ $1 = "stop" ]; then
                    pid=`/usr/bin/ps -e | /usr/bin/grep xntpd | /usr/bin/sed -e 's/^*//' -e 's/ .*//'`   
                    if [ "${pid}" != "" ]; then
                            echo "Stopping Network Time Protocol daemon "
                            /usr/bin/kill ${pid}
                    fi     
            fi
    fi
    
    
  9. запуск сервиса вручную для первого раза

Для тех компьютеров, на которых точное (30мс) время не так важно, можно не занимать память громадным xntpd/ntpd (2 MB), а запускать каждый час следующую команду:
ntpdate -B имя-NTP-сервера1 имя-NTP-сервера2 ...

Настройка сервера (/etc/ntp.conf, /usr/local/etc/ntp.conf)

Ключи сервера

Утилиты

Проблема. Время от времени опорные NTP-сервера перестают нас обслуживать. xntpd переводит их при этом в стратум-0 и синхронизуется черт знает с чем. Необходим автоматический отлов этой ситуации.

@ Карта сайта News Автора!

Bog BOS: ntpd (xntpd) - сервер NTP4 (NTP3)

apache inn MySQL nntpcache Cyrus IMAP exim Squid ssh syslog tacacs ProFTPD wu-ftpd xntpd

Последние изменения:
2024.11.22: sysadmin: systemd-journald (централизованное хранение)
2024.11.11: sysadmin: Linux: пространства имён
2024.11.06: sysadmin: настройка TCP/IP в Linux: виртуальный интерфейс и виртуальный мост
2024.10.25: sysadmin: Linux VFS, атрибуты, расширенные атрибуты, ACL



Copyright © 1996-2024 Sergey E. Bogomolov; www.bog.pp.ru