Beruflich Dokumente
Kultur Dokumente
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 na Internet, com vários
computadores trocando informações entre si!
Quando se trata de um computador isolado a exatidão em relação à uma referência de tempo como a hora
legal brasileira não é tão importante. Nesse caso o mais importante é manter a monotonicidade do tempo.
Além disso, eventuais ajustes no relógio devem ser, sempre que possível, graduais. Saltos no tempo, mesmo
de alguns poucos segundos, para o futuro podem ser ruins, e para o passado, desastrosos.
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 distribuídos: 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.
vivaolinux.com.br/…/impressora.php?c… 1/18
13/03/2011 Sincronizando o Linux com a Hora Leg…
É importante também do ponto de vista de segurança de redes que os relógios dos computadores estejam
sincronizados. Investigações relacionadas a incidentes de segurança tornam-se impossíveis caso os servidores
envolvidos e os diversos arquivos de log discordem entre si em relação às estampas de tempo dos eventos.
O NTP
Topologia do NTP
Os servidores NTP formam uma topologia hierárquica, dividida em camadas ou estratos (em inglês: strata)
numerados de 0 (zero) a 16 (dezesseis). O estrato 0 (stratum 0) na verdade não faz parte da rede de
servidores NTP, mas representa a referência primária de tempo, que é geralmente um receptor do Sistema de
Posicionamento Global (GPS) ou um relógio atômico. O estrato 16 indica que um determinado servidor está
inoperante.
O estrato 0, ou relógio de referência, fornece o tempo correto para o estrato 1, que por sua vez fornece o
tempo para o estrato 2 e assim por diante. O NTP é então, simultaneamente, servidor (fornece o tempo) e
cliente (consulta o tempo), formando uma topologia em árvore.
vivaolinux.com.br/…/impressora.php?c… 2/18
13/03/2011 Sincronizando o Linux com a Hora Leg…
Priorizáveis (preemptables): são específicas da versão 4 do NTP e criadas por uma configuração ou
comando, podem ser desfeitas no caso de haver um servidor melhor, ou depois de um certo tempo.
Efêmeras ou transitórias: são criadas por solicitação de outro dispositivo NTP e podem ser desfeitas
em caso de erro ou depois de um certo tempo.
Cliente - Servidor: (client - server) É uma associação permanente e a forma mais comum de
configuração. Um dispositivo faz o papel de cliente, solicitando informações sobre o tempo a um
servidor. O cliente tem conhecimento das associações com os servidores e do estado da troca de
pacotes. Outro dispositivo faz o papel de servidor, respondendo à solicitação do cliente com
informações sobre o tempo. O servidor não armazena informações sobre o diálogo com o cliente ou
sobre sua associação com o mesmo.
Modo simétrico: (symmetric mode) Dois ou mais dispositivos NTP podem ser configurados como
pares (peers), de forma que possam tanto buscar o tempo, quanto fornecê-lo, garantindo redundância
mútua. Essa configuração faz sentido para dispositivos no mesmo estrato, configurados também como
clientes de um ou mais servidores. Caso um dos pares perca a referência de seus servidores, os demais
pares podem funcionar como referência de tempo. O modo simétrico pode ser:
Ativo: O dispositivo A configura o dispositivo B como seu par (criando dessa forma uma
associação permanente). Por sua vez, o dispositivo B também configura o dispositivo A como
seu par (também cria uma associação permanente).
Passivo: O dispositivo A configura o dispositivo B como seu par (modo simétrico ativo). Mas o
dispositivo B não tem o dispositivo A na sua lista de servidores ou pares. Ainda assim, ao
receber um pacote de A, o dispositivo B cria uma associação transitória, de forma a poder
fornecer ou receber o tempo de A.
Broadcast ou Multicast: O NTP pode fazer uso de pacotes do tipo broadcast ou multicast para enviar
ou receber informações de tempo. Esse tipo de configuração pode ser vantajosa no caso de redes
locais com poucos servidores alimentando uma grande quantidade de clientes.
Permite também calcular o atraso ou tempo de ida e volta (RTT) entre o cliente e o servidor.
vivaolinux.com.br/…/impressora.php?c… 3/18
13/03/2011 Sincronizando o Linux com a Hora Leg…
Essa troca de mensagens não é realizada uma única vez. Ela se repete periodicamente, com o período
dinamicamente controlado pelo NTP.
É importante notar então, que não há apenas um valor de atraso e um de deslocamento para cada servidor,
mas um conjunto deles, provenientes das diversas trocas de mensagem! A partir dessa lista de valores, o
Algoritmo de Filtro de Relógio calcula então um valor único de atraso (delay), de deslocamento (offset) e de
variação (jitter) para cada servidor para ser usado pelos próximos algoritmos.
A Seleção de relógios busca um intervalo de intersecção para os valores de deslocamento de cada servidor,
considerados intervalos de confiança. Os servidores cujos deslocamentos ficam fora da intersecção são
relógios falsos.
O Algoritmo de Agrupamento
O algoritmo de Agrupamento trabalha com os servidores que são relógios verdadeiros, utilizando técnicas
estatísticas, com o objetivo de selecionar os melhores dentre eles.
No processo alguns servidores são descartados, sendo chamados de relógios afastados (outlyers). Os que
permanecem são chamados de relógios sobreviventes (survivors), algumas vezes na literatura em inglês utiliza-
se candidatos (candidates) no mesmo sentido que sobreviventes, por conta do algoritmo utilizado onde, à
princípio, todos os relógios verdadeiros são candidatos, mas apenas alguns sobrevivem.
O melhor dos relógios sobreviventes é considerado como par do sistema (system peer).
Para os demais casos o algoritmo de Combinação de Relógios calcula uma média ponderada dos
deslocamentos dos relógios, com o objetivo de aumentar a exatidão.
vivaolinux.com.br/…/impressora.php?c… 4/18
13/03/2011 Sincronizando o Linux com a Hora Leg…
O NTP disciplina o relógio local de forma contínua, mesmo em períodos onde não é possível consultar
servidores de tempo. As características do relógio local são medidas e se tornam conhecidas do NTP, o que
torna possível que ele funcione dessa forma. O arquivo indicado pela chave driftfile (geralmente
/var/lib/ntp/ntp.drift) na configuração armazena o erro esperado de freqüência para o relógio.
Saltos no tempo são evitados sempre que possível. O tempo é ajustado para mais ou para menos
gradualmente, variando-se a freqüência do relógio local.
Se uma diferença maior do que 128ms for detectada o NTP considera que o tempo está muito errado,
e que é necessário um salto para frente ou para trás para corrigí-lo. Contudo isso só é feito se essa
diferença maior que 128ms persistir por um período maior que 900s (15min), para evitar que
condições de congestionamento grave mas temporário na rede, que podem levar a medições erradas
de tempo, causem inadvertidamente esse tipo de salto.
Se uma diferença maior que 1000s (~16,7min) for detectada o algoritmo aborta a execução,
considerando que algo muito errado aconteceu. Se houver diferenças dessa ordem ou maiores elas
devem ser corrigidas manualmente antes de se executar o daemon NTP.
Segurança no NTP
Por segurança no contexto da Tecnologia da Informação entende-se basicamente garantir quatro
propriedades da informação: integridade, disponibilidade, autenticidade e confidencialidade.
Os algoritmos vistos anteriormente, aliados à correta configuração do sistema, com um número suficiente de
fontes de tempo com referências primárias independentes, garantem de forma satisfatória a integridade e
disponibilidade do serviço de tempo.
Os algoritmos de criptografia do NTP visam garantir a autenticidade da informação. Ou seja, têm o objetivo
de assegurar ao cliente de que o servidor é quem ele diz ser.
Existem basicamente dois métodos no NTP para realizar a autenticação, chave simétrica (symmetric key) e
vivaolinux.com.br/…/impressora.php?c… 5/18
13/03/2011 Sincronizando o Linux com a Hora Leg…
chave pública (autokey).
O projeto NTP.br
O ON tem como atribuição legal a geração, conservação e disseminação da Hora Legal Brasileira. Rastreado
ao Bureau International des Poids et Mesures (BIPM), na França, participa do Tempo Universal
Coordenado (TUC ou UTC), juntamente com os órgãos disseminadores de tempo e freqüência dos demais
países.
Ou seja, para fins práticos a Hora Legal Brasileira é a mesma que a hora fornecida pelo Tempo Universal
Coordenado (a diferença fica na casa dos nanosegundos). Mas é o ON quem tem a responsabilidade legal no
Brasil de dizer qual é a hora certa.
Nome Endereço
a.ntp.br 200.160.0.8
b.ntp.br 200.189.40.8
c.ntp.br 200.192.232.8
Eles são estrato 2, ou seja, estão sincronizados a outro conjunto de servidores, que não é público e que, por
sua vez, está sincronizado com relógios atômicos, de responsabilidade do Observatório Nacional.
O site do projeto: http://www.ntp.br fornece mais detalhes sobre o NTP, sobre a estrutura, e permite
monitorar o funcionamento dos servidores através de gráficos.
vivaolinux.com.br/…/impressora.php?c… 6/18
13/03/2011 Sincronizando o Linux com a Hora Leg…
Verifique no site do NTP http://www.ntp.org/downloads.html qual o link para o download da versão mais
recente. Na época em que esse artigo foi escrito a versão mais recente era 4.2.4p4.
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.4p4.tar.gz
# tar zxvf ntp-4.2.4p4.tar.gz
# cd ntp-4.2.4p4
# ./configure
# make
# make install
# wget http://www.ntp.br/xnix/ntp.conf
# cp ./ntp.conf /etc/ntp.conf
http://www.ntp.br/xnix/ntp.conf
# outros servidores
vivaolinux.com.br/…/impressora.php?c… 7/18
13/03/2011 Sincronizando o Linux com a Hora Leg…
# server outro-servidor.dominio.br iburst
A hora do seu computador pode ser ajustada inicialmente com o seguinte comando:
# /usr/local/bin/ntpd -q -g
Isso permite que o ntp ajuste seu relógio mesmo que ele tenha um erro de tempo absurdamente alto (maior
que 16 min). O daemon ntp pode ser executado então:
# /usr/local/bin/ntpd
Arquivos de inicialização apropriados podem ser criados conforme o padrão de sua distribuição.
* Debian GNU/Linux e sistemas que usam apt (Ubuntu, Kurumin, Conectiva, etc)
# apt-get update
# apt-get 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
vivaolinux.com.br/…/impressora.php?c… 8/18
13/03/2011 Sincronizando o Linux com a Hora Leg…
Após instalar o ntp, crie o arquivo ntp.drift com o comando:
# touch /etc/ntp.drift
# wget http://www.ntp.br/xnix/ntp.conf
# cp ./ntp.conf /etc/ntp.conf
http://www.ntp.br/xnix/ntp.conf
# outros servidores
# server outro-servidor.dominio.br iburst
# ntpd -q -g
Configurações adicionais
vivaolinux.com.br/…/impressora.php?c… 9/18
13/03/2011 Sincronizando o Linux com a Hora Leg…
A palavra chave noserve diz para o servidor não informar o tempo, e noquery para não dar outros tipos de
informação (consultas do ntpq).
Você primeiro bloqueia tudo, depois libera para os hosts ou redes específicas.
Um cliente NTP convencional, bem educado e bem intencionado faz no pior caso, uma consulta a cada 64s,
e no melhor caso, uma consulta a cada 1024s. Mas há os mal escritos, mal configurados ou mal
intencionados, que abusivamente fazem consultas a cada segundo ou mais.
Nesse caso vale a pena tirar o kod, o beijo da morte. Com o kod o ntp bloquearia clientes abusivos e a única
forma de desbloqueá-los seria reiniciando o serviço. Bem, não queremos clientes abusivos. Mas no caso de
incidentes não intencionados de abuso, também não queremos ficar reiniciando nosso NTP para que um
determinado cliente possa voltar a acessá-lo.
vivaolinux.com.br/…/impressora.php?c… 10/18
13/03/2011 Sincronizando o Linux com a Hora Leg…
Uma solução de compromisso é usar a palavra chave limited. No comando discard configuramos os limites,
na configuração acima, um cliente pode mandar na média até um pacote a cada 2s, com picos de um pacote
até 1s. Se mandar pacotes acima dessa taxa, não obterá respostas. É uma taxa alta, mas lembre que pode
haver clientes atrás de NAT. E também pode haver picos de utilização ao se utilizar a palavra chave iburst
para acelerar a configuração inicial de um servidor.
serv1.suarede.com.br
serv2.suarede.com.br
serv3.suarede.com.br
Na configuração do servidor 1, coloque o servidor 2 e 3 como peers. Isso significa que eles podem tanto
consultar quanto informar o tempo entre si, e serve como configuração de redundância, caso algum deles
deixe de falar com a Internet, mas ainda converse com os outros. Analogamente configure o serv2 e 3.
vivaolinux.com.br/…/impressora.php?c… 11/18
13/03/2011 Sincronizando o Linux com a Hora Leg…
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
Uma reposta normal se parece com essa:
# ntpq -c pe
remote refid st t when poll reach delay offset jitter
==============================================================================
*ttm.nic.br .GPS. 1 u 8 16 377 0.320 -0.008 1.340
+server20.pop-df .GPS. 1 u 11 16 377 15.608 -0.002 0.491
201.63.254.68 .INIT. 16 u - 16 0 0.000 0.000 0.000
+santuario.pads. .GPS. 1 u 59 64 377 6.852 -0.002 0.045
xtime.nist.gov .ACTS. 1 u 56 64 377 282.494 -45.091 1.718
-ntp2.usno.navy. .USNO. 1 u 52 64 377 135.380 4.391 7.449
-a.ntp.br 200.160.7.192 2 u 15 16 377 0.362 0.424 0.048
-b.ntp.br 200.160.7.186 2 u 17 16 376 17.544 1.562 0.134
-c.ntp.br 200.160.7.192 2 u 10 16 377 15.680 0.393 0.012
-clock.trit.net 192.12.19.20 2 u 42 64 377 296.580 -29.083 0.574
-Stone.Rodents.M 65.71.16.189 3 u 47 64 377 249.918 -7.678 0.963
-rbi0261.giga-dn 192.53.103.104 2 u 49 64 377 262.197 18.316 0.845
-einstein.postre 66.187.233.4 2 u 43 64 377 341.553 34.962 38.449
ntpq -c rl
Uma reposta normal se parece com essa:
Enquanto o ntpq -c pe apresenta as variáveis relacionadas a cada associação, ou seja, a cada fonte de
tempo, o ntpq -c rl apresenta as variáveis (globais) do sistema. As mais importantes estão indicadas a seguir:
Os principais logs do ntp são o loopstats, que apresenta as informações do loop local, ou seja, as variáveis
do sistema, e o peerstats, que apresenta as informações de cada associação.
vivaolinux.com.br/…/impressora.php?c… 13/18
13/03/2011 Sincronizando o Linux com a Hora Leg…
loopstats
Seu formato é o seguinte:
day, second, offset, drift compensation, estimated error, stability, polling interval dia, segundo, deslocamento,
escorregamento, erro estimado, estabilidade, e intervalo de consulta.
Exemplo:
peerstats
Seu formato é o seguinte:
Exemplo:
Gerando gráficos
A interpretação dos arquivos de log fica bastante facilitada com o uso de gráficos. E uma vez que se conhece
seu formato fica muito fácil gerá-los. Recomenda-se o uso do gnuplot.
Observe que o comando plot faz referência ao arquivo loopstats, e usa suas colunas 2 e 3, 2 representa o
tempo, no dia, em segundos e é o eixo x; e 3 representa o deslocamento, em milissegundos e é o eixo y.
# gnuplot deslocamento.txt
E pronto, como a saída esta redirecionada para display, você verá o gif gerado na tela.
Escolhendo diferentes colunas dos logs você poderá obter gráficos de outras variáveis.
O NTP *não* trata da questão do horário de verão. O relógio dos computadores geralmente trabalha
sincronizado com o UTC e, além disso, o Sistema Operacional sabe qual é o fuso horário adequado para
utilizar. Quando entramos ou saímos do horário de verão e relógio do computador não é alterado, somente o
fuso horário.
Use o comando zic para modificar o arquivo correspondente ao seu fuso horário:
1. Crie um arquivo com extensão .zic na pasta onde está o arquivo do fuso horário utilizado. Por exemplo, se
você utiliza Brazil/East, crie o arquivo /usr/share/zoneinfo/Brazil/verao.zic. O conteúdo é o seguinte:
Altere as duas primeiras linhas para refletir o ano atual. Os valores exemplificados são válidos para o horário
de verão que se inicia em 14/10/07 e termina em 17/02/08. A última linha indica qual o arquivo de fuso
horário será alterado.
# zic verao.zic
# zdump -v Brazil/East
Brazil/East Fri Dec 13 20:45:52 1901 UTC = Fri Dec 13 17:45:52 1901 BRT isdst=0 gmtoff=-10800
Brazil/East Sat Dec 14 20:45:52 1901 UTC = Sat Dec 14 17:45:52 1901 BRT isdst=0 gmtoff=-10800
Brazil/East Sun Oct 14 02:59:59 2007 UTC = Sat Oct 13 23:59:59 2007 BRT isdst=0 gmtoff=-10800
Brazil/East Sun Oct 14 03:00:00 2007 UTC = Sun Oct 14 01:00:00 2007 BRST isdst=1 gmtoff=-7200
Brazil/East Sun Feb 17 01:59:59 2008 UTC = Sat Feb 16 23:59:59 2008 BRST isdst=1 gmtoff=-7200
Brazil/East Sun Feb 17 02:00:00 2008 UTC = Sat Feb 16 23:00:00 2008 BRT isdst=0 gmtoff=-10800
Brazil/East Mon Jan 18 03:14:07 2038 UTC = Mon Jan 18 00:14:07 2038 BRT isdst=0 gmtoff=-10800
Brazil/East Tue Jan 19 03:14:07 2038 UTC = Tue Jan 19 00:14:07 2038 BRT isdst=0 gmtoff=-10800
vivaolinux.com.br/…/impressora.php?c… 15/18
13/03/2011 Sincronizando o Linux com a Hora Leg…
O daemon crond deve ser reiniciado após a entrada ou saída do horário de verão.
No site do CAIS/RNP há também informações sobre como se fazer essas alterações. Se restarem dúvidas,
consulte:
http://www.rnp.br/cais/alertas/2007/cais-alr-20071005.html
Se você procura mais informações sobre o horário de verão, verifique o site da Agência Nacional da Energia
Elétrica e o site do Observatório Nacional.
Utilize o ntpd. Com ele consegue-se uma exatidão bem maior do que com o ntpdate, mesmo quando o
computador fica temporariamente sem acesso aos servidores. O daemon é leve e a banda utilizada é
extremamente baixa.
Caso o relógio do seu computador esteja muito desajustado pode-se utilizar o ntpdate para ajustar o mesmo,
antes de se rodar o daemon NTP. Mas mesmo nesse caso é preferível utilizar o ntpd com as opções -q e -g,
como explicado anteriormente neste tutorial.
O ntpdate não é mais oficialmente suportado e deve ser retirado da distribuição em breve.
http://www.ntp.br
Alguns itens do artigo são resumos de partes desse site, feitos com a devida permissão.
vivaolinux.com.br/…/impressora.php?c… 16/18
13/03/2011 Sincronizando o Linux com a Hora Leg…
http://www.ntp.org
Página oficial do projeto NTP.
http://www.eecis.udel.edu/~mills/ntp.html
Página do projeto NTP mantida por David Mills.
http://www.eecis.udel.edu/~mills/ntp/html/index.html
Documentação da implementação de referência oficial do NTP, mantida por David Mills.
http://www.ntp.org/ntpfaq
FAQ e HOWTO do NTP.
http://support.ntp.org
NTP Public Services Project, é um site wiki com documentação construída pela comunidade:
support.ntp.org/bin/view/Support/WebHome. A página também lista servidores ntp públicos:
support.ntp.org/bin/view/Servers/WebHome.
http://www.isc.org
Página do Internet Systems Consortium. O ISC mantém o NTP Public Services Project.
http://www.pool.ntp.org
Projeto que mantém um DNS pool com servidores públicos de NTP.
http://www.ijs.si/time
Página do Jožef Stefan Institute, na Eslovênia, sobre NTP. Documentação de ótima qualidade.
http://www.meinberg.de/english/sw/ntp.htm
Instalador do NTP (implementação de referência) para Windows.
ftp://ftp.registro.br/rfc/rfc1305
Especificação do protocolo NTP versão 3. Não existe uma especificação da versão 4 do protocolo.
ftp://ftp.registro.br/rfc/rfc4330
Especificação do protocolo SNTP versão 4.
http://www.ietf.org/html.charters/ntp-charter.html
Esta página com o link para a versão mais recente do draft do protocolo NTP versão 4.
http://support.ntp.org/bin/view/IETF/WebHome
Grupo de trabalho do IETF para a criação da especificação do NTP versão 4.
http://www.vivaolinux.com.br/artigo/Sincronizando-o-Linux-com-a-Hora-Legal-Brasileira-usando-o-NTP.br
vivaolinux.com.br/…/impressora.php?c… 17/18
13/03/2011 Sincronizando o Linux com a Hora Leg…
vivaolinux.com.br/…/impressora.php?c… 18/18