Як налаштувати локальний сервер NTP?


16

Я встановив NTP-сервер на Ubuntu Server 10.04 за допомогою:

sudo apt-get install ntp

Демон NTP, здається, працює і слухає на порту 123.

Однак мені не вдалося отримати час з іншої машини:

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

Чи потрібно зробити якісь конфігурації?

Відповіді:


20

Ось хороший підказки з форумів Ubuntu: http://ubuntuforums.org/showthread.php?t=862620

Аграрна копія-паста:

ЯК: Налаштування сервера NTP

У цьому підручнику описано, як налаштувати машину як локальний сервер мережевого протоколу (NTP) та / або як використовувати демон NTP для регулярного підтримання точного системного часу.

Що таке НТП?

Мережевий протокол часу (NTP) - це протокол, призначений для точної синхронізації локальних часових годин із мережевими серверами часу. Мережа серверів часу NTP налаштована як ієрархічний спосіб, так що будь-який користувач може входити в систему як сервер на якомусь рівні (детальніше див. Сторінку Вікіпедії).

Ієрархія NTP розділена на різні рівні, які називаються шарами годинника. Найточніший рівень, Stratum 0, зарезервований для атомних годин тощо. Наступний рівень, Stratum 1, зазвичай використовується мережевими машинами, локально підключеними до годин Stratum 0. Stratum 2 ... 15 - це машини NTP, які підключаються, в свою чергу, до годинників нижчого рівня та один до одного.

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

Чи потрібно робити сервер NTP?

Ні ... абсолютно ні! Якщо ви задоволені тим, що годинники у вашій мережі мають невідому відмінність від стандартного часу (та один від одного), то вам не доведеться налаштовувати сервер NTP. Я встановив його на своєму ноутбуці, щоб синхронізувати кілька машин у локальній мережі протягом <1 мс для експерименту з біоінженерії. Крім цього, існують різні інші переваги, які описані нижче.

Мотивація:

Регулярно немодифіковані вікна Ubuntu використовують ntpdate ( /usr/sbin/ntpdate) для періодичної синхронізації годин із деяким зовнішнім сервером часу. Цей підхід синхронізує годинник з роздільною здатністю курсу (як правило, один раз на день).

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

Можна запустити демона 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 iburst
server ntp0.mcs.anl.gov
server 0.us.pool.ntp.org
server 1.us.pool.ntp.org
server 2.us.pool.ntp.org
server 3.us.pool.ntp.org

Як тільки кілька хороших серверів було знайдено, додайте їх до списку, ставлячи 'iburst'після найперспективнішого. Наприклад:

server nist1-dc.WiTime.net iburst

Це призведе до швидкої синхронізації ntpd з цим сервером після запуску. В іншому випадку ntpd буде повільно схилятися до узгодження зі списком серверів (як це і характер), і для синхронізації може знадобитися 15-20 хвилин, щоб діяти як сервер часу для решти вашої мережі.

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

server 127.127.1.0
fudge 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 iburst
server ntp0.mcs.anl.gov
server 0.us.pool.ntp.org
server 1.us.pool.ntp.org
server 2.us.pool.ntp.org
server 3.us.pool.ntp.org
server 127.127.1.0
fudge 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 server
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
restrict 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:

Машини Windows використовують спрощену версію NTP під назвою Simple Network Time Protocol (SNTP) і можуть синхронізуватися з серверами NTP. Для того, щоб синхронізуватися з вашим новим сервером, двічі клацніть на час і перейдіть на вкладку «Інтернет-час». Введіть IP-адресу вашого сервера в поле «Сервер». Я додав скріншот синхронізації Windows XP з сервером часу локальної мережі, якщо когось цікавить.

Це воно! Весь процес не важкий, але може бентежити того, хто раніше не багато займався мережею NTP. Я сподіваюся, що це допомагає! Повідомте мене, якщо у вас виникли проблеми з налаштуванням вашого сервера.

Майк

Посилання

Наступні посилання знайшли корисними ... Ви також можете!

https://help.ubuntu.com/7.10/server/C/NTP.html http://linuxwave.blogspot.com/2007/0...tp-server.html http: //lists.ntp.isc. org / pipermail / q ... er / 011889.html http://www.linuxhomenetworking.com/w...Fntp.conf_File http://www.ntp.org/ntpfaq/NTP-a-faq.htm


Дякуємо за посилання Власне, я не змінив свою конфігурацію! Це просто спрацювало через деякий час.
Халед

на вашому сервері ntp можна запустити, ntpdate -s a_stratum_1_server_addressщоб змусити його синхронізуватися негайно. то на вашому іншому (клієнтському) апараті, який працює 'ntpdate -q your_local_ntp_server`, слід відповісти чимось схожим наserver your_local_ntp_server_ip, stratum 2, offset -0.012221, delay 0.02618
Кіт Рейнольдс

Відповідь лише за посиланням може застаріти. Будь ласка, включіть важливу інформацію до самої відповіді.
Зета

5

Про це існує багато посилань, і мені здається, вони ускладнюють процедуру. У моєму випадку у мене є одна машина, яка працює як проксі-сервер і брандмауер, і всі мої інші підключаються до Інтернету через неї. Я не хотів відкривати порти на брандмауері. Тому проксі - сервер повинен бути (НТП) часу сервера і інші машини ( клієнти ) отримати час від нього.

Ви повинні встановити 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

і ви бачите, що клієнт використовує сервер часу.

Це займає деякий час.


Ви можете запустити ntpdate -s a_stratum_1_server_addressна своєму сервері ntp, щоб змусити його одразу опитуватись та синхронізуватися.
Кіт Рейнольдс

Чи підтримується цей тип мовлення усіма комутаторами? Наприклад, трансляція UDP блокується більшістю комутаторів / маршрутизаторів.
Танасіс

1

Прийнята відповідь (як на липень 2018 року) для мене не спрацювала. Цей інший метод добре працював на Ubuntu 16.04 LTS липня 2018 року:

Встановіть NTP, якщо він не встановлений:

sudo apt-get update
sudo 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повинен працювати добре.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.