Уголок связиста Суббота, 27 Апр 2024, 06:51
Приветствую Вас гость | RSS
Новые сообщения
  • Вопрос по для С... (0)
    13 Окт 2015 [borisenko2077]
  • Группы пользова... (4)
    10 Янв 2014 [Кикманэ]
  • GPRS (1)
    17 Июл 2013 [Кикманэ]
  • Для вновь прише... (5)
    05 Окт 2012 [Alex]
  • снятие "ул... (0)
    21 Май 2012 [stepakov]
  • Список дополнен... (0)
    20 Май 2012 [Alex]
  • Игра - "Я ... (19)
    01 Дек 2009 [vicksol]
  • Игра "АССО... (199)
    01 Ноя 2009 [vicksol]
  • Мобильник все-т... (4)
    28 Май 2009 [Alex]
  • Nod32 (2)
    28 Май 2009 [Alex]

  • Меню сайта

    Топ-пользоватлей
    1. Alex (388 - 53 - 70)
    2. natapin (62 - 0 - 0)
    3. vicksol (50 - 0 - 0)
    4. misterX (24 - 0 - 0)
    5. Olga (21 - 0 - 0)
    6. Lizard (18 - 0 - 0)
    7. genaha (11 - 0 - 0)
    8. Кикманэ (3 - 0 - 0)
    9. 345678 (2 - 0 - 0)
    10. ShoopDaWoop (1 - 0 - 0)

    Сегодня:

    Друзья сайта

    Форма входа

    Статистика

    [ Новые сообщения · Участники · Правила форума · Поиск · RSS ]


    • Страница 1 из 1
    • 1
    Наш форум » Уголок связиста » Статьи » Сервер точного времени (NTP)
    Сервер точного времени
    AlexДата: Вторник, 16 Дек 2008, 15:53 | Сообщение # 1
    Главный админ
    Группа: Администраторы
    Город:
    Сообщений: 388
    Статус: отсутствует
    Цели и задачи NTP
    а) Синхронизация

    Во-первых, в компьютерных системах часто требуется иметь точно синхронизированное время (при этом не важно, какая именно величина времени будет использоваться). Примером может быть распределённая система, где есть несколько компьютеров, принимающих запросы и передающих их на центральный сервер для обработки. Чтобы запросы выполнялись точно в том порядке, в котором они были приняты, принимающие компьютеры добавляют в них отметку о времени приёма. Если часы у разных компьютеров в такой системе выставлены по-разному, то может возникнуть ситуация, когда позднее пришедшему запросу будет выставлена меньшая отметка о времени, чем пришедшему ранее, и сервер обработает их в неправильном порядке.

    Привязываясь к определению времени, данному ранее, в этом примере требуется сохранять информацию о том, какое из событий – причина и какое – следствие.

    Первым из применений NTP на практике действительно была синхронизация часов в центре управления полётами, где было критично, чтобы все диспетчеры имели совершенно одинаковые показания времени.
    б) Точное время

    Во-вторых, в компьютерных системах часто требуется точно знать текущее время. Примером может быть обсерватория, которая должна наблюдать какие-то события точно в тот момент, когда Земля будет проходить конкретную точку своей орбиты. Здесь задействовано не определение времени, а именно его привязка к астрономическим событиям (движению Земли по орбите и вокруг своей оси).
    в) Централизованность

    В-третьих, есть потребность и в централизованных службах точного времени, т.е. недостаточно было бы просто поставить на каждый компьютер цезиевые часы, даже если бы это было возможно. Централизованная служба может быть достоверной, тогда как системные часы отдельных компьютеров могут показывать неверное время из-за поломки, преднамеренного повреждения и т.п.

    Одним из применений такой централизованной службы могло бы стать «патентное бюро будущего», куда любой может послать проект, бюро автоматически выставит на проекте точное время его принятия и свою цифровую подпись, и отошлёт назад автору. В таких условиях любой конфликт относительно приоритета в каком-нибудь изобретении будет разрешаться простым предъявлением подписанных в бюро проектов.

    Кроме того, для поддержания всех часов внутри такого бюро достоверными, оно само должно пользоваться системой синхронизации времени, описанной в первом примере.
    г) Цели NTP

    В соответствии с тремя приведёнными примерами, области применения NTP можно разделить на три категории: -синхронизация системных часов внутри организации; -синхронизация системных часов с эталонными; -получение точного времени из достоверной службы.
    д) Первые протоколы точного времени

    Первые протоколы для передачи показаний времени по сети появились в 1983 г. (RFC867 и RFC868). Эти протоколы – DAYTIME и TIME – предназначались для сообщения времени человеку и компьютеру соответственно. Протокол DAYTIME крайне прост: на подключившийся к DAYTIME-серверу компьютер приходит строка наподобие «19 декабря 2004 г., 16:27:47». Формат не регламентируется строго и не предназначен для машинной обработки; предполагается лишь, что человеку, прочитавшему полученную строку, станет ясно текущее время. Оно может включать день недели, миллисекунды, фазу луны или любую другую информацию, которую сервер считает относящейся к делу. Для DAYTIME зарезервирован 13-й TCP-порт. Один из действующих DAYTIME-серверов – atomictime.net – передаёт строку в виде «Fri Dec 24 10:17:58 2004»

    Протокол TIME, напротив, предназначен для обмена времени между машинами. На подключившийся к TIME-серверу компьютер приходит UDP-пакет, содержащий единственное 32-битное беззнаковое число, соответствующе числу прошедших с 1 января 1900 г. секунд по UTC. Поскольку такое число переполняется через 136 лет, этот протокол способен функционировать только до 2036 г. Для TIME зарезервирован 37-й UDP-порт.

    Сервера точного времени
    а) Получение точного времени

    Точное время можно получить множеством способов:

    - от высокоточных цезиевых часов, установленных поблизости; (Такие часы могут занимать шкаф, помещаться на столе, или быть размером со спичечную коробку – в зависимости от времени выпуска.)

    - по радиосигналу, передаваемому службами точного времени: сразу на многих радиочастотах, чтобы минимизировать атмосферные помехи, передаётся сигнал заранее установленной частоты. Так можно получить сигналы точного времени от уже упомянутых USNO и NIST – двух наиболее известных служб точного времени в США, имеющих совместным проектом сервис «Официальное время США» (http://time.gov/about.html);

    (Интересное замечание: выпускаются будильники и наручные часы со встроенным радиоприёмником, которые синхронизируются с сигналами точного времени какой-либо из таких служб. Вне зоны приёма их сигнала, например вне США для часов, принимающих сигнал NIST, такие часы совершенно бесполезны.)

    - по телефону, позвонив на такую службу точного времени (опять же, в линию выдастся звуковой сигнал заранее установленной частоты);

    - по модему, позвонив терминальной программой на службу точного времени (ответом будут показания времени в виде строки);

    - от GPS- либо подобного ему спутника (они также передают радиосигнал заранее установленной частоты)

    - наконец, по сети от компьютера, получившего его одним из перечисленных способов.

    В России, насколько я понимаю, единственными доступными способами являются два последних.
    б) NTP-сервера низких стратумов

    Официальный список NTP-серверов первого стратума, т.е. непосредственно связанных с высокоточными часами, публикуется на http://ntp.isc.org/bin/view/Servers/StratumOneTimeServers. Наиболее известные из них – tick.usno.navy.mil и tock.usno.navy.mil в USNO (http://tycho.usno.navy.mil/ntp.html) – сильно перегружены, и рассчитывать на них не стоит. В основном, как легко видеть из этих списков, NTP-сервера находятся в США в государственных и академических сайтах (домены .gov и .edu); сервера, расположенные в домене .mil, также многочисленны, но доступ к ним чаще всего ограничен (т.е. нужно писать письмо администратору NTP-сервера, объяснить ему цель своего использования его сервера, и тогда он, если захочет, откроет доступ).

    В России, согласно списку, располагалось два сервера второго стратума – в Пушкино и Черноголовке, и нет серверов первого стратума. Как я проверил, эти два сервера уже не отвечают на запросы. Для своих экспериментов я использовал сервер первого стратума (с RefId = «PPS », т.е. связанного с атомными часами) в Borowiec, Польше; он удивил меня крайне малыми задержками (около 100 мс). Как выяснилось, системные часы моего компьютера спешат на 10 мс/мин.

    Использование NTP
    а) Встроенные средства UNIX

    В некоторых UNIX-системах поддержка NTP реализована на уровне ядра, способного хранить время с точностью до 1 мкс. В сети таких систем для синхронизации времени на всех компьютерах не нужно предпринимать никаких дополнительных мер.
    б) Встроенные средства WinNT

    В WinNT есть служба синхронизации часов в домене (синхронизация осуществляется в рамках протокола NetBEUI) При этом часы контроллера домена можно с помощью этой же службы синхронизировать с внешним сервером посредством SNTP. Далее, эту службу можно настроить как SNTP-клиент и SNTP-сервер на любом компьютере с ОС WinNT. (Служба называется w32time, и вне домена она по умолчанию остановлена; для её запуска нужно выполнить команду “net start w32time”; для задания списка NTP-серверов, с которыми будет производиться синхронизация помимо контроллера домена, нужно выполнить команду “net time /setsntp:список_серверов”.) Для управления этой службой можно использовать программу w32tm.


     
    AlexДата: Вторник, 16 Дек 2008, 16:09 | Сообщение # 2
    Главный админ
    Группа: Администраторы
    Город:
    Сообщений: 388
    Статус: отсутствует
    Настройка NTP сервера

    Сидя когда то на сревере и тихо мирно попивая пиво от безделья мне в голову пришла идея создать сервер синхронизации времени по локальной сети. Т.к. в стандартую посавку дистрибутивов Linux (а у меня на работе стоит ASPLinux, в поддержку отечественного производителя smile я не использую более надежные типа "шапки" или "слаки") входит программа xntpd то не пришлось копатся в нете для поиска нужной программки. Так немного теории о сетевом протоколе времени.

    Сетевой протокол времени

    Протокол NTP предназначен для синхронизации клиента или сервера с другим сервером точного времени. Для локалки служба NTP способна реализовать точность до миллисекунды, а для распределенной (в частности для Интернета) достижима точность синхронизации порядка нескольких десятков миллисекунд. В качестве сетевого протокола используется протокол UDP, потр 123. Для передачи и хранения времени используется беззнаковое 64-битовое число с фиксированной точкой, которое хранит число секунд в формате UTC. Старшие 32 бита - число секунд, младшие 32 бита - дробная часть секунд. Достижимая точность - 232 пикосекунды. 0 означает непосредственное время.

    Ну думаю теории хватит. Для UNIX-платформы, в том числе и для Linux, как я говорил существует сервер точного времени, носящий имя xntpd. Этот сервер полностью реализует стандарт RFC1305. Установка его я думаю не составит проблем. Файл конфигурации - /etc/ntp.conf

    Конфигурация сервера

    Варианты настройки сервера зависят от класса обслуживания, сервер имеет достаточно много настроек, которые в основном содержатся в конфигурационном файле. Я опишу настройку сервера в режиме multicast, т.к. я настраивал сервер для локальной сети. Открываем файл конфигурации и начинаем "издеватся" над пингвином smile

    # broadcast {address} [key {key}] [version {version}] [ttl {ttl}]

    {address} - адрес симметричного сервера;

    {key} - 32-битовый ключ для поля аутенификации (по дефолту отсутствует);

    {version} - версия протокола;

    {tll} - время жизни пакета.

    # broadcastclient [{address}] {address} - адрес клиента, получающего информацию;

    # broadcastdelay {секунд} - позволяет самостоятельно указать задержку в распространении пакета.

    Общие параметры

    Опишу общие параметры настройки сервера xntpd:

    # driftfile {driftfile} - определяется файл, в котором хранится и извлекается при запуске сдвиг частоты местных часов;

    # enable/disable auth/monitor/pll/pps/stats - включить/выключить режим работы:

    auth - с неупомянутыми соседями общатся только в режиме аутенификации;

    monitor - разрешить мониторинг запросов;

    pll - разрешить настраивать частоту местных часов по NTP;

    stats - разрешить сбор статистики;

    # statistics loopstats - при каждой модификации локальных часов записывает строчку в файл loopstats;

    # statistics peerstats - каждое общение с соседом записывается в журнал, хранящийся в файле peerstats;

    # statistics clockstats - каждое сообщение от драйвера локальных часов записывается в журнал, хранящийся в файле clockstats;

    # statsdir {имя_каталого_со_статистикой} - задает имя каталога, в котором будут находится файлы со статистикой сервера;

    # filegen [file {filename}] [type {typename}] [flag {flagval}] [link|nolink] [enable|disable] - определяет алгоритм генерации имен файлов, которые состоят из:

    префикс - постоянная часть имени файла, задается либо при компиляции, либо специальными командами конфигурации;

    имя файла - добавляется к префиксу без косой черты, две точки запрещены, может быть изменена ключем file;

    суффикс - генерируется в зависимости от typename;

    # restrict numeric-address [mask {numericc-mask}] [flag] - задает ограничение доступа: пакеты сортируются и маскам, берется исходный адрес и последовательно сравнивается, от последнего удачного сравнения берется флаг доступа:

    нет флагов - дать доступ;

    ignore - игнорировать все пакеты;

    noquery - игнорировать пакеты NTP 6 и 7 (запрос и модификация состояния);

    nomodify - игнорировать пакеты NTP 6 и 7 (модификация состояния);

    limited - обслуживать только ограниченное количество клиентов из данной сети;

    nopeer - обслуживать хост, но не синхронизироватся с ним;

    # clientlimit limit - для флага limited определяет максимальное количество обслуживаемых клиентов (по дефолту 3);

    Обеспечение безопасности сервера

    Если сервер точного времени используется только во внутренней локальной сети, то желательно закрыть порт 123 для доступа из вне, что бы избежать возможной атаки типа denial of service (отказ в обслуживании), поскольку это грозит неправильным функционированием сервера. Помимо этого необходимо использовать шифрование траффика.


     
    Наш форум » Уголок связиста » Статьи » Сервер точного времени (NTP)
    • Страница 1 из 1
    • 1
    Поиск:
    FreeTechnologyCorp © 2024Конструктор сайтов - uCoz