Mantendo o horário sincronizado

Ao compartilhar arquivos na rede, manter os relógios das máquinas sincronizados passa a ser uma necessidade, afinal, se cada máquina está usando um horário diferente, fica impossível acompanhar as datas de modificações dos arquivos. Achar a versão mais recente de um determinado arquivo torna-se uma tarefa impossível e o trabalho de ferramentas diversas de backup fica prejudicado, sem falar nos logs do sistema e outros recursos que dependem do horário. Felizmente, é muito simples manter os horários das máquinas sincronizados, graças a vários servidores NTP públicos, disponíveis pelo mundo. Aprenda como usá-los.

Por | @oficinadanet Hardware
Ao compartilhar arquivos na rede, manter os relógios das máquinas sincronizados passa a ser uma necessidade, afinal, se cada máquina está usando um horário diferente, fica impossível acompanhar as datas de modificações dos arquivos. Achar a versão mais recente de um determinado arquivo torna-se uma tarefa impossível e o trabalho de ferramentas diversas de backup fica prejudicado, sem falar nos logs do sistema e outros recursos que dependem do horário.

Felizmente, é muito simples manter os horários das máquinas sincronizados, graças a vários servidores NTP públicos, disponíveis pelo mundo. Os servidores principais, chamados de stratum 1, sincronizam seus relógios a partir de relógios atômicos ou um sistema de GPS e, por isso, são extremamente precisos. A seguir, temos os servidores stratum 2, servidores menores sincronizados a partir dos primeiros.

Você pode sincronizar o relógio da sua máquina rapidamente usando o comando "ntpdate -u", seguido pelo servidor desejado. O comando faz parte do pacote "ntp" ou "ntpd", instalado por padrão na maioria das distribuições. A opção "-u" faz com que seja usada uma porta alta, necessário se você acessa usando uma conexão compartilhada ou tem um firewall ativo.

Para facilitar as coisas, existe o servidor "pool.ntp.org", que serve como um load balancer, encaminhando as requisições para um servidor geograficamente próximo de você. Ao invés de ficar caçando servidores públicos no Google, você pode sincronizar diretamente a partir dele:

# ntpdate -u pool.ntp.org


8 Sep 14:12:29 ntpdate[20592]: step time server 128.208.109.7 offset -9.091791 sec

O Linux utiliza um sistema relativamente complexo para manter o horário do sistema. Ao invés de simplesmente confiar no horário informado pelo relógio da placa mãe, ele utiliza um sistema mais elaborado, baseado no clock da placa mãe para calcular a passagem do tempo. Sempre que o sistema é desligado corretamente, diferenças no horário do sistema e no horário informado pelo relógio da placa mãe são salvas em um arquivo e recuperadas na hora do boot.

Em geral, este sistema é bem mais preciso e permite que o horário mantenha-se correto (desde que o micro não seja desligado) mesmo nos casos em que a bateria do setup está fraca e o relógio da placa mãe está atrasando.

No entanto, existem casos onde o sistema calcula o clock de forma incorreta, fazendo com que o relógio comece a adiantar ou atrasar, mesmo que o relógio da placa mãe esteja indicando o horário corretamente.

A solução, nestes casos, é rodar o comando ntpdate periodicamente, de forma que o horário seja sempre corrigido antes que as diferenças se acumulem. Neste caso, a melhor solução é fazer com que o cron execute o comando de hora em hora.

O jeito mais simples de fazer isso é criar um pequeno script dentro da pasta "/etc/cron.hourly/", cujo conteúdo é executado de hora em hora pelo cron. Crie o arquivo "/etc/cron.hourly/ntpdate", contendo as duas linhas a seguir:

#!/bin/sh
ntpdate -u pool.ntp.org


Transforme-o em executável:

# chmod +x /etc/cron.hourly/ntpdate


O cron detecta mudanças nos arquivos automaticamente. Mas, se preferir, você pode forçar a atualização usando o comando:

# /etc/init.d/cron restart


Um número cada vez maior de distribuições oferecem a opção de manter o horário sincronizado automaticamente em relação a um servidor NTP durante a instalação, o que torna desnecessário usar o ntpdate manualmente.

Os servidores NTP atendem clientes de todo o mundo, independentemente do fuso horário, pois são configurados para utilizar um horário comum o UTC (Universal Time Zone). Os clientes ajustam o horário de acordo com o fuso horário local.

Naturalmente, para que isso funcione, é necessário que o fuso horário esteja configurado corretamente. A maioria das distribuições ajusta isso logo durante a instalação, mas você pode configurar o fuso horário do sistema através de vários utilitários, como o "tzconfig" ou o configurador do KDE (kcmshell clock), que aparece ao clicar com o botão direito sobre o relógio e acessar a opção "Mudar data e hora".

Naturalmente, o NTP é suportado também pelos clientes Windows. No Windows XP, a opção de usar o NTP está disponível no Painel de Controle > Data e hora > Horário da Internet. Por padrão é usado um servidor da Microsoft, mas você pode alterar a configuração usando o pool.ntp.org, ou qualquer outro servidor de sua preferência, incluindo um servidor disponível na sua rede local (veja a seguir).

Mantendo o horário sincronizado

A coisa fica um pouco mais complicada no Caso do Windows 2000, Windows 98 e outras versões antigas do Windows, que não suportam o NTP nativamente. No caso deles, você precisa utilizar um cliente NTP avulso. Você pode baixar as versões oficiais no:
target="_blank">http://ntp.isc.org/bin/view/Main/ExternalTimeRelatedLinks

O protocolo NTP leva em conta o ping entre as máquinas e outros fatores para fazer as atualizações de forma extremamente precisa. Diferenças de sincronismo entre os servidores são sempre da ordem de poucos milésimos de segundo.

Apesar disso, muitos administradores preferem configurar servidores NTP locais. A principal vantagem é que configurando as estações para sincronizarem o horário em relação a um servidor local, você gatante que todas manterão exatamente o mesmo horário e que a sincronização continuará funcionando mesmo que o link com a Internet caia. Um servidor local também é a melhor opção em casos onde os demais micros da rede não possuem acesso à internet.

O primeiro passo é instalar o pacote com o servidor NTP, que de acordo com a distribuição pode se chamar "ntp", "ntpd" ou "ntp-server". Nas distribuições derivadas do Debian, você instalaria diretamente pelo apt-get:

# apt-get install ntp


A configuração vai no arquivo "/etc/ntp.conf". Normalmente, o arquivo padrão é funcional, mas permite apenas conexões a partir do localhost. Para permitir que os demais micros da rede local sincronizem o horário a partir do servidor, você deve adicionar a linha abaixo no final do arquivo:

restrict 192.168.1.0 mask 255.255.255.0 nomodify


O "nomodify" faz com que os micros da rede local tenham acesso apenas de leitura ao horário do servidor, sem poder alterá-lo (o que é o comportamento desejável). Não se esqueça de alterar a faixa de endereços e a máscara de acordo com a usada na sua rede local.

Um exemplo de arquivo de configuração simplificado (mas funcional) é:

driftfile /var/lib/ntp/ntp.drift
statsdir /var/log/ntpstats/

server 0.pool.ntp.org iburst
server pool.ntp.org iburst

restrict 127.0.0.1
restrict 192.168.1.0 mask 255.255.255.0 nomodify


As duas linhas "server" indicam os endereços a partir dos quais o servidor irá sincronizar seu horário e as duas linhas "restrict" fazem com que o servidor NTP fique acessível apenas a partir do localhost e dos micros da rede local.

Ao alterar o arquivo, você deve reiniciar o servidor NTP, usando o comando:

# /etc/init.d/ntp restart

(ou /etc/init.d/ntpd restart)


Se quiser ter certeza de que o serviço está funcionando, você pode usar o comando "ntpdc -p", que mostra o status atual do servidor NTP e a lista dos servidores em relação aos quais ele está sincronizando. É normal que o servidor demore alguns minutos para começar a responder depois de reiniciado o serviço.

A partir daí, você pode configurar os micro da rede local para sincronizarem o horário em relação ao endereço IP do seu servidor NTP local, como no screenshot do cliente Windows que que vimos a pouco. O servidor passa então a sincronizar o horário em relação aos servidores da Internet especificados no arquivo e os clientes da rede local passam a sincronizar o horário em relação a ele.

Ao usar um firewall no servidor, certifique-se de que a porta 123/UDP usada pelo NTP está aberta (o NTP usa apenas UDP). É necessário que ela fique aberta tanto para a rede loca, quanto para a internet, já que o servidor precisa sincronizar o horário em relação aos servidores externos. Caso necessário, você pode acrescentar uma regra como a abaixo no seu script de firewall, de forma a manter a porta aberta:

iptables -A INPUT -p udp --dport 123 -j ACCEPT


Fonte e direitos: Guia do Hardware.net

Mais sobre:
Share Tweet
DESTAQUESRecomendado
Mais compartilhados
Comentários