Linux rdate: verifique um servidor de tempo e ajuste o relógio do sistema

rdate é um comando que busca o horário de um servidor de tempo remoto para verificá-lo ou ajustar o relógio do sistema uma vez. No entanto, o significado das opções difere para cada implementação com o mesmo nome, portanto, você deve consultar o manual do programa instalado primeiro. Para sincronização contínua do tempo, é melhor usar um serviço de sincronização de tempo como o chrony.

Diferença entre rdate e sincronização de tempo

rdate é uma ferramenta que envia uma solicitação a um servidor remoto quando executada. Mesmo que ela ajuste o relógio uma vez, o próprio comando não continua em execução para corrigir desvios. Se você opera serviços sensíveis ao tempo, como registros (logs), tarefas agendadas ou verificação de certificados, você precisa verificar o status da sincronização contínua.

Os exemplos abaixo usam OpenRdate conforme documentado no manual rdate do Ubuntu 24.04. As mesmas opções podem significar coisas diferentes em outras implementações, portanto não aplique estes exemplos sem alterações.

Verificação de Instalação e Implementação

No Ubuntu, se você puder acessar o repositório de pacotes, instale-o da seguinte forma. Se disser que o pacote não foi encontrado, verifique a versão da distribuição e o repositório que você está usando.

sudo apt update
sudo apt install rdate

Após a instalação, abra o manual para verificar as opções do programa real. A tecla de saída no manual é q.

command -v rdate
man rdate

No OpenRdate, -p significa que ele exibe o horário do servidor sem alterar o relógio, e -s significa que ele não o exibe. Em outras implementações do rdate, -s pode significar que ele ajusta o relógio. Portanto, não tente adivinhar o comportamento apenas pelo nome da opção. Em particular, no OpenRdate, executar sem -p pode tentar ajustar o relógio.

Verificar apenas o horário do servidor

O método de comunicação padrão do OpenRdate é a porta TCP 37 do protocolo de tempo RFC 868. Você não pode assumir que um servidor NTP (Network Time Protocol) típico também forneça RFC 868. O exemplo a seguir consulta o servidor NTP da Physikalisch-Technische Bundesanstalt (PTB) na Alemanha usando a opção -n do OpenRdate e o Simple Network Time Protocol (SNTP). Verifique a política de uso do servidor e a acessibilidade da rede e, se necessário, substitua-o pelo servidor NTP especificado pela sua organização.

rdate -n -p ptbtime1.ptb.de

Quando uma resposta normal é recebida, o horário remoto é exibido, e o relógio do sistema local não é alterado. O SNTP usa a porta UDP 123. O manual do OpenRdate informa que a correção de segundos intercalares pode ser necessária com um servidor NTP. Se a precisão for importante, consulte a opção -c no manual e as condições da fonte de tempo. Se não houver resposta, verifique o endereço do servidor, DNS, firewall e se o serviço do servidor está em execução. Você deve primeiro verificar o protocolo que o servidor realmente suporta, pois ser chamado de servidor de tempo não significa que ele suporte todos os protocolos.

Verifique antes de ajustar o relógio uma vez

Se o horário do sistema mudar repentinamente para frente ou para trás, isso pode afetar a ordem dos logs, tarefas agendadas, autenticação e serviços em execução. Para sistemas em operação, revise a confiabilidade da fonte de horário e o impacto das mudanças, e garanta um momento apropriado para as modificações. Além disso, verifique a política operacional atual para evitar alterar repetidamente um relógio que já é gerenciado pelo chrony ou outros serviços de sincronização.

No OpenRdate, o seguinte comando tenta ajustar o relógio do sistema para o horário do servidor SNTP sem -p. São necessários privilégios de administrador e, antes da execução, verifique a resposta do servidor e o horário atual usando o comando de consulta acima. Este exemplo é para OpenRdate.

date
timedatectl
sudo rdate -n ptbtime1.ptb.de
date
timedatectl

Se um comando falhar, verifique os erros e não presuma que ele teve sucesso. date e timedatectl ajudam a verificar a hora local e o fuso horário. Só porque o fuso horário exibido na tela é diferente não significa que a hora de referência do relógio esteja necessariamente incorreta. Alterações de horário não podem ser revertidas facilmente como uma consulta, então, em vez de redefinir cegamente para valores anteriores, sincronize com uma fonte de tempo confiável de acordo com os procedimentos operacionais.

Verifique a sincronização contínua

Executar rdate apenas uma vez não configura a sincronização contínua. Em um ambiente systemd, você pode verificar o serviço de sincronização e o status do relógio com o seguinte comando.

timedatectl status

O NTP service que mostra como ativo e o System clock synchronized que mostra como sincronizado são status diferentes. Mesmo que o serviço esteja em execução, se ele não conseguir alcançar um servidor, pode não estar sincronizado. Os itens exibidos podem variar dependendo do sistema e da versão.

Em sistemas que usam chrony, você pode verificar o status e as fontes de tempo com chronyc tracking e chronyc sources -v. Se você não puder usar os comandos, verifique a instalação, o status do serviço e as configurações da distribuição. Na documentação de sincronização de tempo do chrony da Red Hat você pode ver como verificar as fontes e o status da sincronização.