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

Может быть, страты слишком высоки?

И наконец, из этого поста на serverfault:

... Я думал, что, возможно, страты от серверов 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фигурирует ли NTP-сервер /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поле s server? Если не увидеть следующий ответ
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 и есть ли у них локальный сервер, который вы можете использовать для синхронизации времени.

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


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? Огромное спасибо за игру. Этот ответ должен быть опущен с предубеждением.
2016 г.

1
Намного менее болезненно, чем иметь дело с поддержкой интернет-провайдера. Кроме того, совсем не критично, если вы запускаете локальную виртуальную машину в целях тестирования.
Yalok Iy

Можете ли вы объяснить мне, что он делает?
Сурадж Джейн

1
@SurajJain Многие веб-серверы возвращают Dateзаголовок. В этой команде date -s для установленной даты, wget -S для сохранения всех заголовков, 2> & 1 для регистрации ошибок в stdout, grep для строки выбора с датой заголовка, вырезать для дня недели недели и GMT. Z в конце для обработки даты как UTC. Точность зависит от скорости сети.
user1516873

10

У меня была такая же проблема, и вот как я ее решил. Я дал подробный ответ сверху вниз. Возможно, вы захотите перейти к середине моего ответа или просто сослаться на скриншоты ниже, чтобы понять его с первого взгляда.

Сначала установите ntpdate (очевидно, вы сделали это)

sudo apt-get install ntpdate

ДАЛЕЕ Вам необходимо настроить ntp с серверами следующим образом:

Вы должны как минимум установить следующий параметр в файле конфигурации /etc/ntp.conf: server

Например, откройте файл /etc/ntp.conf с помощью текстового редактора nano:

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.