Corrigindo desvio de horario do servidor - Sincronizando NTP com chrony e timedatectl

Corrigindo desvio de horario do servidor - Sincronizando NTP com chrony e timedatectl

Por que o desvio de horario causa problemas reais

Poucos segundos de desvio de relogio podem quebrar a validacao de certificados SSL/TLS, autenticacao Kerberos, correlacao de logs entre hosts e agendamento de cron. Quando a sincronizacao de horario falha, a falha geralmente parece ser outra coisa — tornando-a uma das coisas mais frustrantes de diagnosticar.

Primeira verificacao (execute agora)

timedatectl status

System clock synchronized: yes significa que esta tudo bem. no — siga os passos abaixo.

Como verificar o estado atual do horario

timedatectl status fornece um panorama completo em um unico comando: status de sincronizacao NTP, fuso horario e estado do relogio de hardware.

timedatectl status

timedatectl status
               Local time: Mon 2026-06-01 10:00:00 JST
           Universal time: Mon 2026-06-01 01:00:00 UTC
                 RTC time: Mon 2026-06-01 01:00:00
                Time zone: Asia/Tokyo (JST, +0900)
System clock synchronized: yes
              NTP service: active
          RTC in local TZ: no
Campo Saudavel Precisa correcao
System clock synchronized yes no
NTP service active inactive / n/a

Verificar horario do sistema contra UTC

date
date -u

A diferenca entre o horario local e UTC deve corresponder exatamente ao deslocamento do seu fuso horario.

Qual cliente NTP esta rodando?

O Linux moderno usa um de dois clientes NTP. Nao execute ambos simultaneamente.

Daemon Comum em Arquivo de configuracao
systemd-timesyncd Ubuntu (leve) /etc/systemd/timesyncd.conf
chronyd Ubuntu / RHEL / CentOS (alta precisao) /etc/chrony.conf

Verifique qual esta ativo:

systemctl status systemd-timesyncd
systemctl status chronyd

Executar tanto chronyd quanto systemd-timesyncd causa conflitos — nenhum dos dois sincronizara de forma confiavel. Ative apenas um.

Usando chrony para diagnosticar e corrigir desvio de horario

Verificar estado de sincronizacao com chronyc tracking

chronyc tracking
Reference ID    : 133.243.238.163 (ntp.nict.jp)
Stratum         : 2
Ref time (UTC)  : Mon Jun 01 01:00:00 2026
System time     : 0.000123456 seconds fast of NTP time
Last offset     : +0.000123456 seconds
RMS offset      : 0.000012345 seconds
Frequency       : -1.234 ppm fast
Residual freq   : +0.001 ppm
Skew            : 0.123 ppm
Root delay      : 0.012345678 seconds
Root dispersion : 0.000123456 seconds
Update interval : 64.2 seconds
Leap status     : Normal

System time mostra o deslocamento atual. Qualquer coisa alem de poucos segundos justifica acao imediata.

Ver lista de servidores NTP

chronyc sources -v
MS Name/IP address         Stratum Poll Reach LastRx Last sample
^* ntp.nict.jp                   1   6    37    43  -0.123ms[+0.456ms] +/- 12.3ms

^* marca o servidor atualmente selecionado. Muitas fontes com ? ou x indicam que os proprios servidores NTP estao inalcancaveis.

Forcar sincronizacao imediata com makestep

Para grandes deslocamentos (segundos ou minutos), pule o ajuste gradual normal:

chronyc makestep
200 OK

makestep salta abruptamente o relogio para frente ou para tras. Isso cria lacunas ou sobreposicoes nos timestamps dos logs. Confirme o impacto antes de executar em sistemas de producao.

Instalar e iniciar chronyd se ausente

# Ubuntu
sudo apt install chrony
sudo systemctl enable --now chronyd

# RHEL / CentOS / Rocky Linux
sudo dnf install chrony
sudo systemctl enable --now chronyd

Ativar NTP com timedatectl

Quando a sincronizacao NTP esta inativa (NTP service: inactive), ative-a:

sudo timedatectl set-ntp true

Verifique:

timedatectl status | grep NTP
NTP service: active

Corrigir um fuso horario mal configurado

Um fuso horario errado e uma causa comum de desvio aparente de horario:

# Verificar fuso horario atual
timedatectl status | grep "Time zone"

# Buscar fusos disponiveis
timedatectl list-timezones | grep America

# Definir fuso horario
sudo timedatectl set-timezone America/Sao_Paulo

Configurando systemd-timesyncd

Ambientes usando systemd-timesyncd em vez de chrony:

timedatectl show-timesync --all

Para alterar servidores NTP, edite /etc/systemd/timesyncd.conf:

[Time]
NTP=0.pool.ntp.org 1.pool.ntp.org
FallbackNTP=2.pool.ntp.org 3.pool.ntp.org

Aplique:

sudo systemctl restart systemd-timesyncd

Ambientes de VM e cloud

VMs e containers tem modos de falha adicionais que servidores de hardware nao tem.

Desvio de horario apos suspensao/retomada de VM

Suspensao/retomada pode deixar o relogio muito atrasado. Corrija imediatamente com chronyc makestep, ou previna adicionando uma diretiva makestep ao /etc/chrony.conf:

makestep 1.0 3

Isso diz ao chrony: se o deslocamento exceder 1.0 segundo nas primeiras 3 atualizacoes, ajuste imediatamente em vez de fazer slew gradual.

Endpoints NTP de provedores cloud

Use o endpoint NTP interno do provedor para melhor confiabilidade:

Provedor NTP recomendado
AWS 169.254.169.123
Azure time.windows.com
GCP metadata.google.internal

Firewall bloqueando NTP

NTP usa porta UDP 123. Se o trafego estiver bloqueado, a sincronizacao falhara silenciosamente:

# ufw
sudo ufw allow out 123/udp

# firewalld
sudo firewall-cmd --add-service=ntp --permanent
sudo firewall-cmd --reload

Testar alcancabilidade NTP para um servidor especifico:

chronyc ntpdata <NTP_SERVER_IP>

Resumo

  • Comece com timedatectl status — o diagnostico unico mais rapido
  • Ative o NTP com sudo timedatectl set-ntp true se estiver inativo
  • Use chronyc tracking para detalhes de deslocamento e qualidade da fonte
  • Force correcao imediata com chronyc makestep
  • Para VMs, adicione makestep 1.0 3 ao /etc/chrony.conf para sobreviver a suspensao/retomada

Proximas leituras