Ir para o conteúdo
ou

Software livre Brasil

 Voltar a Blog
Tela cheia

Linux: Instalando, configurando e sincronizando o relógio de servidores e clientes com NTP no Debian, Ubuntu e Windows.

11 de Maio de 2009, 0:00 , por Software Livre Brasil - 1Um comentário | Ninguém está seguindo este artigo ainda.
Visualizado 22698 vezes

Servidor NTP: Hora oficial e sincronizada.

Servidor NTP: Hora oficial e sincronizada.

Notei, nesses vários anos que trabalho com redes, que não é a maioria dos administradores que se preocupam com a configuração perfeita da data e hora dos servidores. Uma rede com o horário dessincronizado pode gerar sérios problemas de administração, como por exemplo: falhas em servidores de controle de versão, problemas com sistemas de backup, erro em transações de banco de dados, não funcionamento do Active Directory ou quando precisamos analisar LOGs de vários servidores por causa de alguma ocorrência na rede. Ah, tem até aquele caso comum de um e-mail cuja resposta tem hora inferior ao do primeiro e-mail enviado.

Para resolver essa situação existe o NTP (Network Time Protocol) que tem como finalidade sincronizar relógios na rede, seja ela, rede local ou a Internet. Através do NTP podemos sincronizar nossas máquinas com a data e hora provida por órgãos responsáveis pela hora legal no país, como é o caso do NTP.br e o Observatório Nacional.

Uma informação pertinente é que os servidores de NTP, como do Observatório Nacional, têm como referência relógios atômicos ou GPS.

O processo de sincronização é feito através de algorítimos e mensagens trocadas entre o seu servidor NTP local com o servidor NTP de referência, possibilitando a determinação exata da hora que será utilizada em seu servidor e a partir daí o processo é repetido entre seu servidor NTP local com as demais máquinas de sua rede.

Instalação e configuração do servidor NTP

O servidor NTP, ou NTPd (daemon) é instalável em todos as distribuições Linux e sua função é justamente se comunicar com servidores de referência e depois propagar a data e hora pelos computadores clientes da rede.

Antes de começarmos a instalação que é compatível tanto como Debian Lenny (Debian 5.0) quanto com o Ubuntu Jaunty (Ubuntu 9.04), vamos primeiro atualizar nossa lista de repositórios do APT com o comando:

# apt-get update

Instalando o servidor NTP

Após atualizar a lista de repositórios, basta executarmos o comando para instalação:

# apt-get install ntp ntpdate

O deamon do NTP utiliza pouco mais de um megabyte de espaço em disco e não adiciona pacotes extras, exceto no Debian onde pacote libcap1 é instalado. O libcap1 tem como função particionar os privilégios do root para utilização de vários serviços como o NTPd.

Outra necessidade percebida no Debian é a instalação do ntpdate, com este utilitário é possível atualizar o relógio diretamente com um servidor NTP de referência.

Configurando o NTPd no Debian Lenny (Debian 5.0) e Ubuntu Jaunty (Ubuntu 9.04)

Após a instalação, precisamos nos certificar que o horário de nosso computador não está mais que 16 minutos atrasado ou adiantado. Vamos utilizar o comando abaixo para atualizar o horário do computador com o servidor NTP padrão de referência:

# ntpd -q -g

Após a atualização do horário através dos servidores padrões do Debian e do Ubuntu, o NTP utiliza o arquivo ntp.drift. O ntp.drift registra a instabilidade na freqüência do relógio do seu computador e o NTP o utiliza este registro para sincronizar corretamente o relógio do seu equipamento com o do servidor de referência. Algumas distribuições Linux não criam o arquivo automaticamente no momento da instalação, porém o Debian Lenny (Debian 5.0) e o Ubuntu Jaunty (Ubuntu 9.04) o criam corretamente.

Configurando o servidor NTP via ntp.conf

O arquivo responsável pela configuração do servidor NTP é o ntp.conf que no Debian e Ubuntu está localizado em /etc/ntp.conf. Nas duas distribuições o ntp.conf é idêntico, salvo é claro o servidor NTP de referência, que no Ubuntu é ntp.ubuntu.com e no Debian são quatro servidores, onde o primeiro é 0.debian.pool.ntp.org.

Vamos agora entender a estrutura do arquivo para definirmos uma configuração usual.

A primeira linha faz referência a localização do arquivo ntp.drift que comentei um pouco acima neste post. Verifique se ele está criado no diretório apontado em seu arquivo de configuração. Caso não esteja criado, então utilize o comando abaixo:

# touch /var/lib/ntp/ntp.drift

Caso você deseje monitorar seu servidor NTP através de LOGs, então “descomente” (retire o caracter #) da linha statsdir. Não esqueça de “descomentar” também as linhas de filegen, pois serão utilizadas para definir as informações gravadas em log.

O terceiro item do arquivo de configuração é relativo ao servidor NTP de referência, ele deve ser configurado no padrão:

server <endereço-do-servidor> <opções>

Existem doze itens de configuração de servidor. Eu recomendo a utilização de três opções, são elas:

  • iburst – quando o NTPd não localiza o servidor, então ele envia oito pacotes, ao invés de dois pacotes (padrão), assim mesmo que sua conexão apresente alguma instabilidade o NTPd tentará mais contatos com o servidor NTP de referência;
  • prefer – define o servidor NTP de referência como preferencial;
  • dynamic – permite que um servidor, mesmo que inalcançável, ainda seja contatado futuramente, pois sua rede local ou sua conexão de internet pode ter falhado ou esteja com sinal intermitente.

Sugiro estes cinco servidores:

  • a.ntp.br – Servidor da NTP.br ;
  • ntp.ansp.br – Servidor do NARA (núcleo de apoio a rede acadêmica);
  • ntp.cais.rnp.br – Servidor da RNP (rede nacional de pesquisa);
  • b.ntp.br – Servidor da NTP.br;
  • c.ntp.br – Servidor da NTP.br.

É importante, por questões de segurança, que não seja permitido que estes servidores NTP de referência façam qualquer alteração no horário, pois estes são para consulta e a alteração de horário deverá ser feita localmente, então vamos colocar uma regra de restrição de alteração e consulta para estes servidores. Configuramos estes parâmetros dentro da configuração de restrict, como por exemplo:

restrict <endereço-do-servidor> mask 255.255.255.255 nomodify noquery

Eu não modifico a configuração padrão das primeiras quatro linhas contendo o item o chamada restrict, pois desejo que meu servidor NTP troque horário com qualquer computador, porém não permitindo alteração de configuração e também permito que usuários do próprio computador façam consultas ao servidor. A única configuração de restrição que eu faço é a inserção da linha:

restrict <rede-local> mask <máscara-de-rede>

A linha acima deve ser utilizada para liberar todas as máquinas da rede local para acessarem o servidor de NTP.

Exemplo de configuração do ntp.conf

Abaixo segue meu exemplo de configuração do ntp.conf:

driftfile /var/lib/ntp/ntp.drift

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

server a.ntp.br prefer iburst dynamic
server ntp.ansp.br iburst dynamic
server ntp.cais.rnp.br iburst dynamic
server b.ntp.br iburst dynamic
server c.ntp.br iburst dynamic

restrict a.ntp.br mask 255.255.255.255 nomodoify noquery
restrict ntp.ansp.br mask 255.255.255.255 nomodoify noquery
restrict ntp.cais.rnp.br mask 255.255.255.255 nomodoify noquery
restrict b.ntp.br iburst mask 255.255.255.255 nomodoify noquery
restrict c.ntp.br iburst mask 255.255.255.255 nomodoify noquery

restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
restrict 127.0.0.1
restrict ::1
restrict 192.168.0.0 mask 255.255.255.0

Depois de salvar (gravar) o arquivo, não vamos reiniciar o serviço ainda. Primeiro vamos parar o servidor NTP (caso esteja rodando) e sincronizar o horário, do nosso servidor NTP, com os comandos:

# /etc/init.d/ntp stop
# ntpdate a.ntp.br

Após feita sincronização de horário com um servidor NTP de referência, então vamos reiniciar o serviço de NTP com o comando:

# /etc/init.d/ntp force-reload

Verificando se o nosso servidor NTP está sincronizando corretamente

Para verificarmos se os servidores ao qual estamos tentando sincronizar estão fornecendo respostas e nosso servidor NTP está sincronizando o horário corretamente, precisaremos executar o comando de consulta. O resultado é atualizado constantemente nos dois primeiros dias de sincronização, pois as informações de frequência ainda estão sendo atualizadas no arquivo ntp.drift.

Comando de consulta da situação de sincronização:

# ntpq -p

O resultado deve variar, mas pode ser como o abaixo:

remote refid st t when poll reach delay offset jitter
==============================================================================
a.ntp.br .INIT. 16 u - 64 0 0.000 0.000 0.000
ns2.ansp.br .STEP. 16 u 482 64 0 0.000 0.000 0.001
titan.cais.rnp. .STEP. 16 u 34m 64 0 0.000 0.000 0.001
b.ntp.br 200.20.186.76 2 u 32 64 1 20.664 -1.971 0.001
c.ntp.br .STEP. 16 - 64 0 0.000 0.000 0.000

Você poderá reparar que os servidores estão marcados como INIT e STEP. Isto acontece, pois nosso servidor é recém configurado e ainda está atualizando as frequências com os servidores NTP de referência. Após alguns minutos a resposta poderá ser como abaixo:

remote refid st t when poll reach delay offset jitter
==============================================================================
a.ntp.br .INIT. 16 u - 64 0 0.000 0.000 0.000
*ntp.ansp.br 200.192.232.8 3 u 41 64 7 11.962 -65.677 26.804
+titan.cais.rnp. 26.29.7.231 2 u 36 64 7 15.542 -45.002 23.074
+b.ntp.br 200.20.186.76 2 u 38 64 7 17.908 -44.850 22.019
c.ntp.br .INIT. 16 u - 64 0 0.000 0.000 0.000

Entendendo a resposta do ntpq

Após utilizar o comando acima, com certeza queremos saber por que alguns servidores possuem um caracter antes do endereço, chamados de Tally Codes. Os Tally Codes
podem variar entre * (asterisco), + (soma), x. Vamos entender qual o significado desses simbolos e qual a função dos itens st, t, when, poll, reach, delay, offset e jitter:

Entendendo os caracteres ou tally codes:

  • * – system peer, servidor escolhido como principal referência;
  • + – candidat, servidor utilizado, porém com menor peso;
  • x – falsetick, servidor descartado por alguma incoerência verificada na execução do algoritimo de sincronização;
  • - – outlier, servidor funcional, porém geograficamente distante. A distância pode afetar na sincronização;
  • . – excess, se existir mais de 10 servidores de referência configurados, então os que não estiverem entre os 10 melhores receberão esta marca;
  • # – selected, porém não está entre os 6 principais servidores NTP de referência;
  • – se não houver marcação, então o servidor de referência foi descartado por não estar respondendo.

Verificando as demais informações:

  • st – o ideal é 1 ou 2, pois o estrato 0 é destinado às fontes dos servidores NTP de referência. 16 significa que não está sincronizado;
  • when – tempo (em segundos) da última consulta;
  • poll – tempo (em segundos) entre uma consulta e outra;
  • reach – transformação em decimal do resultado das últimas consultas. 377 mostra que não houveram falhas;
  • delay – tempo (em milisegundos) de demora entre consultas;
  • offset – medidas de deslocamento (em miliseguntos), é a diferença de tempo entre nosso servidor NTP e o servidor de referência;
  • jitter – ou variação, utiliza o offset para informar desvio ou erro do servidor NTP de referência.

Outra maneira de consultar a situação do seu servidor NTP é através do Syslog, para isso utilize o comando abaixo:

# tail -f -n 30 /var/log/syslog | grep ntpd

Configurando o NTP em máquinas clientes

O processo de configuração do seu servidor NTP nas máquinas existentes em sua rede local é bastante simples. Abaixo vamos ver como executar esta tarefa tanto em clientes Linux quanto clientes Windows.

NTP em máquinas Windows

Apenas três comandos são suficientes para configurar seu servidor NTP em clientes Windows. Para isso siga os passos:

  1. Clique em Iniciar
  2. Selecione Todos os Programas
  3. Entre no menu Acessórios
  4. Clique no item Prompt de Comandos

Agora no Prompt de Comandos, vamos executar os comandos abaixo:

C:\> net time /setsntp:"<ip-do-servidor-NTP>"
C:\> net stop w32time
C:\> net start w32time

Os comandos acima definem o seu servidor como servidor NTP de referência, pára o serviço de horário do Windows (Windows Time Service) e inicia o Windows Time Service.
Estes passos são válidos para Windows XP e Windows 2003 Server. Não testei no Windows Vista, porém deve seguir passos semelhantes.

Para verificarmos se o Windows está sincronizando com nosso servidor NTP, então basta executar o comando no Prompt de Comandos:

c:\> net time /querysntp

NTP em clientes Linux

O processo de configuração do NTP em um cliente Linux é muito parecido com o processo de configuração do servidor, ou seja, vamos ter que instalar os pacotes ntp e o ntpdate:

# apt-get install ntp ntpdate

Vamos criar o arquivo ntp.drift (caso não exista):

# touch /var/lib/ntp/ntp.drift

E vamos agora configurar o arquivo /etc/ntp.conf. Eu, particularmente, prefiro remover todas as configurações e deixar como o exemplo abaixo:

driftfile /var/lib/ntp/ntp.drift
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
server <ip-do-servidor-NTP>
restrict 127.0.0.1
restrict <ip-do-servidor-NTP>
restrict ::1

Salve as configurações e atualize a data e hora do sistema, mas antes vamos parar o serviço de NTP local:

# /etc/init.d/ntp stop
# ntpdate <ip-do-servidor-NTP>
# /etc/init.d/ntp start

Pronto, agora temos nosso servidor e clientes com data e hora atualizadas.

Fontes e Referências

Posted in Redes Tagged: 9.04, configuração, configurando, debian, debian 5, debian lenny, horário, howto, instalação, instalando, jaunty, linux, net time, ntp, ntpd, ntpq, Redes, relógio, servidor, sincronização, tally codes, tutorial, ubuntu, ubuntu jaunty, windows, windows 2003 server, windows vista, windows xp

Fonte: http://andreferraro.wordpress.com/2009/05/11/linux-instalando-configurando-sincronizando-relogio-servidores-clientes-ntp-debian-ubuntu-windows/

1Um comentário

  • 7d10ae7e7b40d0f1dcc37d669ecebd3d?only path=false&size=50&d=404Marcel Esbrana(usuário não autenticado)
    5 de Agosto de 2010, 13:47

    Servidor NTP

    O seu artigo me ajudou muito. Muito bem explicado, mas tenho uma dúvida.
    Nas linhas abaixo você usou nomodoify não seria nomodify?

    restrict a.ntp.br mask 255.255.255.255 nomodoify noquery
    restrict ntp.ansp.br mask 255.255.255.255 nomodoify noquery
    restrict ntp.cais.rnp.br mask 255.255.255.255 nomodoify noquery
    restrict b.ntp.br iburst mask 255.255.255.255 nomodoify noquery
    restrict c.ntp.br iburst mask 255.255.255.255 nomodoify noquery

    Qual é o certo?
    Fico no aguardo.
    Obrigado


Enviar um comentário

Os campos são obrigatórios.

Se você é um usuário registrado, pode se identificar e ser reconhecido automaticamente.