Como Instalar e Configurar NTPD no Linux

Working under preessure concept

O programa ntpd sincroniza o horário local com um ou mais servidores de tempo remoto. Ele também pode agir como um servidor de tempo distribuindo tempo para seus clientes.

ntpd apareceu primeiramente no FreeBSD 3.6 em 1985.

Antigamente se usava o ntpdate; mas ele foi(está sendo) substituído pelo ntpd.

Como NTP Funciona?

O programa ntp sincroniza/ajusta o horário do seu computador através de servidor de tempo, ou servidor ntp que está acima dele. Esses servidores de tempo também são chamados de peers.

NTP pode operar de diversos modos, o mais comum sendo o modo unicast(cliente-servidor). Nesse caso um cliente transmite um pacote de requisição para um servidor, o servidor, por sua vez, responde com um pacote de carimbo de tempo(timestamp). Há carimbo de tempo para a origem do pacote, recebimento e transmissão de modo que atrasos na transmissão via rede possa ser calculado.

Os carimbos de tempo dos pacotes gerados pelo NTP trabalham com UTC(Tempo Universal Coordenado) que é um padrão mundial de tempo que não sofre variação. Ele é o mesmo independente do país, do continente. Desse modo, o fuso horário e horário de verão são aplicadas pelo sistema operacional(Windows, Linux….)

 

Estrato do NTP

NTP trabalha com Estratos, ou camadas na vertical.

No topo estão hardwares de horário, como GPS  e receptores de tempo via rádio. Esses são conhecidos como estratos 0. São conhecidos também como Hardware reference clock. Muitos Hardware reference Clock obtém seus horário de um GNSS(Global Navigation Satellite Systems). Como exemplos de GNSS podemos citar: GPS, GLONASS, Galileo.
Como exemplo de rádio  podemos listar: MSF(Reinco Unido), DCF(Alemanha)  e WWVB(Estados Unidos). Porém, GNSS possuem exatidão maior.

Abaixo do Estrato 0 estão os servidores NTP de estrato 1.  Os servidores do Estrato 1 têm o horário mais apurado, exato ou preciso.

Quando mais distante um estrato menos exato será seu horário.

 

Instalação do NTP

 

No Debian e Ubuntu

sudo apt-get install ntp

No CentOS, Red Hat

sudo yum install ntp

Fedora

sudo dnf install ntp

 

Iniciando, Parando o Serviço NTP

 

Podemos, após instalação, podemos

Fazer ele iniciar juntamente ao iniciarmos o Sistema Operacional

sudo systemctl enable ntp

Iniciar, parar ou reiniciarmos ele,

sudo systemctl start ntp
sudo systemctl stop ntp
sudo systemctl restart ntp

 

Fazermos com que ele não inicie automaticamente junto com o Sistema Operacional.

sudo systemctl disable ntp

Opções do NTPD

 

Quando instalamos o ntpd ele automaticamente é iniciado e habilitado para ser iniciado também durante o boot, isto é, logo após o sistema operacional ser carregado.  Mais abaixo veremos que o arquivo que contém as configurações do ntpd é o /etc/ntp.conf, mas também podemos usar essas opções do arquivo ao executar os comando do ntp: ntpd, ntpq…

Podemos citar duas opções importantes aqui:

  • -q ou –quit: Ajusta o horário e sai. O ntpd geramente fica sendo executado em plano de fundo, ao usar -q ele ajusta mas não fica sendo executado.
  • -g ou –panicgate:  Permite que o primeiro ajuste seja grande. Sim, é desse modo que está escrito no manual do comando: “Allow the first adjustment to be Big”  🙂

 

Para executar o ntpd via linha de comando o daemon(processo executado em plano de fundo) tem que está parado.

Vamos executar o ntpd usando as opções acima

sudo ntpd -q -g

 

Por que Usar a Opção “-g”?

O ntpd põe um limite para ajustar o relógio. Esse limite(threshold) é de 1000 segundos(16,66 minutos). Isto é, se o relógio estiver com uma diferença de mais de 16 minutos o ntpd não irá ajustá-lo. Se tentarmos ajustar usando a linha de comando “ntpd -q” ele não fará nada. Se ele estiver sendo executado como um daemon(um processo em plano de fundo) ele irá gerar erro e sair. Isso ocorre como uma precaução. Ntpd assume que algo está terrivelmente errado e a única maneira é fazer o você ajustar manualmente; assim, você verá que algo está errado; este algo pode ser a bateria da placa mãe esgotada. Na verdade, na placa mãe há um chip chamado de TOY(time of year), esse chip TOY é alimentado pela bateria e ele pode estar danificado ou ser de má qualidade. Lembra acima da opção -g que é explicado como “permitir o primeiro ajuste ser grande”? é em relação à esse limite de 16,666 minutos.

Se não usarmos a opção -g nesse caso nada será ajustado.

 

Arquivo de Configuração do NTP

 

O local padrão do arquivo de configuração é: /etc/ntp.conf

 

Podemos usar diversos peers nas configurações do ntp da seguinte forma

server <endereço> [preferencia]

Acima temos:

  • server: Esse valor não muda. Ele apenas diz que o servidor(server) a ser usado será o definido em <endereço>.
  • Address(endereco) = endereço ip ou nome(domínio) do servidor de tempo do qual recebemos o horário correto
  • prefer(preferencia) = Essa opção pode ser usada para indicar um peer preferido. Essa opção é para ser usada apenas uma vez. O programa ntp escolherá o peer preferido de uma lista.

 

Pool

Além de server também há a opção pool. Pool se refere à um conjunto de servidores(peers) de tempo.  Acesse o link: pool.ntp.org/join.html.  Ao nos juntamos a um pool seremos mapeados com mais de 1000 servidores ntp. Nosso computador irá escolher um peer diferente cada vez que for iniciado.

É também boa prática especificar mais de um servidor, assim se um servidor estiver com o tempo um pouco fora, um pouco adiantado ou atrasado outro será escolhido.

 

driftfile

Em ntp.conf temos um arquivo chamado dr drift ou, em inglês, drift file.

A opção driftfile aponta para um arquivo, como abaixo:

 driftfile /var/lib/ntp/ntp.drift

Nesse arquivo fica armazenado a frequência de oscilações do relógio local.  Esse arquivo é atualizado a cada hora pelo serviço  ntp.

É muito recomendado ter um driftfile já que ele permite uma sincronização rápida ao ligarmos o computador.

As frequentes oscilações(frequency offset) são armazenadas em PPM(partes-por-milhão)

 

statsdir

Podemos usar a opção statsdir dentro do arquivo ntp.conf. A opção statsdir recebe como valor o caminho para uma pasta e nessa pasta será armazenada arquivos de estatísticas. Essa opção é útil para vermos estatística de performance nas sincronizações.

statsdir /var/log/ntpstats/

 

Exemplos do Conteúdo dentro de /etc/ntp.conf

 

Dentro de /etc/ntp.conf poderíamos ter somente as opções abaixo

 server pool.ntp.org     
  driftfile /var/lib/ntp/ntp.drift.

 

Porém, como dito acima, é aconselhável termo mais de um servidor. Então poderíamos incrementar o arquivo acima tendo como resultado o conteúdo abaixo:

server 192.168.1.127 prefer # IP para endereço do servidor local
server pool.ntp.org         # Endereço de projeto ntp mundial
server time-a-g.nist.gov    # NIST serviço de tempo de internet
driftfile /var/lib/ntp/ntp.drift.
statsdir /var/log/ntpstats/

 

Definindo Servidor NTP Brasileiro

Poderemos acessar o site ntp.br e escolhermos peers brasileiros. Veja abaixo exemplo retirado do site:

Servidores NTP.br
a.st1.ntp.br 200.160.7.186 e 2001:12ff:0:7::186
b.st1.ntp.br 201.49.148.135
c.st1.ntp.br 200.186.125.195
d.st1.ntp.br 200.20.186.76
a.ntp.br 200.160.0.8 e 2001:12ff::8
b.ntp.br 200.189.40.8
c.ntp.br 200.192.232.8
gps.ntp.br 200.160.7.193 e 2001:12ff:0:7::193

Podemos por exemplo colocar em nosso /etc/ntp.conf

server a.st1.ntp.br
server b.st1.ntp.br

Podemos também colocar o ip ao invés do domínio

server  200.160.7.186
....

 

Testando o Serviço NTP

Obs.: Executei esses comandos usando o conteúdo padrão do arquivo /etc/ntp.conf

Execute ntpq -p para imprimir a lista de peers e suas características de performance

elder@server02:~$ ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 0.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 1.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 2.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
 3.debian.pool.n .POOL.          16 p    -   64    0    0.000    0.000   0.000
-ntp1.ifsc.usp.b 143.107.229.211  2 u  754 1024  377   11.524    0.425   0.132
+a.ntp.br        200.160.7.186    2 u  754 1024  377    4.468   -0.047   0.349
*a.st1.ntp.br    .ONBR.           1 u  907 1024  377    4.212   -0.063   0.226
-b.ntp.br        200.160.7.186    2 u  699 1024  377   43.265   -0.071   0.321
+66.90.70.34     200.160.7.186    2 u  619 1024  377    3.601    0.085   0.227
+c.st1.ntp.br    .ONBR.           1 u  389 1024  377   10.588   -0.207   0.178

Podemos prestar atenção aos símbolos no início de cada linha. Eles são códigos de contagem.

O asterisco “*” avisa que esse peer está sendo usado no momento para sincronização.

O sinal de mais “+” indica que está em uso também, mas em peso menor.

O sinal de menos indica..????

 

Temos também os campos

  • remote este é o endereço do peer
  • refid indica a origem(source) do peer. Geralmente GPS ou GNSS
  • st stratum??
  • t o tipo. Pode ser  local, unicast, multicast ou broadcast.Muitos peers usam o tipo unicast.
  • when em segundo, quando o último pacote foi recebido.
  • poll  o período, em segundos, que o peer é sondado
  • reach representação octal das flags(bandeiras) da sincronização.
  • delay o atraso(delay) na ida e volta(round trip) do poll em segundos
  • offset a atual diferença entre o peer e o tempo local do pc.
  • jitter uma medida de variação de tempo dos pacotes do peer. É medido em milisegundos. É uma indicação de qualidade do relógio. jitter baixos indicam alta qualidade no relógio.

 

Exemplo de ntp.conf Retirado do site ntp.br

# "memoria" para o escorregamento de frequencia do micro
# pode ser necessario criar esse arquivo manualmente com
# o comando touch ntp.drift
driftfile /etc/ntp.drift

# estatisticas do ntp que permitem verificar o historico
# de funcionamento e gerar graficos
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

# servidores publicos do projeto ntp.br
server a.st1.ntp.br iburst
server b.st1.ntp.br iburst
server c.st1.ntp.br iburst
server d.st1.ntp.br iburst
server gps.ntp.br iburst
server a.ntp.br iburst
server b.ntp.br iburst
server c.ntp.br iburst

# outros servidores
# server outro-servidor.dominio.br iburst

# configuracoes de restricao de acesso
restrict default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery

# desabilitar comando monlist
disable monitor

É importante ressaltar que a linha disable monitor não deve ser comentada. Ela desabilita o comando monlist, que pode ser explorado para gerar ataques amplificados de negação de serviço.

Fonte: ntp.br

Leitor voraz e um dos administradores do GNU/Linux Brasil no Whatsapp, facebook, youtube e nesse dito site: www.gnulinuxbrasil.com.br

One Comment to “Como Instalar e Configurar NTPD no Linux”

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *