SSD Nodes Learn Hosting plans →
Guias Matt ConnorPor Matt Connor

Qual servidor NTP usar no Brasil: NTP.br, chrony e NTS

Aponte seu VPS para o NTP.br com chrony e NTS, configure o PDC emulator do Active Directory com w32tm e entenda por que três horas de diferença não é culpa do NTP.

Qual servidor NTP usar no Brasil

Para saber qual servidor NTP usar no Brasil, a resposta curta é: o NTP.br. Num VPS com Linux, aponte o chrony para os servidores stratum 1 do NTP.br com a opção nts. Num domínio Active Directory, só o PDC emulator do domínio raiz da floresta consulta o NTP.br, e os outros controladores seguem a hierarquia do domínio.

O NTP.br é o serviço de hora do NIC.br. Ele funciona por um acordo com o Observatório Nacional (ON), que a página do projeto descreve como a entidade legalmente responsável pelo padrão de tempo nacional, a Hora Legal Brasileira. A fonte que você configura no servidor fica ligada à mesma referência que define a hora oficial do país.

Dois termos aparecem o tempo todo neste guia. NTP (Network Time Protocol) é o protocolo que acerta o relógio pela rede. NTS (Network Time Security) acrescenta autenticação ao NTP: o cliente consegue verificar que a resposta veio do servidor certo e não foi alterada no caminho. Uma resposta NTP comum, sem NTS, não carrega nenhuma prova de origem.

Os servidores do NTP.br, e quais oferecem NTS

A página inicial do ntp.br traz uma tabela com as colunas Nome, IP e NTS. Em 20 de outubro de 2026, ela listava estes nomes:

a.st1.ntp.br
c.st1.ntp.br
d.st1.ntp.br
e.st1.ntp.br
a.ntp.br
b.ntp.br
c.ntp.br
gps.nu.ntp.br
gps.jd.ntp.br
gps.ce.ntp.br

Configure sempre o nome, nunca o IP. Se o NTP.br trocar um endereço, o nome continua apontando para o lugar certo, e o seu arquivo de configuração não precisa mudar.

O NTP.br diz que já oferece NTS nos seus servidores stratum 1 e recomenda que todos usem NTS sempre que possível. Stratum é a distância até o relógio de referência. Um servidor stratum 1 está ligado diretamente a uma referência de hora, e um stratum 2 copia a hora de um stratum 1. A página não diz, em texto, quais linhas da tabela são stratum 1. O st1 no nome sugere isso, mas a forma segura de confirmar é perguntar ao próprio chrony, como mostramos mais abaixo. Antes de copiar a lista, abra ntp.br e confira a coluna NTS da tabela, porque a lista pode mudar.

Um detalhe da tabela confunde muita gente. Na linha do d.st1.ntp.br, o traço aparece no lugar do endereço IPv6. Isso quer dizer que esse nome só tem endereço IPv4. Não quer dizer que falta NTS. Se o seu VPS só tem conectividade IPv6, escolha outros nomes da lista.

Por que o relógio do VPS precisa de uma fonte confiável

O relógio de uma máquina virtual deriva, e a sincronização corrige essa deriva. O artigo sobre por que o relógio de um VPS deriva e como a sincronização funciona explica o mecanismo em detalhe. Aqui, o que importa é a consequência prática. Logs de servidores diferentes só se alinham se os relógios concordam. Códigos de dois fatores baseados em hora (TOTP) falham quando o relógio do servidor está longe da hora do celular. A validade de um certificado TLS (transport layer security) é verificada contra o relógio local.

Uma fonte sem autenticação é um ponto fraco nessa cadeia. Por isso o NTS vale o pequeno esforço extra de configuração.

Configurar o chrony com NTS no Ubuntu 24.04

A documentação do Ubuntu Server diz que o chrony vem instalado por padrão a partir do Ubuntu 25.10, e que ele já ativa o NTS por padrão usando os pools NTS do Ubuntu. No Ubuntu 24.04, depende da imagem. Numa instalação padrão, o cliente de hora é o systemd-timesyncd, que o chrony substituiu como padrão no 25.10. Já nas nuvens públicas, o Ubuntu informa que o chrony vem pré-instalado nas imagens Ubuntu de provedores como GCP, AWS e Azure. A imagem do seu VPS pode seguir qualquer um dos dois caminhos. Instale o chrony de qualquer forma; se ele já estiver lá, o comando não muda nada:

sudo apt update
sudo apt install -y chrony

Mantenha apenas um cliente de hora ativo na máquina. Confira o estado dos dois serviços:

systemctl is-active chrony systemd-timesyncd

A primeira linha da saída deve ser active, que é o chrony. Se a segunda linha também mostrar active, desative o systemd-timesyncd:

sudo systemctl disable --now systemd-timesyncd

No Ubuntu 24.04, o arquivo /etc/chrony/chrony.conf vem com linhas pool que apontam para ntp.ubuntu.com e para o ubuntu.pool.ntp.org, sem nts. O mesmo arquivo manda o chrony ler fontes extras do diretório /etc/chrony/sources.d. Crie ali um arquivo só para o NTP.br:

sudo tee /etc/chrony/sources.d/ntp-br.sources > /dev/null <<'EOF'
server a.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
EOF

A opção nts ativa a autenticação por Network Time Security nessa fonte. A opção iburst faz o chrony começar com uma rajada de 4 a 8 pedidos, então o primeiro ajuste do relógio acontece mais cedo. Quatro fontes deixam o chrony comparar as respostas e descartar uma que esteja errada.

Agora desative os pools padrão do Ubuntu e reinicie o serviço:

sudo sed -i 's/^pool /#pool /' /etc/chrony/chrony.conf
sudo systemctl restart chrony

Se você deixar os pools ativos, o chrony continua usando também essas fontes sem autenticação. Comentar as linhas faz com que as fontes NTS do NTP.br sejam as únicas.

A configuração padrão já define o ntsdumpdir, o diretório onde o chrony guarda os cookies NTS recebidos do servidor. Com os cookies salvos, o chrony não precisa refazer a troca de chaves depois de um reinício.

No Ubuntu 25.10 e posteriores, as fontes NTS padrão ficam em /etc/chrony/sources.d/ubuntu-ntp-pools.sources. Para usar o NTP.br nessas versões, edite esse arquivo ou coloque o seu ao lado dele. Depois de mudar arquivos .sources, sudo chronyc reload sources faz o chrony reler todos eles sem reiniciar.

Como confirmar que o NTS está funcionando

Três comandos mostram o estado completo:

chronyc -N sources
sudo chronyc -N authdata
chronyc tracking

A opção -N faz o chronyc mostrar os nomes originais das fontes, em vez de só os endereços IP. Em chronyc -N sources, o ^ indica um servidor. O * marca a melhor fonte, a que está em uso agora. O + marca outras fontes combinadas com a melhor. O - indica uma fonte aceitável, mas não selecionada. O x indica uma fonte que o chrony considera errada (falseticker), e o ? indica uma fonte que não pode ser usada por outro motivo. Uma linha ^* com um nome do NTP.br é o resultado saudável.

Em chronyc -N authdata, cada fonte com NTS funcionando mostra NTS na coluna Mode e valores diferentes de zero em KeyID, Type e KLen. A coluna Atmp mostra quantas tentativas de troca de chaves aconteceram desde a última que deu certo, então um número que só cresce indica que a troca de chaves está falhando. A coluna NAK mostra se o servidor recusou um pedido NTS.

Se uma fonte não mostra NTS, verifique primeiro a porta TCP 4460 (próxima seção). Se a porta está liberada e uma fonte continua sem NTS, troque esse nome por outro da tabela do ntp.br, ou retire o nts só dessa linha e aceite que ela fica sem autenticação.

chronyc tracking mostra o desempenho do relógio do sistema, incluindo a fonte de referência e a diferença atual em relação a ela.

Portas de firewall para NTP com NTS: UDP 123 e TCP 4460

O NTS trabalha em duas etapas. Primeiro vem o NTS-KE (key establishment), a troca de chaves: o cliente se conecta na porta TCP 4460 do servidor, por uma conexão TLS. Depois, os pacotes de hora usam a porta normal do NTP, a UDP 123. A documentação do Ubuntu cita as duas portas. As duas são conexões de saída do seu servidor.

Se você configurou o ufw para bloquear também o tráfego de saída, libere as duas:

sudo ufw allow out 123/udp
sudo ufw allow out 4460/tcp

O guia de regras básicas de firewall com ufw em um VPS explica a diferença entre política de entrada e de saída. Lembre também do firewall de rede do provedor, que na maioria dos painéis é um controle separado do firewall do sistema. Uma rede que libera só a UDP 123 para NTP deixa a hora passar, mas bloqueia a troca de chaves.

Existe um caso especial. A validação TLS do NTS confere as datas de validade dos certificados, e essas datas são comparadas com o relógio local. Uma máquina que liga com o relógio muito errado pode não conseguir validar o certificado do servidor. O chrony.conf tem a diretiva nocerttimecheck para esse caso, mas o manual avisa que ela tem implicações de segurança importantes e deve ser o último recurso. Leia a página man chrony.conf antes de usar.

Alternativa sem NTS: systemd-timesyncd

Se você não quer instalar o chrony, o systemd-timesyncd que vem no Ubuntu 24.04 também consegue usar o NTP.br. A diferença é a segurança: a página de manual do timesyncd.conf não documenta nenhuma opção de NTS. O timesyncd fala NTP comum, sem autenticação.

A opção NTP= recebe uma lista de nomes separados por espaço. Use um arquivo drop-in, para que uma atualização do pacote não sobrescreva a sua mudança:

sudo mkdir -p /etc/systemd/timesyncd.conf.d
printf '[Time]\nNTP=a.ntp.br b.ntp.br c.ntp.br\n' | sudo tee /etc/systemd/timesyncd.conf.d/ntp-br.conf
sudo systemctl restart systemd-timesyncd
timedatectl timesync-status

timedatectl timesync-status mostra o estado do systemd-timesyncd. Confira se o servidor em uso é um dos nomes do NTP.br. Essa alternativa serve para máquinas pequenas e de baixo risco. Para um servidor de produção, prefira o chrony com NTS.

Docker: o container usa o relógio do host

Um container não tem relógio próprio. Ele lê o relógio do kernel do host, então quem precisa de NTP é o host, não o container. Não instale um cliente NTP dentro da imagem. O que muda de um container para outro é o fuso horário, que é outra configuração. O guia sobre a variável TZ e a hora dentro de containers no Docker Compose mostra como acertar isso.

Windows Server e Active Directory: só o PDC emulator usa o NTP.br

Num domínio Active Directory, a Microsoft descreve a hierarquia assim: os computadores do domínio sincronizam a hora pela hierarquia do domínio, com o tipo de cliente NT5DS. A exceção é o controlador de domínio que tem o papel de PDC emulator (primary domain controller emulator) do domínio raiz da floresta. Só ele é configurado para buscar a hora numa fonte externa. Numa floresta com vários domínios, o PDC emulator de cada domínio filho continua seguindo a hierarquia.

No PDC emulator do domínio raiz, abra o Prompt de Comando como administrador e aponte para o NTP.br:

w32tm /config /manualpeerlist:"a.st1.ntp.br,0x8 c.st1.ntp.br,0x8 e.st1.ntp.br,0x8" /syncfromflags:manual /update
w32tm /resync
w32tm /query /source
w32tm /query /status

Os nomes vão entre aspas e separados por espaço. O sufixo 0x8 é a flag Client: o W32Time consulta esse servidor no modo cliente. A Microsoft recomenda, desde o Windows Server 2016, usar três ou mais servidores quando o cliente aponta para vários peers. Por isso a lista tem três nomes. Se você usar só dois, a Microsoft indica marcar um deles com 0x2 (UseAsFallbackOnly), para que ele fique só como reserva.

w32tm /query /source deve mostrar um dos nomes do NTP.br. w32tm /query /status mostra o stratum, a última sincronização bem-sucedida e o último erro.

Os outros controladores de domínio não recebem nenhuma configuração manual. Se alguém configurou peers manuais em outro DC, devolva-o à hierarquia do domínio:

w32tm /config /syncfromflags:domhier /update
net stop w32time
net start w32time

Duas limitações precisam entrar no planejamento. Primeiro, o cliente NTP do W32Time só usa a porta UDP 123 também como porta de origem. Uma regra de firewall que só permite NTP saindo de portas de origem altas bloqueia esse tráfego. Segundo, a documentação da Microsoft descreve o W32Time só sobre UDP 123 e não mostra nenhuma opção de NTS. A página do NTP.br sobre NTP cita servidores Windows como exemplo de sistema operacional que ainda não tem cliente com suporte a NTS. Se você precisa de autenticação na borda, uma saída é um servidor Linux interno com chrony e NTS sincronizando com o NTP.br, e servindo a hora para a rede interna com a diretiva allow. O PDC emulator então aponta para esse servidor interno. Nesse desenho, tenha mais de um servidor interno, porque a recomendação de três fontes continua valendo.

Três horas de diferença não é problema de NTP

O NTP transporta a hora em UTC (tempo universal coordenado). Ele não sabe nada sobre fuso horário. Se o relógio do servidor mostra três horas a mais que o seu relógio de pulso, o NTP provavelmente está certo: o sistema é que está em UTC, e não no fuso de Brasília. No banco de dados de fusos (tzdata), America/Sao_Paulo fica em UTC-3.

Confira a hora e o fuso de uma vez:

timedatectl

A linha Time zone mostra o fuso atual, e a linha System clock synchronized mostra se o relógio está sincronizado. Para ver os fusos do Brasil sem decorar a lista, leia o arquivo de fusos do tzdata:

awk -F'\t' '$1 ~ /(^|,)BR(,|$)/ {print $3}' /usr/share/zoneinfo/zone1970.tab
timedatectl list-timezones | grep '^America/'
sudo timedatectl set-timezone America/Sao_Paulo

O awk mostra os fusos associados ao código BR. O timedatectl list-timezones lista os nomes que o set-timezone aceita, um por linha. Escolha o fuso da cidade onde o servidor atende, não necessariamente o de São Paulo. O guia completo sobre como definir o fuso horário de um servidor Linux cobre as aplicações que leem o fuso por conta própria.

O horário de verão no Brasil foi abolido em 2019. O próprio tzdata registra isso num comentário: "Brazil no longer has DST changes - decree signed today". Se o governo mudar a regra no futuro, a mudança chega ao servidor Linux por uma nova versão do pacote tzdata. Mantenha o sistema atualizado com sudo apt update && sudo apt upgrade e o fuso acompanha a lei, sem você mexer em nada. O Windows não usa o pacote tzdata: ele guarda as regras de fuso no registro e recebe as mudanças pelas próprias atualizações do sistema, e a Microsoft recomenda usar o Windows Update para isso. No Windows, w32tm /tz mostra a configuração de fuso atual.

E se o servidor estiver em Portugal?

Para leitores em Portugal, o caminho mais simples é a zona portuguesa do NTP Pool. Em 20 de outubro de 2026, a página da zona pt recomendava 3.pt.pool.ntp.org, com 2.europe.pool.ntp.org e 0.europe.pool.ntp.org como complemento. No chrony, nomes de pool usam a diretiva pool:

pool 3.pt.pool.ntp.org iburst
pool 0.europe.pool.ntp.org iburst

Essas linhas ficam sem nts, porque a página da zona não fala em NTS. O fuso de Portugal continental é Europe/Lisbon, e a regra das três horas acima vale do mesmo jeito: confira o fuso antes de culpar o NTP.

FAQ

Qual servidor NTP do Brasil tem NTS?

O NTP.br diz que oferece NTS nos seus servidores stratum 1 e recomenda usar NTS sempre que possível. Os nomes com st1, como a.st1.ntp.br e c.st1.ntp.br, são os candidatos naturais. Confira a coluna NTS na tabela de ntp.br e confirme no seu servidor com sudo chronyc -N authdata: uma fonte com NTS funcionando mostra NTS na coluna Mode e valores diferentes de zero em KeyID, Type e KLen.

Quais portas preciso liberar para usar NTP com NTS?

Duas portas de saída. A TCP 4460 é usada pela troca de chaves NTS-KE, que roda sobre TLS. A UDP 123 é a porta normal do NTP, usada pelos pacotes de hora depois da troca de chaves. Libere as duas no firewall do sistema e no firewall de rede do provedor. Se só a UDP 123 estiver liberada, a troca de chaves falha e a coluna Atmp de chronyc -N authdata não para de crescer.

Como configurar o controlador de domínio do Active Directory para usar o NTP.br?

Configure só o PDC emulator do domínio raiz da floresta. Rode w32tm /config /manualpeerlist:"a.st1.ntp.br,0x8 c.st1.ntp.br,0x8 e.st1.ntp.br,0x8" /syncfromflags:manual /update e depois w32tm /resync. Os outros DCs e os computadores do domínio seguem a hierarquia do domínio por padrão. A Microsoft recomenda três ou mais servidores quando o cliente aponta para vários peers.

O Windows Server consegue usar NTS com o NTP.br?

A documentação da Microsoft descreve o W32Time usando NTP sobre UDP 123 e não mostra nenhuma opção de NTS. A página do NTP.br cita servidores Windows como exemplo de sistema que ainda não tem cliente NTS. Para ter autenticação, use um servidor Linux interno com chrony e NTS sincronizando com o NTP.br, e aponte o PDC emulator para ele.

Por que meu servidor mostra a hora com três horas de diferença?

Porque o sistema está em UTC, e não no fuso do Brasil. O NTP sempre entrega UTC, e o fuso é uma configuração local. Rode timedatectl e veja a linha Time zone. Para corrigir, use sudo timedatectl set-timezone America/Sao_Paulo, ou o fuso da sua cidade. O Brasil não tem horário de verão desde 2019. Se a regra mudar, a atualização chega pelo pacote tzdata no Linux e pelo Windows Update no Windows.

#ntp#chrony#nts#brasil#windows-server#time-sync