Как мне настроить локальный NTP-сервер?

Вот хорошее руководство с форумов Ubuntu: http://ubuntuforums.org/showthread.php?t=862620

Вопиющее копирование-паста:

КАК ЭТО СДЕЛАТЬ: Настройка NTP-сервера

В этом руководстве описывается, как настроить ваш компьютер в качестве сервера протокола локального сетевого времени (NTP) и / или как использовать демон NTP для регулярного поддержания точного системного времени.

Что такое NTP?

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

Иерархия NTP разделена на разные уровни, называемые слоями синхронизации. Самый точный уровень, уровень 0, зарезервирован для атомных часов и т.д. Следующий уровень, Уровень 1, обычно используется сетевыми машинами, локально подключенными к тактовым сигналам уровня 0. Слои 2...15 - это машины NTP, которые, в свою очередь, подключены к тактовым сигналам более низкого уровня и друг к другу.

В этом руководстве описывается, как точно синхронизировать с машинами Stratum 1 и 2 и поддерживать как можно более точные системные часы в течение дня. Также включены разделы о том, как разрешить вашему компьютеру работать в качестве сервера Stratum 2/3 для других компьютеров в вашей локальной сети.

Должен ли я создавать NTP-сервер?

Нет... ни в коем случае! Если вас устраивает, что часы в вашей сети имеют какое-то неизвестное отличие от стандартного времени (и друг от друга), то вам не нужно настраивать сервер NTP. Я установил один из них на своем ноутбуке, чтобы синхронизировать несколько компьютеров в локальной сети в течение & lt; 1 мс для биоинженерного эксперимента. Кроме того, существуют различные другие преимущества, которые описаны ниже.

Мотивация:

Регулярно немодифицированные ящики Ubuntu используют ntpdate (/usr/sbin/ntpdate) для периодической синхронизации часов с каким-либо внешним сервером времени. Этот подход синхронизирует часы с грубым разрешением (обычно один раз в день).

Компьютерные часы несовершенны и будут отклоняться от (правильного) сервера времени в течение дня. Кроме того, скорости дрейфа в часах разных компьютеров различаются, так что к концу дня могут существовать значительные различия между различными локально подключенными к сети машинами, которые могут мешать определенным операциям (например, когда-нибудь жаловался makefile при перемещении исходного кода между разными машинами?).

Демон NTP можно запустить локально на компьютере в вашей сети. Это имеет множество преимуществ: во-первых, демон NTP постепенно "узнает" скорость дрейфа вашей локальной машины и может корректировать ее в течение дня. Синхронизация с серверами времени верхнего уровня выполняется несколько раз в день, и для повышения точности синхронизации одновременно может использоваться множество разных серверов времени. Таким образом, демон NTP действует как клиент точного времени, сохраняя ваши системные часы как можно ближе к стандартному времени.

В дополнение к поддержанию точных системных часов, демон NTP позволяет компьютеру в вашей сети (если вы хотите) работать в качестве сервера времени NTP. Это позволит другим компьютерам в вашей локальной сети очень быстро и точно синхронизироваться с вашим сервером времени локальной сети, поскольку задержка в сети сведена к минимуму. Таким образом, различия в часах между машинами в вашей сети сведены к минимуму, насколько это возможно. Компьютеры Mac и даже Windows также могут синхронизироваться с NTP-сервером, если вы его настроите.

Существуют и другие, менее личные мотивы для настройки компьютера в качестве сервера NTP. Во-первых, это может снизить нагрузку на серверы NTP более высокого уровня, поскольку другие компьютеры в вашей локальной сети могут синхронизироваться с локально установленным сервером времени. Кроме того, ntpdate устарел в пользу использования флага -q для ntpd (который имитирует его функциональность). Таким образом, даже если вы не хотите постоянно запускать ntpd в фоновом режиме, ntpdate в конечном итоге будет заменен на ntpd, поэтому вы можете ознакомиться с ним прямо сейчас

Как поддерживать точные системные часы с помощью ntpd

  1. Установите демон NTP

Сначала установите демон NTP (ntpd):

sudo aptitude install ntpd

Как упоминалось ранее, ntpd может выступать как в качестве клиента (синхронизируя ваше системное время), так и в качестве сервера (предоставляя точное время для других компьютеров).

При желании вы также можете удалить предыдущую (устаревшую) программу синхронизации времени ntpdate. Возможно, было бы разумнее сделать это после того, как у вас заработает ntpd

sudo aptitude remove ntpdate
  1. Правильно настройте демон

Файл конфигурации для ntpd находится по адресу /etc/ntp.conf. Файл Ubuntu по умолчанию, вероятно, требует некоторой модификации для оптимальной производительности.

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

# You do need to talk to an NTP server or two (or three).server ntp.ubuntu.com

Чтобы получить максимально точное время, желательно взаимодействовать с несколькими различными NTP-серверами и держать их как можно ближе к вашему физическому местоположению. В Интернете есть множество различных списков серверов, вероятно, лучший находится здесь. Существуют некоторые споры по поводу правильного количества используемых серверов. Один лучше, чем два, а три или больше, вероятно, хорошая идея, если вы не переусердствуете. Ниже приведен пример нескольких серверов времени, которые я использовал:

server nist1-dc.WiTime.net iburstserver ntp0.mcs.anl.govserver 0.us.pool.ntp.orgserver 1.us.pool.ntp.orgserver 2.us.pool.ntp.orgserver 3.us.pool.ntp.org

Как только будет найдено несколько хороших серверов, добавьте их в список, поместив 'iburst' после самого многообещающего из них. Например:

server nist1-dc.WiTime.net iburst

Это приведет к тому, что ntpd будет очень быстро синхронизироваться с этим сервером после запуска. В противном случае ntpd будет медленно стремиться к согласованию со списком серверов (как это свойственно его природе), и может потребоваться 15-20 минут, чтобы синхронизировать достаточно хорошо, чтобы действовать как сервер времени для остальной части вашей сети.

Кроме того, добавьте несколько дополнительных строк в нижней части списка ваших серверов, чтобы указать ваше текущее местное время по умолчанию, если вы временно потеряете подключение к Интернету:

server 127.127.1.0fudge 127.127.1.0 stratum 10

Это предотвратит любые неприятности, если вы используете ntpd на ноутбуке или другом компьютере с периодическими периодами отключения от Интернета.

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

# You do need to talk to an NTP server or two (or three).server nist1-dc.WiTime.net iburstserver ntp0.mcs.anl.govserver 0.us.pool.ntp.orgserver 1.us.pool.ntp.orgserver 2.us.pool.ntp.orgserver 3.us.pool.ntp.orgserver 127.127.1.0fudge 127.127.1.0 stratum 10
  1. Убедитесь, что конфигурация работает

Теперь, когда у вас есть правильный список серверов в вашем /etc/ntp.conf файл, пришло время запустить демон и посмотреть, правильно ли вы синхронизируетесь! Убедитесь, что у вас активное подключение к Интернету, а затем запустите:

sudo /etc/init.d/ntp restart

Затем проверьте свой системный журнал, чтобы узнать, синхронизируетесь ли вы с сервером времени:

tail -f /var/log/syslog

Примерно через 10-15 секунд (или до 15-20 минут, если вы забыли поставить "iburst" после вашего любимого сервера) вы должны увидеть в своем системном журнале что-то вроде следующего:

Jul 17 16:50:22 hostname ntpd[22402]: synchronized to 140.221.9.20, stratum 2

Если это сообщение так и не приходит, значит, вы еще не синхронизировались должным образом с сетью NTP-сервера. Проверьте список одноранговых узлов NTP, с которыми вы общаетесь, используя следующее:

ntpq -c lpeer

Если поля "задержка", "смещение" и "дрожание" отличны от нуля, и вы не синхронизировались, это, вероятно, означает, что вам просто нужно немного подождать. Проверьте еще раз, что вы вставили аргумент 'iburst' в свой список серверов! Мои сверстники, для справки, выглядят примерно так:

     remote           refid      st t when poll reach   delay   offset  jitter==============================================================================*milo.mcs.anl.go 192.5.41.40      2 u    4   64   77   46.213   67.753   2.207-europium.canoni 193.79.237.14    2 u   63   64   37   97.375   71.020   1.875-dtype.org       69.25.96.13      2 u    2   64   77   86.956   69.178   1.804+smtp130.junkema 216.218.254.202  2 u    2   64   77   87.266   67.677   0.916+kechara.flame.o 216.218.254.202  2 u    -   64   77   89.183   68.717   1.713-host2.kingrst.c 99.150.184.201   2 u    -   64   77   24.306   62.121   2.608 LOCAL(0)        .LOCL.          10 l   59   64   37    0.000    0.000   0.002
  1. Делись! (необязательно)

Как только ntpd будет запущен и синхронизирован с выбранными вами серверами времени, вы можете настроить его так, чтобы он действовал как сервер времени для других компьютеров. Для этого добавьте раздел, подобный следующему, в /etc/ntp.conf:

# Allow LAN machines to synchronize with this ntp serverrestrict 192.168.1.0 mask 255.255.255.0 nomodify notraprestrict 192.168.2.0 mask 255.255.255.0 nomodify notrap# You may add as many (or few) CIDR address blocks to allow to synchronize with your machine as you'd like. I included those commonly used with Linksys (192.168.1.*) and SMC (192.168.2.*) routers.
  1. Синхронизировать! (необязательно)

После настройки NTP-сервера с помощью шагов 1-4 вы можете синхронизировать другие компьютеры в вашей сети с вашим сервером различными способами. Я обрисую несколько из них ниже:

ntpd:

Если у вас установлен ntpd на другом компьютере, вы можете использовать свой первый сервер в списке серверов вашего файла ntp.conf или выполнить синхронизацию один раз с помощью опции -q следующим образом:

ntpd -q [IP address of your server]

ntpdate:

Если у вас все еще установлен ntpdate на другом компьютере, вы можете использовать его для синхронизации с вашим сервером следующим образом:

ntpdate [IP address of your server]

Примечание: если вы используете ntpd на компьютере и по какой-то причине все еще хотите использовать ntpdate для установки времени, вы должны использовать опцию -u.

Окна:

Компьютеры с Windows используют упрощенную версию NTP, называемую Simple Network Time Protocol (SNTP), и могут синхронизироваться с серверами NTP. Чтобы выполнить синхронизацию с вашим новым сервером, дважды щелкните по времени и перейдите на вкладку "Время в Интернете". Введите IP-адрес вашего сервера в поле "Сервер". Я приложил скриншот синхронизации Windows XP с сервером времени локальной сети, если кому-нибудь будет интересно.

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

Майк

Связи

Я нашел следующие ссылки полезными... вы тоже можете!