Uma característica básica e ao mesmo tempo importante do tempo é que ele sempre avança. O tempo não para e não volta para trás. Vários programas de computador fazem uso dessa característica 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 em servidores e 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.
O NTP é um protocolo para sincronização dos relógios dos computadores, ou seja, ele define um jeito para um grupo de computadores conversar entre si e acertar seus relógios, baseados em alguma fonte precisa de tempo, como os relógios atômicos do Observatório Nacional, que definem a Hora Legal Brasileira.
Em sua versão mais completa, o NTP é bastante robusto e preciso. Ele consulta vários outros computadores para saber a hora certa, e consegue distinguir os que falam a verdade e os que estão enganados. Ele também aprende se o relógio de seu computador é viciado em adiantar-se ou atrasar-se e usa essa informação para ajustá-lo constantemente.
Com o NTP é fácil manter o relógio do computador sempre com a hora certa, com exatidão de alguns milésimos de segundo, e só há vantagens em se fazer isso!
O NTP.br através de seus servidores públicos ajuda a manter seu computador sincronizado com a Hora Legal Brasileira e com o Tempo Universal Coordenado (UTC). Siga as instruções do seu equipamento ou sistema operacional e utilize os servidores do NTP.br, ou consulte os próximos itens, para algumas configurações mais comuns.
Os servidores do NTP.br são os seguintes:
Nome | Endereço |
---|---|
a.st1.ntp.br | 200.160.7.186 e 2001:12ff:0:7::186 |
b.st1.ntp.br | 201.49.148.135 |
c.st1.ntp.br | 200.186.125.195 |
d.st1.ntp.br | 200.192.232.8 |
a.ntp.br | 200.160.0.8 e 2001:12ff::8 |
b.ntp.br | 200.189.40.8 |
c.ntp.br | 200.192.232.8 |
gps.ntp.br | 200.160.7.193 e 2001:12ff:0:7::193 |
Instalação para GNU/Linux e outros sistemas baseados em Unix.
Para GNU/Linux, FreeBSD, OpenBSD e outros sistemas baseados em Unix, utilize o método de instalação apropriado para sua distribuição. Para algumas distribuições a tabela abaixo indica uma das possíveis formas de instalação. Pode haver métodos alternativos para a instalação, por isso é recomendável consultar a documentação da sua distribuição.
Pode-se também realizar a instalação manual, baseada nos fontes. Se você estiver instalando o ntp com a finalidade de ser um servidor de tempo para sua rede, é recomendável fazer a instalação à partir dos fontes.
Sistema | Instalação |
---|---|
Debian GNU/Linux e sistemas que usam apt. (Ubuntu, Mint, Elementay OS, etc) |
# apt-get install ntp |
RedHat GNU/Linux e sistemas que usam rpm (Fedora, etc): | # yum install ntp |
Gentoo GNU/Linux: | # emerge ntp |
Slackware GNU/Linux: | # slackpkg install ntp |
FreeBSD e OpenBSD | # cd /usr/ports/net/ntp # make install |
As distribuições acima podem ter métodos alternativos para a instalação, verifique a documentação de sua distribuição. Para outras distribuições verifique o método de instalação recomendado na documentação.
Após instalar o ntp, crie o arquivo ntp.drift com o comando:
# touch /etc/ntp.drift
Se a hora de seu computador estiver com um erro maior do que 16min o ntp pode não funcionar. Se for o caso, ajuste a hora manualmente, antes de iniciar o ntpd. Ou então execute o ntpd com os parâmetros abaixo, para um primeiro ajuste, e depois inicie o serviço:
# ntpd -q -g
Edite o Arquivo de Configuração do NTP
Substitua o conteúdo do arquivo de configuração padrão /etc/ntp.conf
pela configuração abaixo. Você poderá fazer isso com o seu editor de texto favorito com o Vi, Nano ou Gedit (Gedit apenas se possuir interface).
# "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 iburts server d.st1.ntp.br iburst server gps.ntp.br iburst server a.ntp.br iburst server b.ntp.br iburst server c.ntp.br iburst # outros servidores # server outro-servidor.dominio.br iburst # Configurações de Restrição de Acesso restrict default kod notrap nomodify nopeer noquery restrict -6 default kod notrap nomodify nopeer noquery # A configuração do NTP permite restringir o acesso a máquinas/redes. # Tal configuração é realizada através do parâmetro restrict. # Por exemplo, caso pretende que a máquina 192.168.0.70 não use o serviço NTP, # deverá indicar a seguinte configuração.
# restrict 127.0.0.1 # restrict 192.168.0.70 # restrict ::1
# Em nosso caso vamos restringir apenas o próprio servidor de consultar a si mesmo. # (pois ele busca nos servidores públicos da internet previamente definidos).
restrict 127.0.0.1
restrict ::1
# desabilitar comando monlist disable monitor
disable monitor
Reinicie o Serviço do NTP
Após modificar a configuração é preciso reiniciar o ntpd.
Faça isso com o comando:
sudo /etc/init.d/ntp restart
Ferramentas de Monitoramento do NTP
O ntp traz consigo algumas ferramentas que permitem monitorar seu funcionamento. A mais importante é o ntpq. A seguir são apresentados dois comandos do ntpq que permitem visualizar algumas variáveis importantes do ntp:
ntpq -c pe
Se for obtida uma resposta como:
# ntpq -c pe ntpq: read: Connection refused (Ou timeout)
Significa que o serviço ntp não está funcionando. Uma reposta normal se parece com essa:
remote refid st t when poll reach delay offset jitter ================================================================================ +a.ntp.br 200.160.7.192 2 u 10 64 337 294.756 35.596 0.521 +b.ntp.br 200.160.7.186 2 u 8 64 377 226.294 2.658 0.229 *c.ntp.br 200.160.7.192 2 u - 64 377 208.758 4.026 0.424
Pode-se ver os 3 servidores do projeto ntp.br:
remote refid st t when poll reach delay offset jitter ================================================================================ +a.ntp.br 200.160.7.192 2 u 10 64 337 294.756 35.596 0.521 +b.ntp.br 200.160.7.186 2 u 8 64 377 226.294 2.658 0.229 *c.ntp.br 200.160.7.192 2 u - 64 377 208.758 4.026 0.424
O * em c.ntp.br significa que ele foi escolhido como system peer, ou seja, a principal referência na sincronização do sistema. Os + em a.ntp.br e b.ntp.br, significa que eles também estão sendo usados, mas com peso menor, para obter a hora certa.
Pode-se observar também o offset, ou deslocamento, delay, ou atraso, e o jitter, ou variação, todos em milisegundos:
remote refid st t when poll reach delay offset jitter ================================================================================ +a.ntp.br 200.160.7.192 2 u 10 64 337 294.756 35.596 0.521 +b.ntp.br 200.160.7.186 2 u 8 64 377 226.294 2.658 0.229 *c.ntp.br 200.160.7.192 2 u - 64 377 208.758 4.026 0.424
O delay significa o tempo de ida e volta dos pacotes. O valor do atraso não é tão importante, mas o ntp é sensível à simetria da rede. Ou seja, o ntp espera que o tempo de ida dos pacotes seja igual ao da volta. Isso geralmente está relacionado a atrasos pequenos.
O deslocamento significa o quanto o relógio local tem de ser adiantado ou atrasado para se igualar ao relógio do servidor. Quanto menor o valor, melhor. Valores de alguns milisegundos podem ser considerados normais.
A variação é calculada à partir de diversas medidas de deslocamento. Representa o quanto essas medidas variam entre si. Valores pequenos são melhores. Valores grandes podem indicar problemas de conectividade.
A variável reach é um número octal que indica o resultado das últimas 8 tentativas de acesso ao servidor.
remote refid st t when poll reach delay offset jitter ================================================================================ +a.ntp.br 200.160.7.192 2 u 10 64 337 294.756 35.596 0.521 +b.ntp.br 200.160.7.186 2 u 8 64 377 226.294 2.658 0.229 *c.ntp.br 200.160.7.192 2 u - 64 377 208.758 4.026 0.424
O valor 377 indica que as últimas 8 consultas ao servidor obtiveram sucesso. Outros valores indicam falhas.
# ntpq -c rl associd=0 status=0614 leap_none, sync_ntp, 1 event, freq_mode, version="ntpd 4.2.6p3@1.2290-o Mon Apr 13 13:41:30 UTC 2015 (1)", processor="x86_64", system="Linux/3.2.0-84-generic", leap=00, stratum=2, precision=-22, rootdelay=30.974, rootdisp=28.562, refid=201.49.148.135, reftime=d92aa981.213209a5 Tue, Jun 16 2015 10:56:17.129, clock=d92aaa04.938057ef Tue, Jun 16 2015 10:58:28.576, peer=22647, tc=6, mintc=3, offset=24.223, frequency=4.643, sys_jitter=3.047, clk_jitter=7.476, clk_wander=1.642
Dentre as várias informações obtidas, pode-se destacar a versão do ntp, em verde; o estrato, em vermelho (2 ou 3 são o níveis esperados, já que os servidores públicos do ntp.br são estrato 2); e o deslocamento, em milisegundos, em azul, que indica quanto o relógio local tem de ser adiantado ou atrasado para chegar à hora certa.
Configurando Clientes em Sua Rede
O Processo de configuração dos clientes de sua rede é idêntico.
A única diferença é que no arquivo de configuração do ntp deve-se apontar o servidor interno de sua rede ao invés dos públicos do ntp.
Então se nosso servidor configurado tem o IP 192.168.0.200, basta apontar isso no arquivo do cliente /etc/ntp.conf
# servidores publicos do projeto ntp.br
server 192.168.0.200
No Ubuntu por exemplo o pacote ntp já vem instalado e configurado. Então quando você instala o Ubuntu, ele já define seu horário UTC, que você escolheu na instalação pela sua região e assim ele busca o horário correto conforme o servidor NTP da Cananical, que são os seguintes abaixo (que podem ser consultados em /etc/ntp.conf).
server 0.ubuntu.pool.ntp.org
server 1.ubuntu.pool.ntp.org
server 2.ubuntu.pool.ntp.org
server 3.ubuntu.pool.ntp.org
Mas você pode mudar isso se quiser e usar um horário definido manualmente o que não é nem um pouco recomendado.
No Windows
No Windows você pode clicar no relógio e acertar a hora manualmente ou definir um horário da internet apontando para algum destes servidores ntp citados ou o seu próprio servidor ntp interno.
Conclusão
Agora você possui um servidor de NTP em seu Linux, e pode definir em máquinas clientes a mesma coisa.
É isso aí pessoal, agora não deixem seus servidores e desktops com a hora errada!
Abraços,
Cleuber
Fonte: ntp.br