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
Malte Skoruppa
источник
вы сказали, что запускаете `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 и есть ли у них локальный сервер, который вы можете использовать для синхронизации времени.

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

DFC
источник
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"

это и версия завитка здесь .

Alex
источник
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

и вы получите

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

Stormvirux
источник
Привет, спасибо за подробный ответ! К сожалению, это не сработало для меня. У меня есть то, /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"}')"
Виллем ван Кетвич
источник