Guia de Configuração e Otimização NTP no Ubuntu | Obtendo Sincronização de Tempo Precisa e Segurança Aprimorada

1. Importância do NTP no Ubuntu

O que é NTP?

NTP (Network Time Protocol) é um protocolo usado para sincronizar com precisão o horário de sistemas de computador através de uma rede. Manter o horário correto é essencial para a consistência de logs, processamento de transações e comunicação de rede precisa. Discrepâncias de horário podem causar erros de rede e inconsistências de dados, tornando-o especialmente crítico para operações de servidor.

No Ubuntu, chrony é a escolha recomendada, pois permite sincronização de horário precisa mesmo em ambientes de rede instáveis. Além disso, o Chrony é otimizado para baixa latência e sincronização rápida, tornando‑o adequado tanto para ambientes de servidor quanto de cliente.

2. Configurando o NTP

Instalando e Configurando o Chrony

Chrony é o cliente NTP padrão para Ubuntu 18.04 e posteriores. Siga os passos abaixo para instalá‑lo e configurar a sincronização de horário usando um servidor NTP.

Etapas de Instalação

sudo apt update
sudo apt install chrony

Em seguida, inicie o serviço Chrony e habilite‑o para iniciar automaticamente.

sudo systemctl start chrony
sudo systemctl enable chrony

O arquivo de configuração está localizado em /etc/chrony/chrony.conf. Se estiver usando servidores NTP próximos ao Japão, configure‑os da seguinte forma:

server ntp.nict.jp iburst
server 0.jp.pool.ntp.org iburst
server 1.jp.pool.ntp.org iburst
server 2.jp.pool.ntp.org iburst

A opção iburst permite uma sincronização mais rápida durante a conexão inicial.

3. Otimizando e Escolhendo um Servidor NTP

Usando o Projeto NTP Pool

O Projeto NTP Pool é uma iniciativa global que fornece servidores NTP otimizados com base em regiões geográficas. Ao configurar múltiplos servidores NTP, a confiabilidade é aprimorada, garantindo que, se um servidor falhar, outros possam assumir.

O exemplo de configuração a seguir usa servidores NTP localizados no Japão:

server ntp.nict.jp iburst
server 0.jp.pool.ntp.org iburst
server 1.jp.pool.ntp.org iburst
server 2.jp.pool.ntp.org iburst

4. Configurando o Fuso Horário

Usando o Comando timedatectl

Por padrão, o Ubuntu está configurado para o fuso horário UTC. Para alterá‑lo para o Horário Padrão do Japão (JST), use o comando a seguir:

sudo timedatectl set-timezone Asia/Tokyo

Após mudar o fuso horário, você pode verificar as configurações atuais com o comando a seguir:

timedatectl

5. Solução de Problemas

Quando o NTP Não Está Sincronizando

Verificando o Firewall

O NTP usa a porta UDP 123, que pode estar bloqueada pelo firewall. Use o comando a seguir para abrir a porta 123:

sudo ufw allow 123/udp

Verificando Tickers Falsos

Use o comando ntpq -p para verificar se os servidores NTP estão operando corretamente. Tickers falsos (servidores que fornecem horário incorreto) são marcados com um x. Se detectados, considere selecionar servidores alternativos ou ajustar a configuração.

Erro Stratum 16

Se o servidor NTP falhar ao sincronizar com servidores de nível superior, pode ocorrer um erro Stratum 16. Isso indica que o servidor não está conectado corretamente ou há um problema de rede. Verifique as configurações do seu servidor e da rede, e reconfigure um servidor NTP confiável.

Sincronizando o Horário Manualmente

Para sincronizar o horário manualmente usando o Chrony, execute o comando a seguir:

sudo ntpdate ntp.nict.jp

Você também pode verificar os logs do Chrony para diagnosticar problemas de sincronização:

sudo journalctl -u chrony

6. Otimizando o NTP para Ambientes de Alta Carga

Ajustando minpoll e maxpoll

Em ambientes onde a sincronização de horário de alta precisão é necessária, ajustar o intervalo de sondagem do NTP pode garantir sincronizações mais frequentes e minimizar o desvio de horário. Abaixo está um exemplo de configuração para aumentar a frequência de sincronização:

server ntp.nict.jp iburst minpoll 4 maxpoll 10

Gerenciando o NTP com Juju

Em ambientes de nuvem em grande escala, o Juju pode ser usado para automatizar o gerenciamento do serviço NTP. O Juju monitora a carga em cada host e seleciona o host ideal como servidor NTP. Os comandos a seguir implantam o NTP usando o Juju:

juju deploy cs:ntp ntp
juju config ntp auto_peers=true

Esta automação aprimora o gerenciamento de NTP e garante sincronização de tempo eficiente com cargas distribuídas.

7. Aprimorando a Segurança

Restringindo o Acesso a Servidores NTP

Para melhorar a segurança, você pode restringir o acesso ao servidor NTP a endereços IP específicos. Ao adicionar regras de controle de acesso ao /etc/chrony/chrony.conf, é possível permitir solicitações NTP apenas de redes ou endereços IP específicos:

allow 192.168.1.0/24

Isso impede solicitações NTP não autorizadas de fontes externas, reforçando a segurança da sua rede interna.