Guia de Configuração NTP no Ubuntu: Mantenha Seus Servidores Sincronizados

目次

1. Introdução: Por que a Sincronização de Tempo é Importante

Problemas Causados pelo Desvio do Relógio do Sistema

Em sistemas Linux, incluindo o Ubuntu, manter o horário correto é crucial. Embora possa parecer um problema menor de imprecisão do relógio, o desvio de tempo pode gerar problemas críticos na operação de servidores e em ambientes de execução de aplicações.

Por exemplo, os seguintes problemas podem ocorrer:

  • Logs Inconsistentes Se os carimbos de tempo nos logs do sistema e nos logs de aplicações estiverem desalinhados, torna-se difícil identificar a causa dos problemas durante a solução de incidentes.
  • Jobs do cron com Falha Tarefas agendadas (como backups e processamento em lote) podem não ser executadas nos horários corretos, podendo rodar em momentos inesperados.
  • Falhas em Certificados SSL e Autenticação de Segurança Informações de tempo precisas são necessárias para comunicação HTTPS e autenticação SSH. Se o horário do sistema estiver incorreto, os certificados podem ser considerados “expirados”, levando a erros de conexão.

Esses problemas podem ter um impacto particularmente severo ao operar múltiplos servidores sincronizados por uma rede.

O Papel e a Importância do NTP

Para prevenir esses problemas, NTP (Network Time Protocol) é utilizado. O NTP se comunica com servidores de horário na internet ou em uma rede local para corrigir automaticamente o horário do sistema.

O Ubuntu oferece várias ferramentas relacionadas ao NTP incluindo ntpd, chrony e systemd-timesyncd. Este artigo focará no ntpd (daemon do Network Time Protocol), fornecendo uma explicação detalhada de sua instalação e uso no Ubuntu.

Especialmente para servidores destinados a operação de longo prazo e sistemas que exigem consistência nos logs, a estabilidade do ntpd é altamente valorizada.

O próximo capítulo apresentará o que é o ntpd, seus papéis básicos e as opções disponíveis no Ubuntu.

2. O que é ntpd? Seu Papel e Opções no Ubuntu

Visão Geral e Recursos do ntpd

ntpd (Network Time Protocol Daemon) é um programa daemon que usa o NTP para manter o horário do sistema preciso. Ele se comunica periodicamente com servidores NTP na internet ou em uma rede local e ajusta automaticamente o relógio do sistema.

Um recurso chave do ntpd é sua “sincronização suave”, que corrige gradualmente as diferenças de tempo. Esse design evita mudanças abruptas de horário que poderiam impactar negativamente sistemas e aplicações em execução.

Além disso, o ntpd suporta recursos avançados do NTP, como modo ativo simétrico e autenticação, tornando‑se um serviço robusto de sincronização de tempo adequado para ambientes corporativos.

Ferramentas de Sincronização de Tempo Disponíveis no Ubuntu

O Ubuntu oferece as seguintes opções para sincronização de tempo:

  • ntpd (pacote ntp) Amplamente usado em ambientes que exigem operação de longo prazo e configuração detalhada. Oferece excelente flexibilidade e estabilidade permitindo sincronização de alta precisão ao conectar‑se a servidores NTP públicos.
  • chrony Uma alternativa ao ntpd que tem ganhado destaque por sua alta precisão e velocidade de sincronização rápida após a inicialização. Funciona bem em ambientes de recursos limitados e máquinas virtuais, e muitas distribuições modernas estão adotando o chrony como padrão.
  • systemd-timesyncd Um serviço leve de sincronização de tempo habilitado por padrão no Ubuntu 20.04 e posteriores. É simples e fácil de usar, mas possui recursos limitados, tornando‑se inadequado para configurações avançadas ou para operar como servidor NTP local.

Razões para Escolher o ntpd e Suas Vantagens

A principal razão para adotar o ntpd no Ubuntu é sua confiabilidade e estabilidade. É uma escolha forte, especialmente nos seguintes casos:

  • Quando alta precisão de horário é necessária para servidores de longa duração.
  • Quando se deseja construir um servidor NTP dentro de uma rede local.
  • Para aplicações corporativas que exigem autenticação e controle avançado.

Além disso, o ntpd tem a vantagem de ser compatível com muitos sistemas existentes e possuir um histórico comprovado, o que reduz preocupações durante a implementação.

3. Instalando e Configurando Inicialmente o ntpd no Ubuntu

Procedimento de Instalação do ntpd

Para usar o ntpd no Ubuntu, primeiro você precisa instalar o pacote ntp. Você pode instalá‑lo facilmente seguindo os passos abaixo:

sudo apt update
sudo apt install ntp

Este comando instalará automaticamente o ntpd e seus arquivos relacionados. Observe que em algumas versões do Ubuntu, o chrony ou o systemd-timesyncd podem estar habilitados por padrão. Nesses casos, recomenda‑se desabilitá‑los ou removê‑los previamente.

sudo systemctl stop systemd-timesyncd
sudo systemctl disable systemd-timesyncd

Habilitando o Serviço e Verificando a Inicialização

Depois que a instalação for concluída, habilite o serviço ntpd e verifique seu status de inicialização.

sudo systemctl enable ntp
sudo systemctl start ntp
sudo systemctl status ntp

Se o comando status mostrar “active (running)”, isso significa que o ntpd foi iniciado com sucesso.

Verificando e Editando o Arquivo de Configuração Inicial

A configuração do ntpd está definida no arquivo /etc/ntp.conf. A configuração padrão após a instalação inclui vários servidores NTP padrão (geralmente da série pool.ntp.org).

Primeiro, vamos verificar o conteúdo do arquivo de configuração.

cat /etc/ntp.conf

Se você quiser especificar servidores nos Estados Unidos, pode editá‑lo da seguinte forma:

server us.pool.ntp.org iburst

A opção iburst é recomendada, pois melhora a velocidade de sincronização durante a conexão inicial.

Após fazer alterações na configuração, reinicie o serviço ntpd para aplicá‑las.

sudo systemctl restart ntp

Verificando a Sincronização Automática do Horário do Sistema

Depois de iniciado, o ntpd sincroniza automaticamente o horário com o servidor. Para verificar se está funcionando corretamente, o comando a seguir é útil:

ntpq -p

Este comando permite visualizar uma lista de servidores NTP conectados e informações detalhadas, como atraso e offset.

4. Configurando e Personalizando Servidores NTP

Selecionando Servidores NTP Recomendados

Um aspecto importante da configuração do ntpd é escolher quais servidores NTP serão usados para sincronização. Ao se conectar à internet, especificar servidores NTP confiáveis nos Estados Unidos pode garantir uma sincronização de horário mais estável.

Servidores NTP públicos típicos nos EUA incluem:

  • us.pool.ntp.org (Um pool de servidores NTP nos Estados Unidos)
  • Você também pode encontrar pools regionais como north-america.pool.ntp.org ou pools de estados específicos, se necessário.

Esses servidores são operados com base em relógios atômicos de alta precisão e podem ser usados para uso pessoal sem necessidade de permissão especial.

Você pode configurar a sincronização com esses servidores escrevendo o seguinte em /etc/ntp.conf:

server us.pool.ntp.org iburst
server north-america.pool.ntp.org iburst

Itens de Configuração Detalhados no ntp.conf

Além de especificar servidores NTP, o /etc/ntp.conf permite controle fino do comportamento do ntpd. Aqui estão alguns itens de configuração típicos:

  • directiva restrict Define restrições e permissões para conexões de clientes. Por razões de segurança, conexões desnecessárias devem ser restritas. Exemplo: permitindo conexões da rede local
      restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
    
  • driftfile Especifica o arquivo que registra o desvio do relógio do sistema (desvios sutis). Normalmente, a configuração padrão é suficiente.
      driftfile /var/lib/ntp/ntp.drift
    

Construindo um Servidor NTP Dentro de uma Rede Local

Você também pode usar o ntpd no Ubuntu para operar como um servidor NTP que distribui horário para outros dispositivos dentro da sua rede local. Essa configuração é eficaz em ambientes sem acesso à internet ou onde a gestão consistente de horário entre vários dispositivos é necessária.

Aqui está um exemplo do procedimento de configuração:

  1. Adicione uma regra restrict ao /etc/ntp.conf para permitir acesso local: restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
  2. Nos PCs clientes, configure-os para referenciar este servidor NTP local: server 192.168.1.10 iburst # Local IP of the NTP server
  3. Abra a porta do servidor NTP (permita a porta UDP 123 no firewall): sudo ufw allow 123/udp

Se a comunicação estiver bloqueada, a sincronização de horário falhará, e o comando ntpq não mostrará o status da conexão com o servidor.

5. Verificando a Operação do ntpd e Solucionando Problemas

Como Verificar o Status do Serviço

Para verificar se o ntpd está em execução corretamente, use o comando a seguir:

sudo systemctl status ntp

Se ele exibir active (running), o ntpd está operando normalmente. Se mostrar inactive ou failed, pode haver um erro de configuração ou um problema de dependência que impede sua inicialização.

Para verificar os logs em detalhe, o comando a seguir é útil:

journalctl -u ntp

Isso permite visualizar o histórico de inicialização e as mensagens de erro do serviço ntpd em ordem cronológica.

Comando para Verificar o Status da Sincronização (ntpq -p)

O comando ntpq -p é o mais usado para verificar se o ntpd está sincronizando corretamente com os servidores NTP.

ntpq -p

Exemplo de saída:

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*time.cloudflare. 172.64.250.202  2 u   57   64  377    0.876   -0.012   0.009
+ntp.ubuntu.com   170.247.169.130  2 u   49   64  377    1.234   +0.056   0.015
 stratum2.ntp.br 162.229.5.20    2 u   51   64  377  105.234   -0.123   0.021
 LOCAL(0)        .LOCL.         10 l   --   64    0    0.000    0.000   0.000

O significado de cada coluna é o seguinte:

  • remote : O nome do servidor NTP conectado
  • st : O estrato do servidor (nível hierárquico), onde 1 é o mais preciso (ex.: relógio atômico)
  • reach : Um registrador de deslocamento de 8 bits que indica o histórico de sucesso das últimas oito tentativas de conexão
  • delay : O atraso de ida e volta da rede em milissegundos (ms)
  • offset : A diferença de tempo entre o seu sistema e o servidor em milissegundos (ms)
  • jitter : A variância estatística do offset ao longo de várias amostras

O servidor com um asterisco (*) no início é a fonte de sincronização atualmente selecionada.

Erros Comuns e Suas Soluções

Aqui estão alguns erros comuns que você pode encontrar ao implementar o ntpd e suas respectivas soluções:

1. Nada é exibido com ntpq -p / reach é 0

  • Causa : A porta UDP 123 pode estar bloqueada por um firewall ou roteador.
  • Solução : Verifique as configurações de firewall tanto no servidor quanto no cliente para garantir que o tráfego NTP esteja permitido.
    sudo ufw allow 123/udp
    

2. System clock not synchronized é exibido

  • Causa : O ntpd pode não estar em execução, ou pode estar em conflito com outro serviço de sincronização (como systemd-timesyncd).
  • Solução : Desative quaisquer serviços de sincronização de horário desnecessários e reinicie o ntpd.
    sudo systemctl disable systemd-timesyncd
    sudo systemctl restart ntp
    

3. Falha ao resolver nomes de servidores NTP

  • Causa : Problemas de configuração DNS ou de rede.
  • Solução : Verifique se a resolução de nomes está funcionando (ex.: usando ping us.pool.ntp.org ) e corrija as configurações do servidor DNS, se necessário.

4. O horário está significativamente errado, mas não sincroniza

  • Causa : O ntpd não ajusta automaticamente o horário se a diferença for muito grande (por motivos de segurança).
  • Solução : Defina manualmente o horário inicial e então reinicie o ntpd.
    sudo ntpd -gq  # Perform an immediate synchronization once
    sudo systemctl restart ntp
    

Para Monitoramento Contínuo

Em um ambiente de produção, é recomendável configurar um script para registrar periodicamente a saída de ntpq -p e criar alertas para anomalias. Notar interrupções súbitas nos logs ou um valor de reach consistentemente baixo pode ajudar na detecção precoce de problemas.

6. Comparação do ntpd com Outras Ferramentas de Sincronização de Tempo

Principais Ferramentas de Sincronização de Tempo Usadas no Ubuntu

Várias ferramentas estão disponíveis para sincronização de tempo em ambientes Ubuntu. Cada uma tem suas próprias características, e a escolha depende do uso pretendido e dos requisitos do sistema. As três principais ferramentas são:

  • ntpd (pacote ntp)
  • chrony
  • systemd-timesyncd

Entender as diferenças entre elas ajudará a escolher o método de sincronização ideal para o seu ambiente.

Recursos do ntpd

  • Prós
  • Tradicional e estável, com altíssima confiabilidade.
  • Rico em recursos e permite configuração detalhada (configuração de servidor NTP local, autenticação, modos simétricos, etc.).
  • Altamente compatível com servidores NTP públicos, com abundante informação de solução de problemas disponível.
  • Contras
  • A sincronização inicial após a inicialização pode, às vezes, demorar um pouco.
  • A adaptabilidade a ambientes de rede modernos (virtualização, redes variáveis) é um pouco menor.

Recursos do chrony

  • Prós
  • Sincronização inicial rápida, corrigindo diferenças de tempo logo após a inicialização.
  • Alta precisão mesmo em máquinas virtuais e ambientes de rede variáveis (laptops, uso de VPN).
  • Capacidades de aprendizado autônomo (melhora a precisão com base nas condições ao redor), frequentemente oferecendo melhor precisão que o ntpd.
  • Contras
  • A configuração para operar como servidor NTP local é um pouco mais complexa.
  • Documentação e exemplos são menos abundantes em comparação ao ntpd.

Recursos do systemd-timesyncd

  • Prós
  • Habilitado por padrão no Ubuntu 20.04 e posteriores, muito fácil de instalar e gerenciar.
  • Recursos de sincronização mínimos com consumo de recursos muito baixo.
  • Bem integrado ao systemd, facilitando o uso com as configurações padrão do Ubuntu.
  • Contras
  • Funcionalidade limitada, não pode ser usado para configurações avançadas manuais ou como servidor NTP local.
  • Recursos de precisão e registro são básicos, não adequados para sistemas em grande escala.

Tabela de Comparação das Ferramentas (Resumo)

Featurentpdchronysystemd-timesyncd
AccuracyHighVery HighNormal
Initial Sync SpeedCan be slowVery FastNormal
Local NTP Server○ (Slightly complex)× (Not possible)
Configuration FlexibilityHighMediumLow
Adaptability to Virtual Environments
Proven Track Record & Information
Recommended Use CasesServers, organizational uniformityVirtual environments, laptopsSingle PCs, beginners

Recomendações por Cenário de Uso

  • Uso em Servidor (especialmente ambientes sempre ligados)ntpd ou chrony são recomendados. Estabilidade e precisão são importantes.
  • Ambientes em Nuvem, Máquinas Virtuais, Laptopschrony é o mais flexível e preciso.
  • Sincronização Simples de Tempo para um PC Únicosystemd-timesyncd é suficiente.

7. Perguntas Frequentes (FAQ)

Q1. O ntpd é instalado por padrão no Ubuntu 22.04?

A1.
Não, o ntpd não vem instalado por padrão no Ubuntu 22.04. O systemd-timesyncd está habilitado por padrão para sincronização básica de tempo. Para usar o ntpd, é necessário instalar explicitamente o pacote ntp.

sudo apt install ntp

Após a instalação, também é recomendável desativar o systemd-timesyncd para evitar conflitos.

Q2. ntpq -p não está exibindo corretamente. O que devo fazer?

A2.
Várias razões podem causar isso:

  • Serviço não está em execução : Verifique com sudo systemctl status ntp e inicie se necessário.
  • Comunicação com o servidor NTP falhando : Verifique se o seu firewall está bloqueando a porta UDP 123.
  • Erros no arquivo de configuração : Verifique se não há erros de digitação em /etc/ntp.conf.

Primeiro, verifique a operação básica com o seguinte comando:

ntpq -p

Se a saída estiver vazia ou o valor de reach for 0, pode haver um problema de comunicação com servidores externos.

Q3. Devo escolher ntpd ou chrony?

A3.
A melhor ferramenta depende do seu ambiente de uso:

  • Servidores físicos de longa duração ou construção de um servidor NTP localntpd é recomendado pela sua estabilidade.
  • Ambientes virtuais, laptops ou ambientes de rede variáveis (Wi‑Fi, etc.)chrony oferece maior precisão e rapidez.
  • Ajuste simples de horário é suficientesystemd-timesyncd pode lidar com isso facilmente.

Q4. O que o comando ntpd -gq faz?

A4.
ntpd -gq é um comando que realiza uma sincronização única com o servidor NTP e então sai imediatamente.

  • -g : Permite saltos de tempo significativos para corrigir grandes discrepâncias.
  • -q : Sai após sincronizar uma vez (não roda como daemon).

Este comando pode ser usado para definir inicialmente o horário correto se o relógio do sistema estiver muito atrasado e não for corrigido pelo serviço regular ntpd.

Q5. Há algum benefício em especificar múltiplos servidores NTP?

A5.
Sim, especificar vários servidores NTP fornece redundância e melhora a confiabilidade. Se um servidor falhar ou ficar inacessível, seu sistema ainda pode obter informações de horário dos outros servidores, garantindo sincronização estável.

Exemplo de configuração (/etc/ntp.conf):

server us.pool.ntp.org iburst
server time.google.com iburst
server ntp.cloudflare.com iburst

8. Conclusão: Melhore a Confiabilidade do Sistema com Sincronização de Tempo Estável

Reafirmando as Vantagens do ntpd

Nos sistemas Ubuntu, a sincronização precisa de horário não é apenas uma questão de conveniência, mas um elemento crucial que impacta diretamente segurança, solução de problemas, gerenciamento de logs e a precisão de processos automatizados.

Este artigo explicou de forma abrangente os fundamentos do NTP (Network Time Protocol), o mecanismo de sincronização de horário usando ntpd, métodos de instalação, personalização de configuração, verificação de operação e até comparações com outras ferramentas.

Conselho para os Leitores

A escolha de qual ferramenta de sincronização de horário adotar no Ubuntu depende do propósito do sistema, da configuração e dos requisitos de disponibilidade.
Entretanto, o princípio de que “operar de forma estável sem horário preciso é impossível” vale para todos os ambientes.

  • Para uso em servidores e quando o gerenciamento de logs é importante → Configure adequadamente ntpd ou chrony.
  • Para uso simples em um único PCsystemd-timesyncd oferece uma implementação fácil.

A precisão da sincronização de horário pode passar despercebida nas operações diárias, mas sem dúvida servirá como um ponto de referência valioso durante a solução de problemas.

Incentivamos você a usar este artigo como um guia para configurar o mecanismo de sincronização de horário ideal para o seu ambiente Ubuntu.