você está aqui: Home  → Colunistas  →  Sysadmin

Sincronizando o relógio de seu micro com o NTP.br

Colaboração: Antonio M. Moreiras

Data de Publicação: 27 de Janeiro de 2008

Por que sincronizar o relógio do meu micro?

O tempo sempre avança e muitos programas de computador fazem uso disso e podem ter seu funcionamento comprometido se o relógio do computador inesperadamente passar a indicar um horário errado, especialmente se for um horário no passado. Isso se complica ainda mais na Internet, com vários computadores trocando informações entre si!

Infelizmente os relógios dos computadores são imprecisos e se adiantam ou se atrasam com o passar do tempo. É muito fácil também trocar seu horário para o passado ou para o futuro, mesmo acidentalmente.

Como exemplos de aplicações afetadas pelo tempo pode-se citar:

  • Sistemas de distribuição de conteúdo (www, usenet news, etc): Utilizam estampas de tempo para controlar a expiração dos documentos e o cache. Servidores com o tempo errado podem causar perda de informações ou impedir o acesso às mesmas.

  • Sistemas de arquivos (filesystems): Alguns eventos importantes como a criação e modificação de arquivos são marcados por estampas de tempo. Algumas aplicações lêem essas informações e delas dependem. Se alguma dessas datas estiver no futuro, as aplicações podem agir de forma indevida, ou mesmo deixar de funcionar por completo. Como exemplos de aplicações sensíveis a essa situação pode-se citar os sistemas de controle de versão (como o cvs), sistemas de compilação automática (make), sistemas de backup de dados e sistemas de banco de dados.

  • Agendadores de eventos: Aplicações como o cron e o at dos sistemas unix dependem do tempo correto para funcionarem.

  • Criptografia: Muitas técnicas criptográficas fazem uso de estampas de tempo para os eventos e chaves para prevenir alguns tipos de ataques. Se os computadores envolvidos não estiverem sincronizados entre si, a autenticação e comunicação criptografada podem falhar.

  • Protocolos de comunicação e aplicações de tempo real: Essas aplicações, que incluem as Interfaces Gráficas, fazem uso de filas de eventos, timeouts, timers, e outros recursos de software ligados ao tempo. Para seu correto funcionamento é necessário garantir a monotonicidade, uma boa resolução, e a continuidade (ausência de saltos) no tempo.

  • Sistemas transacionais e bancos de dados distribuidos: Dependem de relógios exatos e muitas vezes, de sua sincronia com a hora legal. Como exemplo dessas aplicações pode-se citar o Home Banking, o Home Broker, os sistemas EDI, etc. As bolsas de valores, por exemplo, tem horários bem definidos de início e término do pregão. A Receita Federal aceita as declarações de Imposto de Renda geralmente até a meia noite da data limite para a entrega.

O que é o NTP?

O NTP é um protocolo para sincronização dos relógios dos computadores via rede, ou seja, ele define uma forma para os computadores conversarem entre si e acertarem seus relógios, baseados em alguma fonte precisa de tempo, como por exemplo relógios atômicos.

Se corretamente utilizado, ele é capaz de garantir as propriedades necessárias ao relógio do computador para o bom funcionamento das aplicações. Num primeiro momento isso pode parecer algo muito simples: "consultar o tempo em um servidor" e "ajustar o relógio local" de tempos em tempos. Mas na verdade o NTP faz muito mais do que isso. Diversos componentes do sistema colaboram para:

  • Obter, à partir de diversas amostras, informações de tempo de um determinado servidor, como o deslocamento, dispersão e variação.
  • Discernir, dentre um conjunto de servidores, quais fornecem o tempo correto e quais estão mentindo.
  • Escolher, dentre os servidores que fornecem o tempo correto, qual é a melhor referência.
  • Disciplinar o relógio local, descobrindo seus principais parâmetros de funcionamento e ajustando-o de forma contínua e gradual, mesmo na ausência temporária de referências de tempo confiáveis, para que tenha e melhor exatidão possível.
  • Garantir a monotonicidade do tempo.
  • Identificar, à partir de métodos criptográficos, servidores de tempo conhecidos e confiáveis, evitando possíveis ataques.
  • Formar, em conjunto com outros servidores NTP, uma topologia simples, confiável, robusta e escalável para a sincronização de tempo.

O que é o NTP.br?

O NTP.br é um projeto do NIC.br(www.nic.br) que fornece a Hora Legal Brasileira através dos servidores NTP: a.ntp.br, b.ntp.br e c.ntp.br.

O projeto é fruto de um acordo entre o NIC.br e o Observatório Nacional (ON - www.on.br), que é quem tem a responsabilidade legal de fornecer a hora aqui no Brasil. O ON disponibiliza para o NTP.br o sincronismo à Hora Legal Brasileira: seguro, confiável, rastreável e auditável.

Para conhecer mais sobre o NTP.br acesse o site http://www.ntp.br.

Sincronizando seu computador

Se você usa o GNU/Linux, o FreeBSD ou similar deve instalar o daemon ntpd. Consulte a documentação da sua distribuição para saber como fazer isso. O site do NTP.br (www.ntp.br) possui instruções detalhadas para a instalação.

Não use o comando ntpdate, ele está desatualizado e deve desaparecer nas próximas versões do NTP. Use o daemon ntpd, que implementa o protocolo em sua versão completa. Ele é mais robusto e confiável e permitirá manter seu relógio mais próximo da hora correta, mesmo se houver perda temporária de conectividade com os servidores.

A configuração recomendada é a seguinte:

  # "memoria" para o escorregamento de frequencia do micro
  # pode ser necessario criar esse arquivo manualmente com
  # o comando touch ntp.drift
  driftfile /etc/ntp.drift
  
  # estatisticas do ntp que permitem verificar o historico
  # de funcionamento e gerar graficos
  statsdir /var/log/ntpstats/
  statistics loopstats peerstats clockstats
  filegen loopstats file loopstats type day enable
  filegen peerstats file peerstats type day enable
  filegen clockstats file clockstats type day enable
  
  # servidores publicos do projeto ntp.br
  server a.ntp.br iburst
  server b.ntp.br iburst
  server c.ntp.br iburst
  
  # outros servidores
  # server outro-servidor.dominio.br iburst
  
  # configuracoes de restricao de acesso
  restrict default kod notrap nomodify nopeer
  

Se você usa Windows, pode utilizar o mesmo software usado no Linux, escrito por David Mills, que é o "pai" desse protocolo. A forma mais simples de fazê-lo é baixar um instalador feito pela empresa Meinberg nesse endereço: http://www.meinberg.de/download/ntp/windows/ntp-4.2.4p4@1.1520-modena-o-win32-setup.exe.

O instalador é bastante simples, basta seguir as instruções na tela e configurar os servidores: a.ntp.br, b.ntp.br e c.ntp.br. É necessário ter direitos de administrador no computador para fazer a instalação e ela pode não funcionar se seu computador fizer parte de um domínio. O site www.ntp.br tem mais detalhes e um tutorial em vídeo mostrando essa instalação.

Outros servidores NTP públicos

Se você quiser acrescentar outros servidores à sua configuração verifique:

Para saber mais

  • http://www.ntp.br: Serviço NTP do NIC.br. Neste site pode ser encontrada documentação sobre o NTP e sobre o serviço prestado pelo NIC.br.
  • http://www.on.br: Página do Observatório Nacional. O ON tem como atribuição legal a geração, conservação e disseminação da Hora Legal Brasileira.
  • http://pcdsh01.on.br: Divisão do Serviço da Hora do Observatório Nacional. O ON possui um serviço de NTP público.
  • http://www.ntp.org: Página oficial do projeto NTP.

 

 

Veja a relação completa dos artigos desta coluna