ntpdate: nenhum servidor adequado para sincronização encontrado

82

Meu relógio está desligado , então eu gostaria de sincronizá-lo usando ntpdate. Tentei vários servidores NTP diferentes, mas por algum motivo sempre recebo a seguinte mensagem de erro:

$ 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

Perguntas relacionadas

Examinei questões relacionadas , mas nenhuma resolve o meu problema:

Coisas que tentei

Eu instalei o pacote ntp

... e tentou usar o ntpddaemon em vez do ntpdateutilitário. Também não sincronizará meu tempo; o daemon começa bem, mas meu relógio permanece desligado. Até tentei usar o exato /etc/ntp.confda resposta aceita no último post e reiniciar o daemon. Não vá. De qualquer forma, não quero usar o daemon. Estou perfeitamente ciente de que isso ntpdateé considerado "obsoleto" e é recomendável usá-lo ntpd -q. Veja também aqui:

Mas como ntpdtambém não funciona para mim, o problema está em outro lugar . E acho que prefiro não precisar instalar nenhum pacote extra apenas para sincronizar o relógio. ntpdatevem pré-instalado com o Ubuntu e deve funcionar bem . Então, eu desinstalei o ntppacote novamente.

Talvez a porta 123 esteja bloqueada?

A partir deste post:

... tive a ideia de que a porta 123 pode estar bloqueada do meu computador / rede no meu local de trabalho. De fato,

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

Mas ainda:

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

Mesmo com a -uopção, que diz ntpdatepara usar uma porta não privilegiada para sincronização (em vez de porta 123) que certamente não está bloqueada no meu local de trabalho:

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

Talvez os estratos sejam muito altos?

Por fim, desta postagem em serverfault:

... Pensei que talvez os estratos dos servidores NTP sejam muito altos. Eles não são, no entanto. Vamos ver um pouco mais de informações de depuração:

$ 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 ... este foi longo, desculpe por isso. Estou perplexo. Alguma pista?

Atualização: informações adicionais

Não importa se um servidor NTP HOSTNAMEaparece /etc/ntp.confe se o ntpdserviço está sendo executado ou não, sempre que eu executo sudo ntpdate -u HOSTNAME, eu recebo no server suitable for synchronization found. A mesma coisa quando o ntpdserviço não está sendo executado e eu omito a -uopção. Quando o ntpdserviço está sendo executado e eu omito a -uopção, eu recebo the NTP socket is in use, exiting.

Além disso:

$ 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

Mas a hora UTC não está correta aqui. Agora, a hora UTC é 11:11, não 12:11.

E:

$ sudo hwclock --show
Wed 05 Mar 2014 01:11:56 PM CET  -0.625627 seconds
Malte Skoruppa
fonte
você disse que executou `sudo ntpdate ntp.ubuntu.com`, mas você fez isso depois de adicionar ntp.ubuntu.comao /etc/ntp.confcampo do servidor s? Se não vir a seguinte resposta
Stormvirux
tente `sudo ntpdate 0.ubuntu.pool.ntp.org
Stormvirux
1
Olá, veja meu comentário na sua resposta. Eu tentei adicionar server pool.ntp.orga /etc/ntp.conf, mas ntpdate -u pool.ntp.orgjoga o mesmo erro. Também tentei fazer isso ntp.ubuntu.com(adicionando-o /etc/ntp.conf, reiniciando o ntpserviço, executando novamente ntpdate -uno servidor exato ao qual acabei de adicionar /etc/ntp.conf). Resumindo, não importa se o servidor Eu estou tentando sincronizar com é mencionado no/etc/ntp.conf . Eu recebo o no server suitable...erro em todos os casos (exceto quando o ntpserviço está sendo executado e eu omito a -uopção, recebo o NTP socket in useerro).
Malte Skoruppa 4/03/14
Ok, eu também tentei sudo ntpdate 0.ubuntu.pool.ntp.org, que já está no /etc/ntp.confarquivo. Sem sorte - mesmo erro.
Malte Skoruppa 4/03/14

Respostas:

54

O seu provedor de hospedagem está bloqueando pacotes NTP. Essa abordagem pesada foi implementada por alguns ISPs em resposta aos ataques DDoS. Você pode ver que o ntpdate está enviando os pacotes do ntpdate -vd:

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

Eu entraria em contato com o seu provedor de serviços de Internet e perguntaria se eles estão bloqueando solicitações de ntp externas e se eles têm um servidor local que você pode usar para sincronizar o horário.

Existem algumas possibilidades mais obscuras, mas é difícil descartá-las, pois você não publicou nenhum log do syslog.

dfc
fonte
6
Você está perfeitamente certo. Parece que nossa universidade está bloqueando solicitações externas de NTP. Também oferece alguns servidores NTP locais como alternativa. Estes funcionam perfeitamente. Vejo agora que a saída de ntpdate -dvtambém deve incluir algumas receive(...)e não apenas transmit(...)mensagens. ;) Muito Obrigado!
Malte Skoruppa 5/03
Porém, uma pergunta: como a universidade pode bloquear pacotes NTP quando uso ntpdatecom a -uopção? Como isso usa uma porta não privilegiada em vez da porta 123, significa que suas regras de firewall devem ser mais complexas do que simplesmente "bloquear pacotes de entrada na porta 123". Então eles fazem algum tipo de inspeção profunda de pacotes?
Malte Skoruppa
1
Eles terão uma regra de firewall que diz "bloquear todo o tráfego com uma porta de destino de 123" e, em seguida, um par de exceções para seus anfitriões NTP
dfc
Eu tenho esse mesmo problema. Consegui resolvê-lo fazendo uma saída de traceroute e encontrei um servidor local na rota que consegui sincronizar com o que estava executando o ntp. Um deles estava bloqueando isso. Obrigado pelas dicas!
Jsonpm
1
Para mim, ntpdate -vddiz no servers can be used, exiting.
highBandWidth
47

Esta não é uma resposta ntp, no entanto ...

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

isso e a versão curl aqui .

Alex
fonte
13
Isso é terrível, mas funciona.
Alan Plum
4
A alimentação de dados não autorizados para o comando bash é executada como raiz? Agradecimentos impressionantes por jogar. Esta resposta deve ser votada com extremo preconceito.
dfc
1
Muito menos doloroso do que ter que lidar com o suporte do ISP. Além disso, não é crítico se executado em uma VM local para fins de teste.
você precisa saber é o seguinte
Você pode me explicar o que está fazendo?
Suraj Jain 02/02
1
@SurajJain Muitos servidores web retornam Datecabeçalho. Nesse comando, data -s para a data definida, wget -S para armazenar todos os cabeçalhos, 2> & 1 para registrar erros no stdout, grep para a linha de seleção com o cabeçalho Date, cortado para o dia da semana da faixa e GMT. Z no final da data de tratamento como UTC. A precisão depende da velocidade da rede.
user1516873
10

Eu tive o mesmo problema e foi assim que resolvi. Eu dou uma resposta detalhada de cima para baixo. Você pode pular para o meio da minha resposta ou apenas consultar as capturas de tela abaixo para entender rapidamente.

Primeiro instale o ntpdate (obviamente você fez isso)

sudo apt-get install ntpdate

NEXT Você precisa configurar o ntp com servidores da seguinte maneira:

Você deve pelo menos definir o seguinte parâmetro no arquivo de configuração /etc/ntp.conf: server

Por exemplo, abra o arquivo /etc/ntp.conf usando o editor de texto nano:

sudo nano /etc/ntp.conf

Localize o parâmetro do servidor e, se estiver vazio, configure-o da seguinte maneira:

server pool.ntp.org

Mas normalmente no ubuntu alguns servidores já estão pré-escritos, o que pode ser

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

insira a descrição da imagem aqui

Salve o arquivo e reinicie o serviço ntpd :

sudo /etc/init.d/ntpd start

Você pode sincronizar o relógio do sistema com um servidor NTP imediatamente com o seguinte comando:

sudo ntpdate pool.ntp.org

ou apenas execute já os servidores estão definidos

sudo ntpdate 0.ubuntu.pool.ntp.org

ou outros servidores definidos usando o servidor

geralmente

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

MAS depois disso, há uma chance de você receber o erro, NTP socket in usecomo mostrado abaixo:

insira a descrição da imagem aqui

Nesse caso, basta executar

ntpdate -u pool.ntp.org 

atualizar quando o ntp deamon estiver em execução

OU simplesmente pare o daemon, atualize e inicie-o novamente da seguinte maneira:

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

e você receberá

insira a descrição da imagem aqui

Stormvirux
fonte
Olá, obrigado pela sua resposta detalhada! Infelizmente, não funcionou para mim. Eu tenho o /etc/ntp.confque veio junto com o Ubuntu, nunca fiz alterações nele. Eu colei aqui: pastebin.com/bB0sskzv . Eu também tentei adicionar server pool.ntp.orgno topo da lista de servidores, como mostra a você imagem. Encontre isso aqui: pastebin.com/YH372Jdi . Com essas duas configurações , executei a sequência de comandos que você propôs: adicionei uma captura de tela à minha postagem original. O resultado foi exatamente o mesmo com os não modificados e os modificados /etc/ntp.conf. Alguma outra ideia? Obrigado!
Malte Skoruppa 4/03/14
o que faz timedatectl statusvoltar
Stormvirux
Veja a saída do timedatectl statuscomando no meu post original.
Malte Skoruppa 4/03/14
Eu tentei agora com todos os 4 servidores predefinidos (ou seja, {0..3}.ubuntu.pool.ntp.org), com e sem -uopção. Sempre o mesmo erro.
Malte Skoruppa 4/03/14
apenas me diga esse também. saída desudo hwclock --show
Stormvirux 30/03
8

Use htpdate

Se a transmissão ntp estiver bloqueada na sua rede, instale o htpdate. Ele sincroniza o tempo através do protocolo http. A precisão será de 0,5 segundos, de acordo com a página do manual.

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

O serviço htpdate será iniciado quando você instalar o pacote. O horário será atualizado imediatamente se houver conexão com a internet.

nr
fonte
Por favor, não copie e cole a mesma resposta em todos os tópicos encontrados sobre o ntp.
Sempaiscuba
1
Copypasta ou não, esta solução funcionou para mim enquanto eu estava recebendo o ntpdate[22109]: no server suitable for synchronization founderro.
kneeki 23/02
4

Semelhante à resposta de Alex, isso funcionou para mim para contornar a porta ntp sendo firewall:

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