ntpdate: не знайдено жодного сервера, придатного для синхронізації


82

У мене годинник вимкнено , тому я хотів би його синхронізувати за допомогою ntpdate. Я спробував декілька різних серверів NTP, але мені чомусь завжди з’являється таке повідомлення про помилку:

$ sudo ntpdate ntp.ubuntu.com
4 Mar 12:27:35 ntpdate[1258]: no server suitable for synchronization found
$ sudo ntpdate pool.ntp.org
4 Mar 12:27:50 ntpdate[1267]: no server suitable for synchronization found
$ sudo ntpdate de.pool.ntp.org
4 Mar 12:28:01 ntpdate[1273]: no server suitable for synchronization found
$ sudo ntpdate us.pool.ntp.org
4 Mar 12:28:12 ntpdate[1276]: no server suitable for synchronization found

Пов'язані питання

Я переглянув відповідні питання , але жодне не вирішує мою проблему:

Те, що я спробував

Я встановив пакет ntp

... і спробував використовувати ntpdдемона замість ntpdateутиліти. Він також не синхронізує мій час; демон починається нормально, але годинник залишається вимкненим. Я навіть спробував використовувати точну /etc/ntp.confз прийнятої відповіді в останньому дописі і перезапустив демон. Не йдіть. У всякому разі, я не хочу використовувати демон. Я прекрасно знаю, що ntpdateвважається "застарілим", і його радимо використовувати ntpd -qзамість цього. Також дивіться тут:

Але оскільки ntpdдля мене теж не працює, проблема полягає в іншому . І я вважаю, що я вважаю за краще не встановлювати зайвих пакетів лише для синхронізації годинника. ntpdateпоставляється заздалегідь встановленою програмою Ubuntu, і вона повинна працювати просто чудово . Тому я ntpзнову видалив пакунок.

Можливо, порт 123 заблокований?

З цього повідомлення:

... У мене з'явилася думка, що порт 123 може бути заблокований з мого комп'ютера / мережі на моєму робочому місці. Дійсно,

$ sudo nmap -p123 -sU -P0 localhost
...
PORT    STATE  SERVICE
123/udp closed ntp 
...
$ sudo ufw allow 123/udp
Rules updated
Rules updated (v6)
$ sudo nmap -p123 -sU -P0 localhost
...
PORT    STATE SERVICE
123/udp open  ntp
...

Але все ж:

$ sudo ntpdate ntp.ubuntu.com
4 Mar 13:06:16 ntpdate[4361]: no server suitable for synchronization found

Навіть з -uможливістю, яка говорить ntpdateпро використання непривілейованого порту для синхронізації (замість порту 123), який, безумовно, не заблокований з мого робочого місця:

$ sudo ntpdate -u ntp.ubuntu.com
4 Mar 13:06:28 ntpdate[4427]: no server suitable for synchronization found

Може бути, шари занадто високі?

Нарешті, з цієї публікації на сервері за замовчуванням:

... Я думав, що, можливо, страти з серверів NTP занадто високі. Однак це не так. Давайте подивимось більше інформації про налагодження:

$ sudo ntpdate -dv ntp.ubuntu.com
 4 Mar 13:12:24 ntpdate[4523]: ntpdate 4.2.6p5@1.2349-o Wed Oct  9 19:08:07 UTC 2013 (1)
Looking for host ntp.ubuntu.com and service ntp
host found : golem.canonical.com
transmit(91.189.89.199)
transmit(91.189.94.4)
transmit(91.189.89.199)
transmit(91.189.94.4)
transmit(91.189.89.199)
transmit(91.189.94.4)
transmit(91.189.89.199)
transmit(91.189.94.4)
transmit(91.189.89.199)
transmit(91.189.94.4)
91.189.89.199: Server dropped: no data
91.189.94.4: Server dropped: no data
server 91.189.89.199, port 123
stratum 0, precision 0, leap 00, trust 000
refid [91.189.89.199], delay 0.00000, dispersion 64.00000
transmitted 4, in filter 4
reference time:    00000000.00000000  Mon, Jan  1 1900  1:00:00.000
originate timestamp: 00000000.00000000  Mon, Jan  1 1900  1:00:00.000
transmit timestamp:  d6c041ae.e6166441  Tue, Mar  4 2014 13:12:30.898
filter delay:  0.00000  0.00000  0.00000  0.00000 
         0.00000  0.00000  0.00000  0.00000 
filter offset: 0.000000 0.000000 0.000000 0.000000
         0.000000 0.000000 0.000000 0.000000
delay 0.00000, dispersion 64.00000
offset 0.000000

server 91.189.94.4, port 123
stratum 0, precision 0, leap 00, trust 000
refid [91.189.94.4], delay 0.00000, dispersion 64.00000
transmitted 4, in filter 4
reference time:    00000000.00000000  Mon, Jan  1 1900  1:00:00.000
originate timestamp: 00000000.00000000  Mon, Jan  1 1900  1:00:00.000
transmit timestamp:  d6c041af.1948fc50  Tue, Mar  4 2014 13:12:31.098
filter delay:  0.00000  0.00000  0.00000  0.00000 
         0.00000  0.00000  0.00000  0.00000 
filter offset: 0.000000 0.000000 0.000000 0.000000
         0.000000 0.000000 0.000000 0.000000
delay 0.00000, dispersion 64.00000
offset 0.000000

 4 Mar 13:12:33 ntpdate[4523]: no server suitable for synchronization found

Pfeeewww ... це було довге, вибачте за це. Я тупаю. Будь-які підказки?

Оновлення: додаткові відомості

Незалежно від того , є чи НВТ сервер HOSTNAMEфігури /etc/ntp.conf, і незалежно від того , є чи ntpdслужба працює чи ні, кожен раз , коли я біжу sudo ntpdate -u HOSTNAME, я отримую no server suitable for synchronization found. Те ж саме , коли ntpdпослуга НЕ працює , і я опускаємо в -uопції. Коли ntpdпослуга буде запущена і я опущу -uваріант, я замість цього отримати the NTP socket is in use, exiting.

Також:

$ timedatectl status
      Local time: Wed 2014-03-05 13:11:54 CET
  Universal time: Wed 2014-03-05 12:11:54 UTC
        Timezone: Europe/Berlin (CET, +0100)
     NTP enabled: yes
NTP synchronized: yes
 RTC in local TZ: no
      DST active: no
 Last DST change: DST ended at
                  Sun 2013-10-27 02:59:59 CEST
                  Sun 2013-10-27 02:00:00 CET
 Next DST change: DST begins (the clock jumps one hour forward) at
                  Sun 2014-03-30 01:59:59 CET
                  Sun 2014-03-30 03:00:00 CEST

Але час UTC тут невірний. Зараз UTC-час є 11:11, ні 12:11.

І:

$ sudo hwclock --show
Wed 05 Mar 2014 01:11:56 PM CET  -0.625627 seconds

ви сказали, що ви запустили `sudo ntpdate ntp.ubuntu.com`, але чи зробили ви це після додавання ntp.ubuntu.comдо /etc/ntp.confполя сервера? Якщо ви не бачите такої відповіді
Stormvirux

спробуйте `sudo ntpdate 0.ubuntu.pool.ntp.org
Stormvirux

1
Привіт, дивіться мій коментар до вашої відповіді. Я спробував додати server pool.ntp.orgдо /etc/ntp.conf, але ntpdate -u pool.ntp.orgкидає ту ж помилку. Я також спробував це ntp.ubuntu.com(додавши його до /etc/ntp.conf, повторного запуску ntpслужби, повторного запуску ntpdate -uна тому сервері, який я щойно додав /etc/ntp.conf). Підводячи підсумки, не має значення, чи згадується сервер, з яким я намагаюся синхронізувати/etc/ntp.conf . Я отримую no server suitable...помилку у всіх випадках (за винятком випадків, коли ntpслужба запущена і я пропускаю -uопцію, тоді я отримую NTP socket in useпомилку).
Malte Skoruppa

Добре, я також спробував sudo ntpdate 0.ubuntu.pool.ntp.org, що вже є у /etc/ntp.confфайлі. Не удача - та сама помилка.
Malte Skoruppa

Відповіді:


54

Ваш постачальник хостингу блокує пакети ntp. Цей важкий підхід був реалізований деякими провайдерами у відповідь на атаки DDoS. Ви можете бачити, що ntpdate надсилає пакети через ntpdate -vd:

transmit(91.189.94.4)
transmit(91.189.89.199)
transmit(91.189.94.4)
transmit(91.189.89.199)

Я би звернувся до вашого провайдера і запитав, чи блокують вони зовнішні запити ntp та чи є у них локальний сервер, який ви можете використовувати для синхронізації часу.

Є ще кілька незрозумілих можливостей, але їх важко виключити, оскільки ви не опублікували жодного журналу з syslog.


6
Ви абсолютно праві. Здається, наш університет блокує зовнішні запити NTP. Він також пропонує кілька локальних серверів NTP як альтернативу. Вони працюють чудово. Зараз я бачу, що вихідні дані ntpdate -dvтакож повинні включати деякі, receive(...)а не лише transmit(...)повідомлення. ;) Дуже дякую!
Malte Skoruppa

Однак одне питання: як університет може блокувати пакети NTP, коли я використовую ntpdateцей -uпараметр? Оскільки для цього використовується непривілейований порт замість порту 123, це означає, що правила їх брандмауера повинні бути складнішими, ніж просто "блокувати вхідні пакети на порт 123". То чи роблять вони якусь глибоку перевірку пакетів?
Malte Skoruppa

1
Вони матимуть одне правило брандмауера, яке говорить: "Блокувати весь трафік з портом призначення 123", а потім ще кілька винятків для своїх вузлів ntp
dfc

У мене була ця сама проблема. Мені вдалося вирішити це, зробивши вихідну трасеру, і я знайшов локальний сервер на маршруті, який я міг синхронізувати з тим, що працює за допомогою ntp. Один із них блокував це. Дякуємо за поради!
jonespm

1
Для мене, ntpdate -vdкаже no servers can be used, exiting.
highBandWidth

47

Однак це не відповідь ntp ...

sudo date -s "$(wget -qSO- --max-redirect=0 google.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z"

це і версія для завивки тут .


13
Це жахливо, але це працює.
Алан Плюм

4
Подача несанітизованих даних у команду bash запускається як root? Дивовижне спасибі за гру. Цю відповідь слід сприймати з крайнім упередженням.
dfc

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

Чи можете ви пояснити мені, що це робить?
Сурай Джайн

1
@SurajJain Багато веб-серверів повертають Dateзаголовок. У цій командній даті -s для встановленої дати, wget -S для зберігання всіх заголовків, 2> & 1 для помилок реєстрації в stdout, grep для рядка вибору із заголовком Date, cut for strip day of week та GMT. Z в кінці для дати обробки як UTC. Точність залежить від швидкості мережі.
користувач1516873

10

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

Спочатку встановіть ntpdate (очевидно, що ви це зробили)

sudo apt-get install ntpdate

НАСТУПНЕ Вам потрібно налаштувати ntp із серверами так:

Ви повинні принаймні встановити наступний параметр у конфігураційному файлі /etc/ntp.conf: server

Наприклад, відкрийте /etc/ntp.conf файл за допомогою редактора текстових нано:

sudo nano /etc/ntp.conf

Знайдіть параметр сервера, і якщо він порожній, встановіть його так:

server pool.ntp.org

Але зазвичай в ubuntu вже є деякі сервери, які можуть бути попередньо записані, які можуть бути

server 0.ubuntu.pool.ntp.org
server 1.ubuntu.pool.ntp.org
server 2.ubuntu.pool.ntp.org
server 3.ubuntu.pool.ntp.org

введіть тут опис зображення

Потім збережіть файл і перезапустіть службу ntpd :

sudo /etc/init.d/ntpd start

Ви можете синхронізувати системний годинник з сервером NTP негайно за допомогою наступної команди:

sudo ntpdate pool.ntp.org

або просто запустити вже визначені сервери

sudo ntpdate 0.ubuntu.pool.ntp.org

або інші сервери, визначені за допомогою сервера

загалом

sudo ntpdate <one of the servername in /etc/ntp.conf>

Але після цього є ймовірність отримати помилку, NTP socket in useяк показано нижче:

введіть тут опис зображення

У такому випадку просто запустіть

ntpdate -u pool.ntp.org 

оновити, коли ntp deamon працює

АБО просто зупиніть діамон, оновіть і запустіть його знову так:

sudo ntpdate pool.ntp.org
sudo service ntp stop
sudo ntpdate pool.ntp.org
sudo service ntp start

і ви отримаєте

введіть тут опис зображення


Привіт, дякую за детальну відповідь! На жаль, це не спрацювало для мене. У мене те, /etc/ntp.confщо прийшло разом з Ubuntu, ніколи не вносило змін до нього. Я вставив його тут: pastebin.com/bB0sskzv . Я також спробував додати server pool.ntp.orgвгорі списку серверів, як показано на екрані екрана. Знайдіть це тут: pastebin.com/YH372Jdi . З обома цими налаштуваннями я запустив послідовність команд, які ви запропонували: я додав скріншот до своєї початкової публікації. Результат був абсолютно однаковий і з немодифікованими, і з модифікованими /etc/ntp.conf. Будь-які інші ідеї? Дякую!
Malte Skoruppa

що timedatectl statusповертається
Stormvirux

Див висновок timedatectl statusкоманди в моїй посаді.
Malte Skoruppa

Зараз я спробував усі 4 попередньо визначені сервери (а саме {0..3}.ubuntu.pool.ntp.org), як з -uваріантом , так і без нього . Завжди однакова помилка.
Malte Skoruppa

просто скажи мені і цей. вихідsudo hwclock --show
Stormvirux

8

Використовуйте htpdate

Якщо передача ntp заблокована у вашій мережі, встановіть htpdate. Він синхронізує час за протоколом http. Точність складе 0,5 секунди, повідомляє сторінка man.

sudo apt-get install htpdate
sudo htpdate -a google.com

Служба htpdate почнеться при встановленні пакета. Час буде оновлено негайно, якщо є підключення до Інтернету.


Будь ласка, не просто копіюйте та вставляйте однакову відповідь у кожну тему, яку ви знайдете про ntp.
sempaiscuba

1
Copypasta чи ні, це рішення працювало на мене, поки я отримував ntpdate[22109]: no server suitable for synchronization foundпомилку.
колінки

4

Подібно до відповіді Алекса, це спрацювало для мене, щоб обійти ntp-порт, який підкоряється:

sudo date -s "$(curl http://s3.amazonaws.com -v 2>&1 | \
  grep "Date: " | awk '{ print $3 " " $5 " " $4 " " $7 " " $6 " GMT"}')"
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.