Muito comumente utilizado em nosso dia a dia, mesmo passando desapercebido, o servidor NTP (Network Time Protocol) prove através de seus algorítimos a hora certa em servidores pela rede, seja ela uma rede Intranet ou a própria Internet.

O órgão gestor da internet no brasil NIC.br, prove em um de seus projetos o serviço de NTP para a rede brasileira, serviço no qual é de graça e incentivado a faze-lo pelo próprio comitê.

O uso da hora certa, não somente utilizado para fins óbvios de conhecer o tempo corrente, é muito importante para servidores (o que iremos nos limitar nesta postagem …) para manter em operação serviços como E-mail, Logs do Sistema, Segurança, Criptografia, Pacotes de Rede, Transações Web, Banco de dados e outros serviços críticos como transações bancárias e etc, que por sua vez teriam seus serviços comprometidos e ou alterados  com uma simples erro, atraso ou adiantamento da hora.

Não iremos nesta postagem abranger questões como “O que é o tempo ?”  “como medir o tempo ?” etc, pois existe uma referência muito boa no próprio site do NIC.br.

Protocolo NTP

Como citado acima NTP (Network Time Protocol) ou Protocolo de Tempo para Redes, permite a sincronização do tempo em servidores ou máquinas em uma rede, buscando em uma estrutura confiável de outros servidores NTP para obter a hora certa.

Uma das questões muito interessante no algoritmo NTP é que ele é baseado na RFC 1305, referência no qual especifica várias regras e algoritmos para poder sincronizar os serviços de hora certa em uma rede. Tal algoritmo especifica questões técnicas para descrever o protocolo NTP.

Existe ainda o protocolo SNTP (Simple Network Time Protocol), que é uma implementação mais simples do protocolo NTP, não seguindo a risca a referência RFC 1305. Este protocolo por não implementar todas as referências e algoritmos especificados possui uma imprecisão se comparada ao protocolo NTP, imprecisão na order de alguns milisegundos o que é aceitavel pelo comitê gestor internacional SI. Aplicações como OpenNTP, ntpdate e o relógio do Window, são baseados neste protocolo.

Instalando o Servidor NTP

A instalação do NTP pode ser feito de duas formas, uma buscando o pacote de referência em um dos repositórios de sua distribuição Linux ou compilando diretamente os fontes  para uma instalação manual. Em ambas as opções você obterá o mesmo resultado.

Quando falamos de Servidor NTP (ntpd no qual iremos utilizar) devemos ainda citar que ele é sim um servidor que prove as horas e ao mesmo tempo um cliente, pois ele também se referência em outros servidores NTP ou equipamentos para poder nortear a hora certa.

Em distribuições baseadas no Debian (Ubuntu) é possível efetuar a instalação através de seus repositórios com um simples  comando:


sudo apt-get install ntp

Para distribuições baseadas no Red hat(Fedora, CentOS) utilize o comando abaixo:


yum -i ntp

Para efetuar a instalação através do código fonte, primeiramente efetue o download do site da ultima versão como segue a orientação.


wget http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2.6p4.tar.gz

Descompacte o arquivo do download em um diretório de sua preferência e prepare para a compilação:

tar -zxvf ntp-4.2.6p4.tar.gz
cd ntp-4.2.6p4
./configure
make
make install

Crie um arquivo no diretório etc “/etc/ntp.conf” com o seguinte comando:


touch /etc/ntp.conf

Agora basta inserir o conteúdo abaixo para o arquivo criado:


# "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.st1.ntp.br iburst
server b.st1.ntp.br iburst
server c.st1.ntp.br iburst
server d.st1.ntp.br iburst

# configuracoes de restricao de acesso
restrict default kod notrap nomodify nopeer
restrict -6 default kod notrap nomodify nopeer

Na lista abaixo uma referência de endereços para ser utilizado no arquivo de configuração ntp.conf do serviço NTP expresso logo acima. O ideal é que seja usado no mínimo três referências de sincronismo NTP, sendo o ideal de quatro a sete referências.

  • a.st1.ntp.br
  • b.st1.ntp.br
  • c.st1.ntp.br
  • d.st1.ntp.br
  • a.ntp.br
  • b.ntp.br
  • c.ntp.br
  • gps.ntp.br
  • pool.ntp.br (Para versões recentes do ntpd)

Crie também o arquivo ntp.drift no diretório “/etc/ntp.drift” como segue abaixo:


touch /etc/ntp.drift

Agora vamos acertar a hora do sistema com o comando abaixo, e voltar para o prompt:


ntpd -q -g

Agora para inicializar em modo daemon basta executar o comando:


ntpd

Uma dica muito importante é, que caso você utilize algum tipo de firewall, o ntpd utiliza a porta 123, logo é preciso liberar tal porta para que serviço funcione corretamente.

Também é possivel no site ntp.br utilizar banners funcionais de apresentação da hora certa e coloca-los em teu site ou blog como segue abaixo:

Ex:



Referências

  • NIC.br (Núcleo de Informação e Coordenação do Ponto BR)
  • CEPTRO.br (Centro de Estudos e Pesquisas em Tecnologia de Redes e Operações)
  • NTP.br (Network Time Protocol)