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

Я установил NTP-сервер на Ubuntu Server 10.04 с помощью:

sudo apt-get install ntp

Демон NTP, похоже, работает и прослушивает порт 123.

Однако я не смог получить время с другой машины:

sudo ntpdate -u my_ntp_server23 Nov 18:48:41 ntpdate[2990]: no server suitable for synchronization found

Есть ли какие-либо необходимые настройки для выполнения?

Вот хорошее руководство с форумов 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. Я надеюсь, что это поможет! Дайте мне знать, если у вас возникнут какие-либо проблемы с настройкой вашего сервера.

Майк

Связи

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

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

Вы должны установить ntp на всех машинах, и вы также должны установить ntpq на всех из них.

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

ntpq -c lpeer

должен дать вам результат, который выглядит примерно так:

     remote           refid      st t when poll reach   delay   offset  jitter==============================================================================+golem.canonical 193.79.237.14    2 u  170 1024  377  140.458   -0.655   3.234*gatekeeper.tss. 204.123.2.72     2 u  608 1024  377   84.650    2.168   0.471

или:

ntpq --numeric --peers     remote           refid      st t when poll reach   delay   offset  jitter==============================================================================+91.189.89.199   193.79.237.14    2 u  652 1024  377  140.151   -0.242   2.821*66.7.96.1       204.123.2.72     2 u   64 1024  377   85.074    2.409   0.963

Если это так, то вы подключены, и ваш сервер времени получает время. Если нет, используйте

ps -e | grep "ntp" 

чтобы убедиться, что ntp запущен, и повторите попытку. Также попробуйте перезапустить ntp:

sudo /etc/init.d/ntp restart

это может занять некоторое "время" (извините!), прежде чем соединение будет установлено. Демон не очень часто опрашивает серверы. Столбец "когда" в приведенных выше выходных данных показывает время в секундах с момента опроса сервера.

Теперь вы должны заставить сервер времени отправлять время на другие ваши компьютеры.

Отредактируйте файл /etc/ntp.conf на сервере. Вы должны добавить линию для своей сети. В моем случае у меня есть сеть 10.0.0.0. В файл ntp.conf я добавил строку:

broadcast 10.255.255.255

Вы должны добавить широковещательную линию для каждого сегмента вашей сети. Если ваша сеть проста, как у меня, одна строка, подобная приведенной выше, - это все, что вам нужно. Теперь перезапустите ntp, используя приведенную выше команду, и проверьте еще раз, используя ntpq, и вы должны увидеть:

     remote           refid      st t when poll reach   delay   offset  jitter==============================================================================+golem.canonical 193.79.237.14    2 u   70 1024  377  140.151   -0.242   2.821*gatekeeper.tss. 204.123.2.72     2 u  506 1024  377   84.650    2.168   0.241 10.255.255.255  .BCST.          16 u    -   64    0    0.000    0.000   0.002

Вуаля, он выходит в эфир.

Теперь вы должны заставить каждую клиентскую машину получать время с вашего широковещательного сервера. На каждом из них отредактируйте файл:

/etc/ntp.conf

и вы увидите несколько строк, указывающих серверы.

добавить строку

server 10.10.10.1

или какой бы ни был адрес вашего сервера. Затем перезапустите ntp на клиентском компьютере, используя приведенную выше команду. В качестве альтернативы вы можете получить идентификатор процесса и просто завершить его и запустить снова. Что угодно.

Затем, по прошествии достаточного времени, проверьте с помощью ntpq:

ntpq --numeric --peers     remote           refid      st t when poll reach   delay   offset  jitter==============================================================================*10.10.10.1      66.7.96.1        3 u  123 1024  377    0.430    1.022   1.831

и вы можете видеть, что клиент использует сервер времени.

Это займет некоторое время.

Принятый ответ (по состоянию на июль 2018 года) не сработал для меня. Этот другой метод отлично работал на Ubuntu 16.04 LTS в июле 2018 года:

Установить NTP, если не установлен:

sudo apt-get updatesudo apt-get install ntp

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

sudo nano /etc/ntp.conf --syntax=sh

Раскомментируйте эту строку:

# If you want to provide time to your local subnet, change the next line.# (Again, the address is an example only.)# broadcast 192.168.111.255

к:

# If you want to provide time to your local subnet, change the next line.# (Again, the address is an example only.)broadcast 192.168.111.255

Перезапустить NTP обслуживание:

sudo /etc/init.d/ntp restart

Теперь ваш NTP-сервер должен работать и разрешите другим компьютерам синхронизироваться с вашим. Любой из вышеперечисленных тестов, например ntpdate -u YourComputer должно работать нормально.

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

$ sudo ntpq -p     remote           refid      st t when poll reach   delay   offset  jitter============================================================================== time.cloudflare .POOL.          16 p    -   64    0    0.000    0.000   0.001 1.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.001 2.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.001 3.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.001....#further output omitted