Eu gostaria de usar o ntpd
daemon comum para testar se o tempo é mantido por uma máquina virtual ou não, sem deixá-lo realmente ajustar o relógio.
Estou executando o Solaris 11.4 (imagem padrão da Oracle para Intel) dentro do VirtualBox em um sistema macOS e não consigo sincronizar corretamente. Ocorreu-me que a VM pode estar usando o VirtualBox Guest Additions para fazer isso (não sei como isso funciona) e que posso estar atrapalhando o tempo executando ntpd
o convidado.
Para testar isso, pensei em configurar ntpd
no Solaris VM para monitorar alguns servidores de horário público, mas de alguma forma impedir que ele modificasse o relógio local. Dessa forma, eu poderia ver como os logs loopstats
e os peerstats
registros pareciam ao longo do tempo para ver se o relógio local realmente mantinha um bom tempo.
O problema é que não consigo encontrar nenhuma dica sobre como parar ntpd
de ajustar o relógio local.
Eu queria fazer isso no passado também em sistemas onde eu uso openntpd
(do OpenBSD) para manter o tempo real. O ntpd
daemon poderia então ficar em segundo plano e monitorar, sem interferir. Mas também não consegui encontrar nenhuma maneira de conseguir isso.
Duvido que isso seja possível com
ntpd
fora da caixa:ntpd
não guarda um "terceiro" relógio. (Onde os dois primeiros são o relógio do sistema e o relógio monotônico ) .ntpd
é escrito para fazer ajustes não apenas na hora atual, mas também ajustar os parâmetros que controlam a velocidade de execução do relógio do sistema . Implicitamente está escrito para monitorar o efeito desses ajustes.Colocando esses dois juntos, é altamente improvável que o ntpd tenha um modo que possa manter adequadamente os valores para esses parâmetros sem fazer ajustes em tempo real em um relógio, onde o único relógio disponível para ele é o relógio do sistema.
Na sua pergunta, não está claro que você realmente precisa do
ntpd
. Qualquer cliente [S]NTP serviria.Se você se sentir confortável com um pouco de código, talvez consiga reunir algo que possa sondar os servidores para você sem recalibrar o relógio do sistema.
Como exemplo, existe uma biblioteca NTP para python chamada ntplib . Um script para imprimir o deslocamento em uma pesquisa de 60 segundos pode ser assim:
Coloque isso em um arquivo
ntp_check.py
. Certifique-se de que você tenha o ntplib instalado com umpip install ntplib
ou distrebutions específicos (apt-get install python3-ntplib
). Então chame com:ntpd
Entendendo que você deve usar o ntpd, as únicas opções do AFAIK são:
desativar ntp
Como visto na página do
ntp.conf
manual existe a possibilidade de desabilitar o loop de feedback ntp , ou, em termos leigos: remover a capacidade de calcular correções de tempo entre os servidores de tempo e o relógio local. Antp.conf
linha necessária para ativar tal opção é:Nota: ao usar esta opção, o tempo que o ntpd pode fornecer a outros sistemas solicitando uma referência de tempo pode estar errado/desligado. Parece razoável usar uma linha de
deny
para negar todas as consultas de tempo de outros sistemas, a menos que você queira monitorar o desvio de tempo de um sistema externo (use negar e permitir o IP do sistema externo).Nota: Não está completamente claro para mim que o relógio do sistema é realmente deixado para "executar livre" pelo ntpd. No entanto, é uma opção documentada, portanto, se o ntpd não cumprir o que está documentado, é um bug.
minsano
Isso é feito definindo uma linha ( in
ntp.conf
) como:Ou algum outro número alto (maior que os servidores disponíveis ou usados).
Nota: não está claro para mim que o valor de desvio do kernel seja redefinido para 0 para evitar que o relógio mude lentamente de valor. Pode ser razoável definir adicionalmente o
disable kernel
para desabilitar as funções de disciplina do kernel.Relacionado
ntpd -qn
Quando um
ntpd
servidor está em execuçãontpq -pn
, pode relatar o quão bem o servidor ntpd está fazendo seu trabalho de manter o relógio do sistema sincronizado. Essa é uma maneira alternativa de registrar a diferença de horário.ntpdate -q
O pacote
ntpdate
(que está marcado como obsoleto) pode ser usado para verificar a diferença de horário com:Use
ntpdate -qu 'pool.ntp.org'
para que o comando não precise de privilégios de root para ser executado (-u
significa "usar portas de rede não privilegiadas", ainda assim, o executável deve estar acessível ao usuário).sntp
Existe um programa simples para consultar (não muda se nenhuma opção -s ou -S for usada):
data
O programa
rdate
é capaz de mostrar a hora remota (e a hora local):Onde
-n
significa: Use SNTP (RFC 2030) em vez do protocolo de tempo RFC 868 (padrão); e, para imprimir apenas o resultado sem fazer nenhuma alteração real.No entanto, este programa está limitado a uma resolução de segundos inteiros (não frações). E, não tem opções em solaris
cronista
O pacote de substituição do ntp (chrony) é capaz de executar um teste de diferença de horário sem ajustar o relógio do sistema:
Acredito que esses são todos os métodos para detectar (sem alterar) a diferença de tempo entre o tempo ntp da internet e o tempo do sistema.