Guia Linux/BSD


Instalação para GNU/Linux e outros sistemas baseados em Unix.

Atenção: Este tutorial foi realizado em um sistema Ubuntu 14.04 e outras distribuições podem ter processo de configuração diferente.

Para GNU/Linux, FreeBSD, OpenBSD e outros sistemas baseados em Unix, utilize o método de instalação apropriado para sua distribuição. Para alguns sistemas operacionais, a tabela abaixo indica possíveis formas de instalação. Podem haver métodos alternativos para a instalação, por isso é recomendável consultar a documentação da sua distribuição.


1. 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, porém a mesma deve ser atualizada manualmente sempre que uma nova versão for liberada pelos responsáveis pela aplicação. Sendo um super usuário, utilize o comando referente ao seu sistema operacional.

Sistema Instalação
Debian GNU/Linux e sistemas que usam apt (Ubuntu, Kurumin, Conectiva, etc) # apt-get update
# apt-get install ntp
RedHat GNU/Linux e sistemas que usam rpm (Fedora, etc): # yum install ntp
Gentoo GNU/Linux: # emerge sync
# emerge ntp
Slackware GNU/Linux: # slackpkg update
# slackpkg install ntp
FreeBSD e OpenBSD # cd /usr/ports/net/ntp
# make install

2. Após instalar o ntp, crie o arquivo ntp.drift com o comando:

	sudo touch /etc/ntp.drift


3. Se a hora de seu computador estiver com um erro maior do que 16 segundos, o ntp pode não funcionar. Caso isso aconteça, ajuste a hora manualmente, antes de iniciar o ntpd ou então realize os seguintes ajustes, para depois iniciar o serviço:

	sudo ntpd -q -g  

4. Substitua o conteúdo do arquivo de configuração padrão /etc/ntp.conf pela configuração abaixo.

# "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 histórico
# 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
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

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

# desabilitar comando monlist
disable monitor

É importante ressaltar que a linha disable monitor não deve ser comentada. Ela desabilita o comando monlist, que pode ser explorado para gerar ataques amplificados de negação de serviço.


5. Após modificar a configuração é preciso reiniciar o ntpd com o comando:

	sudo service ntp start

Pronto! Seu NTP já está funcionando e atualizando seu relógio de acordo com a Hora Legal Brasileira.

O mini tutorial em forma de video a seguir, demonstra como configurar seu NTPD através do repositório do Ubuntu:


Assista a um mini tutorial em vídeo feito em um sistema operacional Linux, mostrando como instalar o NTPD através do repositório do Ubuntu, fazendo-o funcionar como um cliente:




Instalação do NTP à partir dos fontes

Atenção: Este tutorial foi realizado em um sistema Ubuntu 14.04 e outras distribuições podem ter processo de configuração diferente.

A instalação à partir dos fontes permite trabalhar com a última versão do ntp. Permite também ter certeza de que se está rodando o software padrão, sem modificações de terceiros. Verifique no site do NTP http://www.ntp.org/downloads.html qual o link para o download da versão mais recente. No desenvolvimento desse tutorial, a versão mais recente era a 4.2.8p2. Tenha em mente que ele deve ser atualizado manualmente sempre que uma nova versão for liberada.


1. Faça o download do arquivo, descompacte-o, entre na pasta criada e então rode o script de configuração, compile e instale:

	wget http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2/ntp-4.2.8p2.tar.gz
	tar zxvf ntp-4.2.8p2.tar.gz
	cd ntp-4.2.8p2
	./configure
	make
	sudo make install

2. Será necessário parar o serviço, o que pode ser feito com o comando:
       sudo service ntp stop

3. Agora será necessário criar o arquivo ntp.conf no diretório etc:
       sudo touch /etc/ntp.conf

4. Logo após, edite o arquivo ntp.conf sendo um super usuário, utilizando o editor de texto de sua preferência, como o nano ou o vi, e adicione a configuração abaixo:

       sudo nano /etc/ntp.conf

# "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
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

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

# desabilitar comando monlist
disable monitor

É importante ressaltar que a linha disable monitor não deve ser comentada. Ela desabilita o comando monlist, que pode ser explorado para gerar ataques amplificados de negação de serviço.


5. A hora do seu computador pode ser ajustada inicialmente com o comando a seguir, o qual permitirá o ajuste do relógio, mesmo que ele esteja com um atraso de tempo muito alto (maior que 16 segundos):

       sudo /usr/local/bin/ntpd -q -g  


6. O daemon ntp poderá então ser executado com o seguinte comando:

       sudo /usr/local/bin/ntpd -q -g 

7. Arquivos de inicialização apropriados podem ser criados conforme o padrão de sua distribuição.


Pronto! Seu NTP já está funcionando e atualizando seu relógio de acordo com a Hora Legal Brasileira.


Assista a um mini tutorial em video demonstrando como instalá-lo através de seus arquivos fontes, fazendo-o funcionar como um servidor:


Neste outro tutorial, demonstramos como configurar o NTPD através de seus arquivos fontes para que ele funcione como um cliente:




Alternativas ao NTP

Chrony

O Chrony é uma implementação do protocolo NTP, que pode trabalhar como cliente ou servidor, atualizando o mesmo estando com problemas de rede (caso consiga fazer algumas conexões periódicas). Ele está disponível para distribuições Linux, FreeBSD, NetBSD e Solaris.


Instalação

1. O Chrony pode ser instalado tanto pelos seus arquivos fontes quanto pelo repositório de sua distribuição do Linux, porém, atualmente os fontes disponibilizados pelos responsáveis não estão funcionando em algumas distribuições, como o Ubuntu. Recomendamos então instalá-lo através do repositório do Ubuntu, utilizando o seguinte comando:

	sudo apt-get install chrony

2. Pare o serviço Chrony com o comando:

	sudo service chrony stop

3. Após sua instalação, o arquivo chrony.conf deve ser alterado, onde devem ser adicionados os servidores do NTP.br e algumas outras configurações:

#lista dos servidores públicos do ntp.br.
server a.st1.ntp.br
server b.st1.ntp.br
server c.st1.ntp.br
server d.st1.ntp.br
server gps.ntp.br
server a.ntp.br
server b.ntp.br
server c.ntp.br

#arquivo que contém a senha para o chronyc.
keyfile /etc/chrony/chrony.keys

#comando que define como o script irá obter a senha.
commandkey 1

#arquivo usado para mostrar o quanto seu relógio atrasa diariamente
#devido a flutuação da frequência do relógio, fazendo com que 
#o cristal de quartzo da placa mãe oscile (medido em ppm - partes por milhão).
driftfile /var/lib/chrony/chrony.drift

#altera o clock da máquina.
maxupdateskew 100.0

#apaga as medições quando o daemon é interrompido.
dumponexit

#especifica em qual diretório deve apagar as medições.
dumpdir /var/lib/chrony

#esse comando diz ao chrony para regular o relógio em tempo real e
#onde armazenar os dados relacionados a essa operação.
rtcfile /var/lib/chrony/chrony.rtc

Após tais configurações, o chrony já poderá ser iniciado, fazendo com que o relógio seja corrigido continuamente, de modo que o tempo do relógio corra mais rápido.

4. Para inicializa-lo, utilize o seguinte comando:

	sudo service chrony start

5. Para monitorar a correção do tempo, o comando a seguir pode ser utilizado:

	chronyc tracking

6. As seguintes linhas de dados serão exibidas:

Reference ID   : 68.47.202.140 (servidor.ntp.br)
Stratum             : 2
Ref time (UTC)  : Tue May 12 22:08:45 2015
System time     : 1.764886260 seconds slow of NTP time
Frequency       : 26.186 ppm fast
Residual freq   : -1.765 ppm
Skew            : 2.196 ppm
Root delay      : 0.000821 seconds
Root dispersion : 0.001235 seconds


Ntimed

O Ntimed é um projeto em fase de desenvolvimento, criado para substituir a implementação padrão do NTP no linux.

Caso queira testá-lo, ele deve ser baixado clicando aqui.

Sua execução é simples, porém ele não pode ser executado em background, fazendo com que ele não seja uma alternativa viável no momento.




Ferramentas de Monitoramento

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

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 atraso 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

Uma reposta normal se parece com essa:

ntpq -c rl
associd=0 status=c011 leap_alarm, sync_unspec, 1 event, freq_not_set,
version="ntpd 4.2.6p5@1.2349-o Mon Apr 13 13:39:46 UTC 2015 (1)",
processor="x86_64", system="Linux/3.13.0-36-generic"
stratum=3, precision=-20, rootdelay=224.336, rootdispersion=35.121,
peer=4764, refid=200.192.232.8,
reftime=cb30d5b2.559c02d8  Tue, Jun 23 2015 15:34:42.334, poll=7,
clock=cb30d6d8.ee2e88ee  Tue, Jun 23 2015 15:39:36.930, state=4,
offset=10.396, frequency=0.000, jitter=14.973, noise=8.978,
stability=0.000, tai=0

Dentre as várias informações obtidas, pode-se destacar a versão do ntp, em verde; o estrato, em vermelho (3 é o nível esperado, 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.

O video tutorial a seguir demonstra como monitorar o NTP da sua máquina através de ferramentas de monitoramento: