DATA : Modificar data e hora nos servidores Linux

 

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.
Close Menu