ntpdate: nie znaleziono serwera odpowiedniego do synchronizacji

82

Mój zegar jest wyłączony , więc chciałbym go zsynchronizować za pomocą ntpdate. Próbowałem kilku różnych serwerów NTP, ale z jakiegoś powodu zawsze pojawia się następujący komunikat o błędzie:

$ 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

Powiązane pytania

Przejrzałem powiązane pytania , ale żadne nie rozwiązało mojego problemu:

Rzeczy, których próbowałem

Zainstalowałem pakiet NTTP

... i próbował użyć ntpddemona zamiast ntpdatenarzędzia. Nie zsynchronizuje też mojego czasu; demon uruchamia się dobrze, ale mój zegar pozostaje wyłączony. Próbowałem nawet użyć dokładnej /etc/ntp.confodpowiedzi zaakceptowanej w ostatnim poście i zrestartować demona. Nie idź W każdym razie nie chcę używać demona. W pełni zdaję sobie sprawę, że ntpdatejest to uważane za „przestarzałe” i zaleca się użycie ntpd -qzamiast tego. Zobacz także:

Ale ponieważ ntpdi dla mnie nie działa, problem leży gdzie indziej . I uważam, że wolałbym nie instalować żadnych dodatkowych pakietów tylko do synchronizacji zegara. ntpdatejest fabrycznie zainstalowany z Ubuntu i powinien działać dobrze . Więc ntpponownie odinstalowałem pakiet.

Może port 123 jest zablokowany?

Z tego postu:

... wpadłem na pomysł, że port 123 może być zablokowany z mojego komputera / sieci w moim miejscu pracy. W rzeczy samej,

$ 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
...

Ale nadal:

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

Nawet z -uopcją, która każe ntpdateużywać nieuprzywilejowanego portu do synchronizacji (zamiast portu 123), który z pewnością nie jest zablokowany w moim miejscu pracy:

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

Może warstwy są zbyt wysokie?

Na koniec, z tego postu na serverfault:

... Myślałem, że może warstwy z serwerów NTP są zbyt wysokie. Ale nie są. Zobaczmy trochę więcej informacji o debugowaniu:

$ sudo ntpdate -dv ntp.ubuntu.com
 4 Mar 13:12:24 ntpdate[4523]: ntpdate [email protected] 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 ... to był długi, przepraszam za to. Jestem zakłopotany. Jakieś wskazówki?

Aktualizacja: dodatkowe informacje

Bez względu na to, czy an NTP Server HOSTNAMELiczby w /etc/ntp.conf, i bez względu na to, czy ntpdusługa jest uruchomiona lub nie, kiedy biegnę sudo ntpdate -u HOSTNAME, mam no server suitable for synchronization found. To samo, gdy ntpdusługa nie działa i pomijam-uopcję. Gdy ntpdusługa jest uruchomiona i pomijam tę -uopcję, zamiast tego dostaję the NTP socket is in use, exiting.

Również:

$ 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

Ale tutaj czas UTC jest nieprawidłowy. Teraz jest czas UTC 11:11, nie 12:11.

I:

$ sudo hwclock --show
Wed 05 Mar 2014 01:11:56 PM CET  -0.625627 seconds
Malte Skoruppa
źródło
powiedziałeś, że uruchomiłeś `sudo ntpdate ntp.ubuntu.com`, ale czy zrobiłeś to po dodaniu ntp.ubuntu.comdo /etc/ntp.confpola serwera? Jeśli nie, zobacz następującą odpowiedź
Stormvirux
spróbuj `sudo ntpdate 0.ubuntu.pool.ntp.org
Stormvirux
1
Cześć, zobacz mój komentarz do twojej odpowiedzi. Próbowałem, dodając server pool.ntp.orgdo /etc/ntp.conf, ale ntpdate -u pool.ntp.orgrzuca ten sam błąd. Próbowałem również tego z ntp.ubuntu.com(dodając go /etc/ntp.conf, ponownie uruchamiając ntpusługę, ponownie uruchamiając ntpdate -udokładnie na serwerze, do którego właśnie dodałem /etc/ntp.conf). Podsumowując, nie ma znaczenia, czy serwer, z którym próbuję synchronizować, jest wymieniony w/etc/ntp.conf . Występuje no server suitable...błąd we wszystkich przypadkach (z wyjątkiem sytuacji, gdy ntpusługa jest uruchomiona i pomijam -uopcję, a następnie pojawia się NTP socket in usebłąd).
Malte Skoruppa
Ok, również próbowałem sudo ntpdate 0.ubuntu.pool.ntp.org, który jest już w /etc/ntp.confpliku. Brak szczęścia - ten sam błąd.
Malte Skoruppa

Odpowiedzi:

54

Twój dostawca hostingu blokuje pakiety NTTP. To ciężkie podejście zostało wdrożone przez niektórych dostawców usług internetowych w odpowiedzi na ataki DDoS. Widać, że ntpdate wysyła pakiety z ntpdate -vd:

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

Skontaktuję się z twoim dostawcą usług internetowych i zapytam, czy blokują zewnętrzne żądania NTTP i czy mają lokalny serwer, którego możesz użyć do synchronizacji czasu.

Istnieje kilka niejasnych możliwości, ale trudno je wykluczyć, ponieważ nie opublikowano żadnych dzienników z syslog.

dfc
źródło
6
Masz całkowitą rację. Wygląda na to, że nasz uniwersytet blokuje zewnętrzne żądania NTP. Jako alternatywę oferuje również kilka lokalnych serwerów NTP. Te działają idealnie. Widzę teraz, że wyjście ntpdate -dvpowinno zawierać także niektóre, receive(...)a nie tylko transmit(...)wiadomości. ;) Wielkie dzięki!
Malte Skoruppa
Jedno pytanie: w jaki sposób uniwersytet może blokować pakiety NTP, gdy korzystam ntpdatez tej -uopcji? Ponieważ używa to nieuprzywilejowanego portu zamiast portu 123, oznacza to, że ich reguły zapory muszą być bardziej złożone niż zwykłe „blokowanie przychodzących pakietów na porcie 123”. Czy zatem przeprowadzają jakąś głęboką kontrolę pakietów?
Malte Skoruppa
1
Będą mieli jedną regułę zapory sieciowej, która mówi „Zablokuj cały ruch docelowym portem 123”, a następnie kilka wyjątków dla ich hostów
NTTP
Miałem ten sam problem. Udało mi się to rozwiązać, wykonując wychodzące śledzenie trasy, i znalazłem lokalny serwer na trasie, z którą byłem w stanie zsynchronizować, na którym działało ntp. Jeden z nich jednak to blokował. Dzięki za wskazówki!
jonespm
1
Dla mnie ntpdate -vdmówi no servers can be used, exiting.
highBandWidth
47

To nie jest odpowiedź NTTP, jednak ...

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

to i wersja curl tutaj .

Alex
źródło
13
To okropne, ale działa.
Alan Plum
4
Karmienie niezaszyfrowanych danych do komendy bash działa jako root? Niesamowite dzięki za grę. Ta odpowiedź powinna zostać zanegowana z najwyższą uprzedzeniem.
dfc
1
O wiele mniej bolesne niż zajmowanie się wsparciem ISP. Również nie jest krytyczny, jeśli jest uruchamiany na lokalnej maszynie wirtualnej do celów testowych.
Yalok Iy
Czy możesz mi wyjaśnić, co robi?
Suraj Jain
1
@SurajJain Wiele serwerów internetowych zwraca Datenagłówek. W tej komendzie data -s dla ustawionej daty, wget -S do przechowywania wszystkich nagłówków, 2> i 1 dla błędów logowania w standardowym wyjściu, grep dla linii wyboru z nagłówkiem Data, wycięcie dla paska dnia tygodnia i GMT. Z na koniec dla daty traktowania jako UTC. Dokładność zależy od prędkości sieci.
user1516873 12.04.17
10

Miałem ten sam problem i tak go rozwiązałem. Udzieliłem szczegółowej odpowiedzi od góry do dołu. Możesz przeskoczyć do połowy mojej odpowiedzi lub po prostu zapoznać się z poniższymi zrzutami ekranu, aby zrozumieć to na pierwszy rzut oka.

Najpierw zainstaluj ntpdate (oczywiście, że to zrobiłeś)

sudo apt-get install ntpdate

NASTĘPNY Musisz skonfigurować NTTP z serwerami w następujący sposób:

Powinieneś przynajmniej ustawić następujący parametr w pliku konfiguracyjnym /etc/ntp.conf: server

Na przykład otwórz plik /etc/ntp.conf za pomocą edytora tekstu nano:

sudo nano /etc/ntp.conf

Znajdź parametr serwera, a jeśli jest pusty, ustaw go w następujący sposób:

server pool.ntp.org

Ale zwykle w Ubuntu niektóre serwery są już napisane, co może być

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

wprowadź opis zdjęcia tutaj

Następnie zapisz plik i uruchom ponownie usługę ntpd :

sudo /etc/init.d/ntpd start

Możesz natychmiast zsynchronizować zegar systemowy z serwerem NTP za pomocą następującego polecenia:

sudo ntpdate pool.ntp.org

lub po prostu uruchom już zdefiniowane serwery

sudo ntpdate 0.ubuntu.pool.ntp.org

lub inne serwery zdefiniowane za pomocą serwera

ogólnie

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

ALE po tym jest szansa, że ​​pojawi się błąd, NTP socket in usejak pokazano poniżej:

wprowadź opis zdjęcia tutaj

W takim przypadku po prostu biegnij

ntpdate -u pool.ntp.org 

zaktualizować, gdy uruchomiony jest demon NTTP

LUB po prostu zatrzymaj diamon, zaktualizuj i uruchom go ponownie w następujący sposób:

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

i dostaniesz

wprowadź opis zdjęcia tutaj

Stormvirux
źródło
Cześć, dziękuję za szczegółową odpowiedź! Niestety nie działało to dla mnie. Mam ten, /etc/ntp.confktóry przyszedł z Ubuntu, nigdy nie wprowadziłem żadnych zmian. Wkleiłem tutaj: pastebin.com/bB0sskzv . Ja też próbowałem dodanie server pool.ntp.orgna górze listy serwerów, jak pokazano na ty screenshot. Znajdź to tutaj: pastebin.com/YH372Jdi . W obu tych konfiguracjach uruchomiłem sekwencję poleceń, które zaproponowałeś: dodałem zrzut ekranu do mojego oryginalnego postu. Wynik był dokładnie taki sam zarówno dla niemodyfikowanych, jak i zmodyfikowanych /etc/ntp.conf. Jakieś inne pomysły? Dzięki!
Malte Skoruppa
co timedatectl statuspowraca
Stormvirux
Zobacz wynik timedatectl statuspolecenia w moim oryginalnym poście.
Malte Skoruppa
Próbowałem teraz ze wszystkimi 4 predefiniowanymi serwerami (mianowicie {0..3}.ubuntu.pool.ntp.org), zarówno z -uopcją , jak i bez . Zawsze ten sam błąd.
Malte Skoruppa
po prostu mi to powiedz. wyjściesudo hwclock --show
Stormvirux
8

Użyj htpdate

Jeśli transmisja ntp jest zablokowana w sieci, zainstaluj htpdate. Synchronizuje czas przez protokół HTTP. Dokładność będzie wynosić 0,5 sekundy, zgodnie ze stroną podręcznika.

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

Usługa htpdate uruchomi się po zainstalowaniu pakietu. Czas będzie aktualizowany natychmiast, jeśli jest połączenie z Internetem.

nr
źródło
Nie kopiuj i wklejaj tej samej odpowiedzi w każdym znalezionym temacie dotyczącym NTTP.
sempaiscuba,
1
Copypasta czy nie, to rozwiązanie działało dla mnie, gdy otrzymywałem ntpdate[22109]: no server suitable for synchronization foundbłąd.
kneeki
4

Podobnie do odpowiedzi Alexa, zadziałało to dla mnie do obchodzenia zapory sieciowej portu NTTP:

sudo date -s "$(curl http://s3.amazonaws.com -v 2>&1 | \
  grep "Date: " | awk '{ print $3 " " $5 " " $4 " " $7 " " $6 " GMT"}')"
Willem van Ketwich
źródło