Introdução
Olá, pessoal.
Vou mostrar como ajustar a data e hora do servidor, configurar e manter um servidor de
NTP (Network Time Prrotocol).
Manter o sistema com horário correto é uma tarefa muito importante, sem o horário correto, fica difícil agendar tarefas a serem executadas, verificar logs e controlar eventos por horário.
E ainda existe o problema do fuso horário, um sistema com a hora errada pode gerar problemas, por exemplo, se for um servidor de e-mails, pois fica muito difícil de dizer exatamente o horário que a mensagem foi enviada. Se for um servidor com Squid, que existe liberação de acesso por horário, isso acaba dificultando o acesso dos colaboradores por causa da diferença que pode existir de horário.
Vamos analisar as formas de ajustar o horário do servidor com dois comandos "básicos", esses comandos são o
date e
hwclock.
O comando
date é utilizado para mostrar ou ajustar a data e hora do sistema.
Para visualizar a hora:
# date
Agora, vamos usar esse comando para acertar a data do sistema:
# date mmddHHMMYYYY
Exemplo: 28 de Fevereiro de 2013, às 11:30:
# date 022811302013
Outra forma rápida para atualizar, é usar o comando dessa forma:
# date -s "02/28/2013 11:30"
Se quiser alterar apenas a hora, pode usar o mesmo comando, colocando só a hora desejada:
# date -s " 11:30"
Para mudar a data:
# date -s " 02/28/2013"
Obs.: ao mudar somente a data, é alterado o horário para 00:00.
Agora, vamos analisar o comando
hwclock. Ele usa um recurso muito interessante, que é ajustar a hora do sistema utilizando o recurso RTC (Real Time Clock). Ele ajusta o horário da BIOS, esse relógio continua funcionando, mesmo quando o computador está desligado, por isso é importante sempre verificar a bateria que fica na placa mãe; quando ela está com pouca carga, é normal o horário ficar descontrolado ao desligar o computador.
Para visualizar hora da BIOS:
# hwclock
Para ajustar o horário da BIOS e atualizar o horário do sistema:
# hwclock -w
Ou:
# hwclock --systohc
Para ajustar o sistema baseado no horário da BIOS:
# hwclock -s
Ou:
# hwclock --hctosys
Agora, se o relógio da BIOS está incorreto, basta usar o seguinte comando:
# hwclock --set --data="mm/dd/yy hh:mm:ss"
Obs.: sempre verifique as configurações de timezone, ou seja, o fuso horário em que o computador está configurado. Essa configuração pode ser efetuada utilizando os comandos:
No Debian (Ubuntu,
Linux Mint) e derivados.
# dpkg- reconfigure tzdata
No CentOS (Fedora, SUSE) e derivados:
# system-config-date
Configuração de servidor NTP
Um pouco da história:
O NTP (Network Time Protocol - protocolo de sincronização de horários), foi desenvolvido para possibilitar que qualquer computador ligado à internet possa ajustar a sua data e hora automaticamente, utilizando um servidor de hora preciso.
O servidor de NTP é um serviço, em que sua camada de aplicação utiliza o protocolo UDP na camada de transporte e sua porta é a 123, por isso, é importante manter essa porta liberada para conseguir comunicação e realizar a sincronização de horários.
O NTP foi criado em 1985, é um dos protocolos mais antigos e ainda utilizados na internet!
A hierarquia e organização do NTP
A hierarquia do NTP é dividida em vários níveis, o conjunto deles é denominado "strata" e cada um deles corresponde a um "stratum". A raiz desse sistema é o denominado "stratum 0" e que corresponde aos relógios nucleares espalhados pelo mundo; aos quais estão conectados os servidores de "stratum 1", ou seja, são eles que fazem o processamento da informação recebida do "stratum 0".
Conectados aos "stratum 1" há o "stratum 2" que, em geral, estão conectados a mais de um servidor de "stratum 1" e determinam de fato qual é a hora padrão com base nos dados recebidos dos "stratum 1" utilizando o algoritmo do NTP.
Os "stratum 2" respondem ao "stratum 3", que respondem ao "stratum 4" e assim por diante até atingir, no máximo, 16 níveis.
A menos que esteja montando um servidor para um servidor para ser um stratum 1, 2 ou 3, nunca devemos utilizar os servidores stratum 1 e 2 para sincronizar o nosso servidor, se for necessário, deve ser usado um servidor stratum 3.
Dessa forma, o acesso aos servidores mais baixos ficam para as máquinas que realmente precisam acessá-los. Vamos continuar com a configuração dos servidores e clientes.
Ajuste manual do horário
Vamos verificar qual é a localização geográfica no CentOS:
# cat/etc/sysconfig/clock
No Debian:
# cat/etc/timezone
Se for constatado que existe fuso horários incorretos, faça a correção com os seguintes comandos:
No Debian e derivados:
# fpkg-reconfigure tzdata
No CentOS, SUSE e derivados:
# rm -rf /etc/localtime
# cd /usr/share/zoneinfo/America
# ln Sao_Paulo /etc/localtime
Ou:
# system-config-data
Depois dos ajustes, vamos verificar a data e hora do sistema e da BIOS:
# date
# hwclock
Configurando o cliente NTP
No Debian e derivados, vamos usar o seguinte comando para instalar o cliente NTP:
# apt-get install ntpdate
No CentOS, o comando
ntpdate já vem instalado com o pacote
ntp.
Para realizar a sincronização das máquinas da rede que são clientes NTP, use o seguinte comando:
# ntpdate (ip_do_servidor_ntp_rede)
No Debian, caso não tenha um servidor NTP na rede, podemos simplesmente reiniciar o daemon do
ntpdate:
# ntpdate - debian
Agora que já foi mostrado como ajustar a hora do sistema e da BIOS, vamos criar a estrutura de servidores e clientes de NTP. Para configurar o servidor NTP, vamos verificar se o pacote
ntp está instalado.
No CentOS:
# rpm -q ntp
Se não estiver instalado, vamos usar o seguinte comando para instalar:
# yum install ntp
Vamos agora ao arquivo de configuração do NTP:
# vim /etc/ntp.conf
Vamos precisar dos endereços de servidores oficiais NTP, para isso, vamos acessar o site:
Essa página do projeto NTP tem uma lista de servidores públicos, que é mantido pelo projeto NTP.br.
No arquivo de configuração, devemos localizar a linha de configuração com a qual sincronizaremos a nossa máquina.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 0.centos.pool.ntp.org iburst prefer
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst
Nesse caso, é aconselhável utilizar mais de um servidor. No meu caso, estou utilizando 4 servidores.
Os parâmetros adicionais
iburst fazem com que sejam enviados oito pacotes, ao invés de apenas um durante a sincronização inicial. E o parâmetro
prefer, faz com que a resposta de um servidor preferido seja descartada se ela diferir muito das respostas dos demais servidores, caso contrário, será utilizado sem qualquer consideração para outras respostas.
Vamos adicionar a linha, especificando quais hosts poderão realizar sincronização com a nossa máquina:
restrict 127.0.0.1
restrict 10.0.0.0 mask 255.255.255.0
disable auth
A primeira restrição está liberando requisições vindas do localhost e a segunda da nossa rede. Foi desabilitada a autenticação por chaves também.
Vamos determinar se a sincronização está funcionando corretamente. Para isso, vamos alterar a hora do sistema e depois iniciar o serviço de NTP:
# date 03050511008
# /etc/init.d/ntpd stop
# /etc/init.d/ntpd start
Agora, verifique a hora do sistema e veja se funcionou:
# date
Vamos configurar o cliente no Debian e sincronizar com o servidor:
# apt-get install ntp
Adicionar a lista de servidores e comentar os demais:
# vim /etc/ntp.conf
#Na linha 15, adicione o servidor e comente os outros.
server 10.0.0.100 iburst prefer
Vamos realizar o mesmo teste:
# date 03050511008
# /etc/init.d/ntpd stop
# /etc/init.d/ntpd start
# date
Pronto!
Conclusão
Servidor NTP e clientes configurados.
Espero que esse artigo ajude a quem precise configurar e manter um servidor de data e hora.