O sincronismo de tempo é crítico para o funcionamento adequado de qualquer infraestrutura moderna. Sistemas de autenticação (como Kerberos/Active Directory), clusters de banco de dados e certificados SSL/TLS dependem de relógios precisos.
Neste guia, configuraremos o Gateway para atuar como o servidor de tempo central (NTP Server) para toda a rede interna do laboratório. O Gateway buscará o tempo de servidores públicos brasileiros altamente precisos e seguros (usando NTS - Network Time Security), e os clientes internos consultarão exclusivamente o Gateway.
Utilizaremos o chrony, que é mais moderno, rápido e preciso que o antigo ntpd, especialmente em ambientes virtuais.
Antes de iniciar, garanta que o hostname do gateway esteja configurado corretamente (isso ajuda na identificação pelos clientes).
sudo hostnamectl set-hostname gateway.geanmartins.net
sudo apt update
sudo apt install chrony
O arquivo de configuração do chrony define de onde ele buscará a hora (servidores públicos), quem tem permissão para consultá-lo (nossas redes internas) e como ele se comporta em caso de queda de internet.
Edite o arquivo /etc/chrony/chrony.conf substituindo seu conteúdo pelo seguinte:
# =======================================================================
# FONTES DE TEMPO EXTERNAS (NTP.br)
# =======================================================================
# Utilizamos os servidores oficiais do Brasil (NTP.br).
# O parâmetro 'iburst' acelera a sincronização inicial.
# O parâmetro 'nts' (Network Time Security) criptografa a comunicação,
# prevenindo ataques de alteração de tempo (Time Shifting Attacks).
server a.st1.ntp.br iburst nts
server b.st1.ntp.br iburst nts
server c.st1.ntp.br iburst nts
server d.st1.ntp.br iburst nts
server e.st1.ntp.br iburst nts
server gps.nu.ntp.br iburst nts
server gps.jd.ntp.br iburst nts
server gps.ce.ntp.br iburst nts
# =======================================================================
# COMPORTAMENTO OFFLINE (Modo Órfão)
# =======================================================================
# Se o Gateway perder a conexão com a internet (e com o ntp.br),
# ele continuará servindo a hora local para as redes internas,
# anunciando-se com um nível de precisão mais baixo (stratum 10).
local stratum 10 orphan
# =======================================================================
# DIRETÓRIOS E ARQUIVOS DE SISTEMA
# =======================================================================
sourcedir /run/chrony-dhcp
sourcedir /etc/chrony/sources.d
confdir /etc/chrony/conf.d
keyfile /etc/chrony/chrony.keys
driftfile /var/lib/chrony/chrony.drift # Armazena a taxa de erro do relógio de hardware
ntsdumpdir /var/lib/chrony # Armazena chaves NTS
logdir /var/log/chrony # Diretório de logs
# =======================================================================
# AJUSTES DE RELÓGIO
# =======================================================================
maxupdateskew 100.0 # Limite máximo de correção de frequência
rtcsync # Sincroniza a hora do SO para o relógio de hardware (BIOS/UEFI)
makestep 1 3 # Se o erro for > 1 segundo, dá um "salto" nas 3 primeiras atualizações
leapseclist /usr/share/zoneinfo/leap-seconds.list # Lista de segundos bissextos
# =======================================================================
# CONTROLE DE ACESSO (ACL)
# =======================================================================
# Permite que apenas nossas redes internas consultem este servidor.
# O tráfego externo será descartado (evitando ataques de amplificação NTP).
allow 10.0.0.0/8 # Cobre todas as redes 10.48.x.x
allow 172.16.0.0/12
allow 192.168.0.0/16
allow fd00::/7 # Cobre as redes IPv6 locais
Após salvar o arquivo, reinicie o daemon para aplicar as configurações:
sudo systemctl restart chronyd
Verifique se a autenticação de segurança (NTS) com os servidores do NTP.br foi estabelecida com sucesso:
sudo chronyc -N 'authdata'
Exemplo de saída esperada (A coluna Type deve mostrar conexões ativas):
Name/IP address Mode KeyID Type KLen Last Atmp NAK Cook CLen
=========================================================================
a.st1.ntp.br NTS 1 15 256 2 0 0 8 104
b.st1.ntp.br NTS 0 0 0 - 1 0 0 0
c.st1.ntp.br NTS 1 30 128 3 0 0 8 64
Verifique o status de sincronização com as fontes:
# Mostra os servidores aos quais estamos conectados
chronyc sources
# Mostra as estatísticas de precisão e jitter
chronyc sourcestats
# Exibe o status de rastreamento do sistema atual
chronyc -4 tracking
Todos os computadores e servidores da rede interna devem ser configurados para sincronizar o relógio exclusivamente com o gateway. Nunca aponte um servidor interno diretamente para a internet.
Abaixo estão duas abordagens: uma usando chrony (recomendado para servidores críticos) e outra usando systemd-timesyncd (recomendado para VMs leves ou containers).
sudo apt install chrony
Edite o arquivo /etc/chrony/chrony.conf e substitua todo o conteúdo por:
# =======================================================================
# SERVIDOR NTP INTERNO
# =======================================================================
# Aponta exclusivamente para o nosso Gateway.
# A flag 'prefer' indica que esta é a fonte prioritária.
server gateway.geanmartins.net iburst prefer
# Alternativa: caso o DNS ainda não esteja operando no boot, use o IP do Gateway
# server 10.48.1.1 iburst prefer
# =======================================================================
# CONFIGURAÇÕES BÁSICAS
# =======================================================================
driftfile /var/lib/chrony/chrony.drift
makestep 1 3
rtcsync
logdir /var/log/chrony
keyfile /etc/chrony/chrony.keys
# Nota: Não inclua linhas 'allow' aqui, pois os clientes não devem atuar como servidores.
Atenção: Remova ou comente quaisquer linhas contendo
pool ntp.ubuntu.comoupool.ntp.org. Os clientes devem usar apenas o Gateway.
Reinicie o serviço e verifique o status:
sudo systemctl restart chronyd
chronyc sources
Saída esperada (o ^* indica que a fonte está ativa e sincronizada):
MS Name/IP address Stratum Poll Reach LastRx Last sample
=====================================================================
^* gateway.geanmartins.net 3 6 377 25 +12us[+15us] +/- 1200us
Para máquinas que não precisam da precisão de microssegundos do chrony, o systemd-timesyncd é uma excelente alternativa já embutida na maioria das distribuições modernas.
Dois clientes NTP não podem rodar simultaneamente.
sudo systemctl stop chronyd
sudo systemctl disable chronyd
# Instala o timesyncd (se já não estiver)
sudo apt install systemd-timesyncd
Edite o arquivo /etc/systemd/timesyncd.conf:
[Time]
NTP=gateway.geanmartins.net
# Deixar FallbackNTP vazio garante que o cliente use EXCLUSIVAMENTE o gateway
FallbackNTP=
Reinicie o serviço e ative a sincronização de tempo do sistema:
sudo systemctl restart systemd-timesyncd
sudo systemctl enable systemd-timesyncd
# Ativa a sincronização no nível do sistema operacional
sudo timedatectl set-ntp true
Verifique o status detalhado:
timedatectl timesync-status
Saída esperada:
Server: 10.48.1.1 (gateway.geanmartins.net)
Poll interval: 34min 8s (min: 32s; max: 34min 8s)
Leap: normal
Version: 4
Stratum: 4
Reference: XXXX
Precision: 1us
Root distance: 25.1ms
Offset: +0.523ms
Se uma máquina virtual foi iniciada com a data e hora muito desatualizadas (ex: meses de diferença), os clientes NTP podem se recusar a sincronizar por questões de segurança (prevenção de "pânico temporal").
Para forçar a correção manual da data antes de iniciar o NTP:
# 1. Pare o serviço NTP temporariamente
sudo systemctl stop chronyd
# ou
sudo systemctl stop systemd-timesyncd
# 2. Desabilite a sincronização automática
sudo timedatectl set-ntp false
# 3. Ajuste a hora manualmente para algo próximo do real (Formato: YYYY-MM-DD HH:MM:SS)
sudo timedatectl set-time "2026-04-03 15:10:00"
# 4. Reative a sincronização automática
sudo timedatectl set-ntp true
# 5. Reinicie o serviço NTP
sudo systemctl start chronyd
# ou
sudo systemctl start systemd-timesyncd