108.1 Lição 2
Certificação: |
LPIC-1 |
---|---|
Versão: |
5.0 |
Tópico: |
108 Serviços essenciais do sistema |
Objetivo: |
108.1 Manutenção da data e hora do sistema |
Lição: |
2 de 2 |
Introdução
Embora os computadores pessoais sejam capazes de manter a hora de maneira razoavelmente precisa por conta própria, os sistemas de produção e os ambientes de rede exigem um controle extremamente exato do tempo. A medição de tempo mais precisa é realizada por relógios de referência, normalmente relógios atômicos. No mundo moderno, todos os sistemas informáticos conectados à Internet podem ser sincronizados com esses relógios de referência usando o chamado Network Time Protocol (NTP). Um sistema informático com NTP será capaz de sincronizar os relógios do sistema com a hora fornecida pelos relógios de referência. Se a hora do sistema e a hora medida nesses servidores forem diferentes, o computador aumentará ou diminuirá a hora do sistema interno gradativamente até que a hora do sistema corresponda à hora da rede.
O NTP emprega uma estrutura hierárquica para divulgar o tempo. Os relógios de referência são conectados a servidores no topo da hierarquia. Esses servidores são máquinas Estrato 1 e, normalmente, não são acessíveis ao público. As máquinas Estrato 1 são, entretanto, acessíveis a máquinas Estrato 2, por sua vez acessíveis a máquinas Estrato 3 e assim por diante. Os servidores Estrato 2 são acessíveis ao público, assim como qualquer máquina inferior na hierarquia. Ao configurar o NTP para uma rede grande, é recomendável conectar um pequeno número de computadores aos servidores Estrato 2+ e, a partir daí, fazer com que essas máquinas forneçam o NTP a todas as outras máquinas. Desta forma, minimizam-se as demandas sobre as máquinas Estrato 2.
Alguns termos são importantes ao se falar em NTP. Alguns desses termos aparecem nos comandos que usamos para rastrear o status do NTP em nossas máquinas:
- Deslocamento (offset)
-
Refere-se à diferença absoluta entre a hora do sistema e a hora NTP. Por exemplo, se o relógio do sistema marca 12:00:02 e o horário NTP é 11:59:58, o deslocamento entre os dois relógios é de quatro segundos.
- Salto (step)
-
Se o deslocamento de tempo entre o provedor NTP e um consumidor for maior que 128ms, o NTP executará uma única alteração significativa na hora do sistema, em vez de desacelerar ou acelerar o relógio do sistema. Isso é chamado de stepping.
- Ajuste gradativo (slew)
-
Slew refere-se às alterações feitas na hora do sistema quando o deslocamento entre a hora do sistema e o NTP é menor que 128ms. Se esse for o caso, as alterações serão feitas gradualmente. Isso é conhecido como slewing.
- Relógio insano
-
Se o deslocamento entre a hora do sistema e a hora NTP for maior que 17 minutos, o tempo do sistema é considerado insano e o daemon NTP não introduzirá nenhuma alteração no relógio do sistema. Será preciso tomar medidas especiais para trazer a hora do sistema até menos de 17 minutos da hora correta.
- Escorregamento ou deslizamento (drift)
-
O escorregamento se refere ao fenômeno em que dois relógios ficam fora de sincronia com o tempo. Essencialmente, se dois relógios são inicialmente sincronizados, mas vão ficando fora de sincronia com o passar do tempo, está ocorrendo um escorregamento do relógio.
- Variação (jitter)
-
A variação refere-se à quantidade de escorregamento desde a última vez em que um relógio foi consultado. Portanto, se a última sincronização com o NTP ocorreu há 17 minutos, e o deslocamento entre o provedor NTP e o consumidor é de 3 milissegundos, então 3 milissegundos é a variação.
Agora vamos discutir algumas das maneiras específicas como o Linux implementa o NTP.
timedatectl
Se sua distribuição Linux usa timedatectl
, por padrão ela implementa um cliente SNTP ao invés de uma implementação NTP completa. Esta é uma implementação menos complexa de tempo de rede e significa que a máquina não servirá NTP para outros computadores conectados.
Neste caso, o SNTP não funcionará a menos que o serviço timesyncd
esteja rodando. Como acontece com todos os serviços systemd, podemos verificar se ele está rodando com:
$ systemctl status systemd-timesyncd ● systemd-timesyncd.service - Network Time Synchronization Loaded: loaded (/lib/systemd/system/systemd-timesyncd.service; enabled; vendor preset: enabled) Drop-In: /lib/systemd/system/systemd-timesyncd.service.d └─disable-with-time-daemon.conf Active: active (running) since Thu 2020-01-09 21:01:50 EST; 2 weeks 1 days ago Docs: man:systemd-timesyncd.service(8) Main PID: 1032 (systemd-timesyn) Status: "Synchronized to time server for the first time 91.189.89.198:123 (ntp.ubuntu.com)." Tasks: 2 (limit: 4915) Memory: 3.0M CGroup: /system.slice/systemd-timesyncd.service └─1032 /lib/systemd/systemd-timesyncd Jan 11 13:06:18 NeoMex systemd-timesyncd[1032]: Synchronized to time server for the first time 91.189.91.157:123 (ntp.ubuntu.com). ...
O status da sincronização SNTP timedatectl
pode ser verificado com show-timesync
:
$ timedatectl show-timesync --all LinkNTPServers= SystemNTPServers= FallbackNTPServers=ntp.ubuntu.com ServerName=ntp.ubuntu.com ServerAddress=91.189.89.198 RootDistanceMaxUSec=5s PollIntervalMinUSec=32s PollIntervalMaxUSec=34min 8s PollIntervalUSec=34min 8s NTPMessage={ Leap=0, Version=4, Mode=4, Stratum=2, Precision=-23, RootDelay=8.270ms, RootDispersion=18.432ms, Reference=91EECB0E, OriginateTimestamp=Sat 2020-01-25 18:35:49 EST, ReceiveTimestamp=Sat 2020-01-25 18:35:49 EST, TransmitTimestamp=Sat 2020-01-25 18:35:49 EST, DestinationTimestamp=Sat 2020-01-25 18:35:49 EST, Ignored=no PacketCount=263, Jitter=2.751ms } Frequency=-211336
Essa configuração pode ser adequada para a maioria das situações; porém, conforme já observamos, ela é insuficiente quando se deseja sincronizar diversos clientes em uma rede. Nesse caso, é recomendável instalar um cliente NTP completo.
Daemon NTP
A hora do sistema é regularmente comparada à hora da rede. Para que isso funcione, é necessário ter um daemon rodando em segundo plano. Em muitos sistemas Linux, o nome desse daemon é ntpd
. O ntpd
permite que uma máquina não seja apenas um consumidor de tempo (isto é, capaz de sincronizar seu próprio relógio a partir de uma fonte externa), mas também forneça tempo para outras máquinas.
Vamos supor que nosso computador seja baseado no systemd e use systemctl
para controlar os daemons. Vamos instalar os pacotes ntp
usando o gerenciador de pacotes apropriado e, em seguida, verificar se o daemon ntpd
está rodando:
$ systemctl status ntpd ● ntpd.service - Network Time Service Loaded: loaded (/usr/lib/systemd/system/ntpd.service; enabled; vendor preset: disabled) Active: active (running) since Fri 2019-12-06 03:27:21 EST; 7h ago Process: 856 ExecStart=/usr/sbin/ntpd -u ntp:ntp $OPTIONS (code=exited, status=0/SUCCESS) Main PID: 867 (ntpd) CGroup: /system.slice/ntpd.service `-867 /usr/sbin/ntpd -u ntp:ntp -g
Em alguns casos, pode ser necessário iniciar e habilitar o ntpd
. Na maioria das máquinas Linux, isso é feito com:
# systemctl enable ntpd && systemctl start ntpd
As consultas NTP acontecem na porta TCP 123. Se o NTP falhar, verifique essa porta está aberta e escutando.
Configuração do NTP
O NTP pode pesquisar várias fontes e selecionar os melhores candidatos a serem usados para definir a hora do sistema. Se uma conexão de rede for perdida, o NTP utiliza os ajustes anteriores de seu histórico para estimar os ajustes futuros.
Dependendo da distribuição do Linux, a lista de servidores de hora da rede será armazenada em locais diferentes. Vamos supor que ntp
esteja instalado em sua máquina.
O arquivo /etc/ntp.conf
contém informações de configuração sobre como o sistema se sincroniza ao tempo da rede. Esse arquivo pode ser lido e modificado com vi
ou nano
.
Por padrão, os servidores NTP usados serão especificados em uma seção como esta:
# Use public servers from the pool.ntp.org project. # Please consider joining the pool (http://www.pool.ntp.org/join.html). server 0.centos.pool.ntp.org iburst server 1.centos.pool.ntp.org iburst server 2.centos.pool.ntp.org iburst server 3.centos.pool.ntp.org iburst
A sintaxe para adicionar servidores NTP é assim:
server (IP Address) server server.url.localhost
Os endereços de servidor podem ser endereços IP ou URLs se o DNS tiver sido configurado corretamente. Nesse caso, o servidor sempre será consultado.
Um administrador de rede também pode considerar o uso (ou configuração) de um pool. Neste caso, pressupomos que existam diversos provedores NTP, todos executando daemons NTP e com o mesmo tempo. Quando um cliente consulta um pool, um provedor é selecionado aleatoriamente. Isso ajuda a distribuir a carga da rede entre muitas máquinas, de forma que nenhuma máquina do pool fique encarregada de todas as consultas de NTP.
Em geral /etc/ntp.conf
estará equipado de um pool de servidores chamado pool.ntp.org
. Assim, por exemplo, server 0.centos.pool.ntp.org
é um pool NTP padrão fornecido para as máquinas CentOS.
pool.ntp.org
Os servidores NTP usados por padrão são um projeto de código aberto. Mais informações podem ser encontradas em ntppool.org.
Considere se o uso de do NTP Pool é apropriado para o seu caso. Se a empresa, a organização ou uma vida humana dependem de um horário correto ou podem ser prejudicados se ele estiver incorreto, você não deve apenas “baixar um negócio da internet”". O NTP Pool é geralmente de altíssima qualidade, mas é um serviço executado por voluntários em seu tempo livre. Fale com seus fornecedores de equipamentos e de serviço sobre como obter um serviço local e confiável configurado para você. Consulte também nossos termos de serviço. Recomendamos os servidores de horário da Meinberg, mas você também pode encontrar servidores de horário da End Run, Spectracom e muitos outros.
ntpdate
Durante a configuração inicial, a hora do sistema e o NTP podem ser seriamente dessincronizados. Se o deslocamento entre o sistema e a hora NTP for maior que 17 minutos, o daemon NTP não fará alterações na hora do sistema. Neste caso, será necessária uma intervenção manual.
Primeiramente, se ntpd
estiver rodando, será necessário interromper o serviço. Use systemctl stop ntpd
para fazer isso.
Em seguida, use ntpdate pool.ntp.org
para realizar uma sincronização inicial única, onde pool.ntp.org
se refere ao endereço IP ou URL de um servidor NTP. Pode ser necessária mais de uma sincronização.
ntpq
ntpq
é um utilitário para monitorar o status do NTP. Uma vez que o daemon NTP foi iniciado e configurado, usamos ntpq
para verificar seu status:
$ ntpq -p remote refid st t when poll reach delay offset jitter ============================================================================== +37.44.185.42 91.189.94.4 3 u 86 128 377 126.509 -20.398 6.838 +ntp2.0x00.lv 193.204.114.233 2 u 82 128 377 143.885 -8.105 8.478 *inspektor-vlan1 121.131.112.137 2 u 17 128 377 112.878 -23.619 7.959 b1-66er.matrix. 18.26.4.105 2 u 484 128 10 34.907 -0.811 16.123
Neste caso, -p
significa imprimir, ou seja, exibir um resumo dos pares. Os endereços de host também podem ser retornados como endereços IP usando -n
.
remote
-
nome do host do provedor NTP.
refid
-
ID de referência do provedor NTP.
st
-
Estrato do provedor.
when
-
Número de segundos desde a última consulta.
poll
-
Número de segundos entre as consultas.
reach
-
ID de status para indicar se um servidor foi alcançado. As conexões bem-sucedidas aumentam este número em 1.
delay
-
Tempo em ms entre a consulta e a resposta do servidor.
offset
-
Tempo em ms entre a hora do sistema e a hora NTP.
jitter
-
Deslocamento em ms entre a hora do sistema e o NTP na última consulta.
ntpq
também inclui um modo interativo, que é acessado quando ele é executado sem opções ou argumentos. A opção ?
retorna uma lista de comandos reconhecidos pelo ntpq
.
chrony
chrony
é outra forma de implementar o NTP. Ele é instalado por padrão em alguns sistemas Linux, mas está disponível para download em todas as principais distribuições. chronyd
é o daemon chrony e chronyc
é a interface de linha de comando. Pode ser necessário iniciar e habilitar chronyd
antes de interagir com chronyc
.
Se a instalação do chrony tiver uma configuração padrão, o uso do comando chronyc tracking
fornecerá informações sobre o NTP e a hora do sistema:
$ chronyc tracking Reference ID : 3265FB3D (bras-vprn-toroon2638w-lp130-11-50-101-251-61.dsl.) Stratum : 3 Ref time (UTC) : Thu Jan 09 19:18:35 2020 System time : 0.000134029 seconds fast of NTP time Last offset : +0.000166506 seconds RMS offset : 0.000470712 seconds Frequency : 919.818 ppm slow Residual freq : +0.078 ppm Skew : 0.555 ppm Root delay : 0.006151616 seconds Root dispersion : 0.010947504 seconds Update interval : 129.8 seconds Leap status : Normal
Essa saída contém muitas informações, mais do que as que estão disponíveis em outras implementações.
Reference ID
-
O ID de referência e o nome ao qual o computador está sincronizado no momento.
Stratum
-
Número de passos até um computador com um relógio de referência anexado.
Ref time
-
Esta é a hora UTC em que a última medição da fonte de referência foi feita.
System time
-
Atraso do relógio do sistema do servidor sincronizado.
Last offset
-
Deslocamento estimado da última atualização do relógio.
RMS offset
-
Média de longo prazo do valor do deslocamento.
Frequency
-
Esta é a taxa na qual o relógio do sistema estaria errado se o chronyd não o estivesse corrigindo. É fornecida em ppm (partes por milhão).
Residual freq
-
Frequência residual indicando a diferença entre as medições da fonte de referência e a frequência atualmente sendo usada.
Skew
-
Limite de erro estimado da frequência.
Root delay
-
Total de atrasos do caminho de rede até o computador do estrato a partir do qual o computador está sendo sincronizado.
Leap status
-
Este é o status de intercalação, que pode ter um dos seguintes valores: normal, inserir segundo, excluir segundo ou não sincronizado.
Também podemos ver informações detalhadas sobre a última atualização válida do NTP:
# chrony ntpdata Remote address : 172.105.97.111 (AC69616F) Remote port : 123 Local address : 192.168.122.81 (C0A87A51) Leap status : Normal Version : 4 Mode : Server Stratum : 2 Poll interval : 6 (64 seconds) Precision : -25 (0.000000030 seconds) Root delay : 0.000381 seconds Root dispersion : 0.000092 seconds Reference ID : 61B7CE58 () Reference time : Mon Jan 13 21:50:03 2020 Offset : +0.000491960 seconds Peer delay : 0.004312567 seconds Peer dispersion : 0.000000068 seconds Response time : 0.000037078 seconds Jitter asymmetry: +0.00 NTP tests : 111 111 1111 Interleaved : No Authenticated : No TX timestamping : Daemon RX timestamping : Kernel Total TX : 15 Total RX : 15 Total valid RX : 15
Finalmente, chronyc sources
retorna informações sobre os servidores NTP usados para sincronizar a hora:
$ chronyc sources 210 Number of sources = 0 MS Name/IP address Stratum Poll Reach LastRx Last sample ===============================================================================
No momento, esta máquina não possui fontes configuradas. Podemos adicionar fontes de pool.ntp.org
abrindo o arquivo de configuração do chrony. Geralmente, ele fica em /etc/chrony.conf
. Quando abrimos este arquivo, podemos ver que alguns servidores estão listados por padrão:
210 Number of sources = 0 MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== # Most computers using chrony will send measurement requests to one or # more 'NTP servers'. You will probably find that your Internet Service # Provider or company have one or more NTP servers that you can specify. # Failing that, there are a lot of public NTP servers. There is a list # you can access at http://support.ntp.org/bin/view/Servers/WebHome or # you can use servers from the 3.arch.pool.ntp.org project. ! server 0.arch.pool.ntp.org iburst iburst ! server 1.arch.pool.ntp.org iburst iburst ! server 2.arch.pool.ntp.org iburst iburst ! pool 3.arch.pool.ntp.org iburst
Esses servidores também servirão como um guia de sintaxe ao inserir nossos próprios servidores. No entanto, neste caso, simplesmente removeremos os !
no início de cada linha, fazendo com que deixem de ser comentários, para usar os servidores padrão do projeto pool.ntp.org
.
Além disso, neste arquivo, podemos optar por alterar a configuração padrão em relação ao skew (diferença entre a frequência real e a ideal) e ao escorregamento, bem como a localização do driftfile e do keyfile.
Nesta máquina, precisamos fazer uma grande correção inicial do relógio. Optamos por remover o comentário da seguinte linha:
! makestep 1.0 3
Depois de fazer alterações no arquivo de configuração, reinicie o serviço chronyd
e use chronyc makestep
para ajustar manualmente o relógio do sistema:
# chronyc makestep 200 OK
E então use chronyc tracking
como anteriormente para verificar se as alterações foram realizadas.
Exercícios Guiados
-
Insira o termo apropriado para cada definição:
Definição Termo Um computador que compartilha o tempo de rede com você
A distância de um relógio de referência, em passos ou saltos
A diferença entre o tempo do sistema e o tempo da rede
A diferença entre o tempo do sistema e o tempo da rede desde a última consulta ao NTP
Grupo de servidores que fornecem tempo de rede e compartilham a carga entre si
-
Especifique os comandos usados para gerar os seguintes valores:
Valor chronyc tracking
timedatectl show-timesync --all
ntpq -pn
chrony ntpdata
chronyc sources
Variação
Escorregamento
Intervalo de Consulta
Deslocamento
Estrato
Endereço IP do provedor
Atraso da raiz
-
Você está configurando uma rede corporativa que consiste em um servidor Linux e diversos desktops Linux. O servidor tem o endereço IP estático 192.168.0.101. Você decide que o servidor se conectará a
pool.ntp.org
e, em seguida, fornecerá o tempo NTP aos computadores pessoais. Descreva a configuração do servidor e dos computadores. -
Uma máquina Linux está com a hora incorreta. Descreva as etapas que você executaria para solucionar os problemas de NTP.
Exercícios Exploratórios
-
Pesquise as diferenças entre SNTP e NTP.
SNTP NTP -
Por que um administrador de sistema optaria por não usar
pool.ntp.org
? -
Como um administrador de sistema escolheria participar ou contribuir de outra forma com o projeto
pool.ntp.org
?
Resumo
Nesta lição, você aprendeu:
-
O que é NTP e por que é importante.
-
Configurar o daemon NTP do projeto
pool.ntp.org
. -
Usar
ntpq
para verificar a configuração de NTP. -
Usar
chrony
como serviço de NTP alternativo.
Comandos usados nesta lição:
timedatectl show-timesync --all
-
Exibe informações de SNTP se
timedatectl
estiver sendo usado. ntpdate <address>
-
Realiza uma atualização manual única do NTP.
ntpq -p
-
Imprime um histórico das consultas recentes de NTP.
-n
substitui as URLs por endereços IP. chronyc tracking
-
Exibe o status do NTP se o chrony estiver sendo usado.
chronyc ntpdata
-
Exibe informações de NTP sobre a última consulta.
chronyc sources
-
Exibe informações sobre provedores NTP.
chronyc makestep
-
Realiza uma atualização manual única do NTP se o chrony estiver sendo usado.
Respostas aos Exercícios Guiados
-
Insira o termo apropriado para cada definição:
Definição Termo Um computador que compartilha o tempo de rede com você
Provedor
A distância de um relógio de referência, em passos ou saltos
Estrato
A diferença entre o tempo do sistema e o tempo da rede
Deslocamento
A diferença entre o tempo do sistema e o tempo da rede desde a última consulta ao NTP
Variação
Grupo de servidores que fornecem tempo de rede e compartilham a carga entre si
Pool
-
Especifique os comandos usados para gerar os seguintes valores:
Valor chronyc tracking
timedatectl show-timesync --all
ntpq -pn
chrony ntpdata
chronyc sources
Variação
X
X
Escorregamento
Intervalo de Consulta
X
X
X (coluna
when
)X
X
Deslocamento
X
X
X
Estrato
X
X
X
X
X
Endereço IP do provedor
X
X
X
X
Atraso da raiz
X
X
-
Você está configurando uma rede corporativa que consiste em um servidor Linux e diversos desktops Linux. O servidor tem o endereço IP estático 192.168.0.101. Você decide que o servidor se conectará a
pool.ntp.org
e, em seguida, fornecerá o tempo NTP aos computadores pessoais. Descreva a configuração do servidor e dos computadores.Verifique se o servidor tem um serviço ntpd em execução, em vez de SNTP. Use os pools de
pool.ntp.org
no arquivo/etc/ntp.conf
ou/etc/chrony.conf
. Para cada cliente, especifique192.168.0.101
em cada arquivo de/etc/ntp.conf
ou/etc/chrony.conf
. -
Uma máquina Linux está com a hora incorreta. Descreva as etapas que você executaria para solucionar os problemas de NTP.
Primeiro, verifique se a máquina está conectada à Internet. Use
ping
para isso. Confira se um serviço ntpd ou SNTP está sendo executado usandosystemctl status ntpd
ousystemctl status systemd-timesyncd
. Podem surgir mensagens de erro com informações úteis. Finalmente, use um comando comontpq -p
ouchrony tracking
para verificar se alguma solicitação foi feita. Se a hora do sistema for drasticamente diferente da hora da rede, pode ser que a hora do sistema seja considerada “insana” e não possa ser alterada sem intervenção manual. Nesse caso, use um comando da lição anterior ou um comando comontpdate pool.ntp.org
para realizar uma sincronização ntp única.
Respostas aos Exercícios Exploratórios
-
Pesquise as diferenças entre SNTP e NTP.
SNTP NTP menos preciso
mais preciso
exige menos recursos
exige mais recursos
não pode atuar como provedor de tempo
pode atuar como provedor de tempo
apenas saltos de tempo
saltos ou alterações gradativas
solicita tempo de uma única fonte
pode monitorar diversos servidores NTP e usar o provedor ideal
-
Por que um administrador de sistema optaria por não usar
pool.ntp.org
?Do site ntppool.org: Se for absolutamente essencial ter o horário correto, é melhor considerar uma alternativa. Da mesma forma, se o seu provedor de Internet oferecer um servidor de hora, é recomendável usá-lo.
-
Como um administrador de sistema escolheria participar ou contribuir de outra forma com o projeto
pool.ntp.org
?De www.ntppool.org: Seu servidor deve ter um endereço IP estático e uma conexão permanente com a Internet. O endereço IP estático não deve ser alterado ou ser alterado menos de uma vez ao ano. Além disso, os requisitos de largura de banda são modestos: 384 - 512 Kbit de largura de banda. Os servidores Estrato 3 ou 4 são bem-vindos.