NTPD

NTPD

Eu gostaria de usar o ntpddaemon comum para testar se o tempo é mantido por uma máquina virtual ou não, sem deixá-lo realmenteajustaro 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 já poderia estar usando o VirtualBox Guest Additions para fazer isso (não sei como isso funciona) e que eu poderia estar atrapalhando o tempo ao executar ntpdo convidado.

Para testar isso, pensei em configurar ntpdna VM Solaris paramonitoralguns servidores de horário públicos, mas de alguma forma evita que ele modifique o relógio local. Dessa forma, eu poderia observar a aparência dos registros loopstatse peerstatsao longo do tempo para ver se o relógio local realmente marcava o horário.

O problema é que não consigo encontrar nenhuma dica sobre como parar ntpdde ajustar o relógio local.

Eu também queria fazer isso no passado em sistemas onde uso openntpd(do OpenBSD) para manter o tempo real. O ntpddaemon poderia então ficar em segundo plano e monitorar, sem interferir. Mas também não consegui encontrar nenhuma maneira de conseguir isso.

Responder1

NTPD

Entendendo que vocêdeveuse ntpd, as únicas opções AFAIK são:

desabilitar NTP

Como visto ema ntp.confpágina do manualexiste a possibilidade de desabilitar o ntpLoop de feedback, ou, em termos leigos: remover a capacidade de calcular correções de horário entre servidores de horário e o relógio local. A ntp.conflinha necessária para ativar tal opção é:

disable ntp

Nota: ao usar esta opção o tempo que o ntpd pode dar a outros sistemas que solicitam uma referência de tempo pode estar errado/desligado. Parece razoável usar uma linha para denynegar 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).

Observação:Não está completamente claro para mim se o relógio do sistema é realmente deixado para "funcionar livremente" pelo ntpd. No entanto, é uma opção documentada, portanto, se o ntpd não cumprir o que está documentado, é um bug.

minsano

minsane minsane
Este é o número mínimo de candidatos disponíveis para o algoritmo de seleção de relógio, a fim de produzir um ou mais truechimers para o algoritmo de agrupamento. Se menos do que este número estiver disponível,o relógio é indisciplinado e pode funcionar livremente.

Isso é feito definindo uma linha (in ntp.conf) como:

tos minsane 100

Ou algum outro número alto (maior que os servidores disponíveis ou utilizados).

Nota: não está claro para mim que o valor do desvio do kernel seja redefinido para 0 para evitar que o valor do relógio mude lentamente. Pode ser razoável definir adicionalmente disable kernelpara desabilitar as funções de disciplina do kernel.

Relacionado

ntpd -qn

Quando um ntpdservidor está em execução, ntpq -pnpode relatar quão bem o servidor NTPD está fazendo seu trabalho de manter o relógio do sistema sincronizado. Essa é uma forma alternativa de registrar a diferença horária.

ntpdate -q

O pacote ntpdate(que está marcado como obsoleto) pode ser usado para verificar a diferença de horário com:

ntpdate -q 'pool.ntp.org'         # marked as deprecated.

Use ntpdate -qu 'pool.ntp.org'para que o comando não precise de privilégios de root para ser executado ( -usignifica "usar portas de rede sem privilégios", ainda assim, o executável deve estar acessível ao usuário).

sntp

Existe um programa simples para consultar (não altere se nenhuma opção -s ou -S for usada):

sntp pool.ntp.org

data de atualização

O programa rdateé capaz de mostrar a hora remota (e a hora local):

rdate -np pool.ntp.org; date

Onde -nsignifica: Usar SNTP (RFC 2030) em vez do protocolo de tempo RFC 868 (padrão); e, para apenasimprimiro resultado sem fazer quaisquer alterações reais.

No entanto, este programa está limitado a uma resolução de segundos inteiros (não frações). E issonão tem opções no solaris

crônica

O pacote substituto do ntp (chrony) é capaz de executar um teste de diferença de horário sem acertar o relógio do sistema:

chronyd -Q 'pool pool.ntp.org iburst'

Acredito que todos esses são métodos para detectar (sem alterar) a diferença de horário entre o horário NTP da Internet e o horário do sistema.

Responder2

Duvido que isso seja possível ntpdpronto para uso:

Juntando esses dois, é altamente improvável que o ntpd tenha um modo que possa manter adequadamente os valores desses parâmetros sem fazer ajustes em tempo real paraaclock, onde o único relógio disponível é o relógio do sistema.


Na sua pergunta não está claro se você realmente precisa ntpd. Qualquer cliente [S]NTP serviria.

Se você se sentir confortável com um pouco de código, poderá criar algo que possa pesquisar os servidores sem recalibrar o relógio do sistema.

Por exemplo, existe uma biblioteca NTP para python chamadantplib. Um script para imprimir o deslocamento em uma enquete de 60 segundos pode ser assim:

import ntplib
import sys
import time

def main(*args):
    ntp_client = ntplib.NTPClient()
    while True:
        for server in args:
            try:
                response = ntp_client.request(server, version=3)
                print(response.offset)
                time.sleep(60)
            except ntplib.NTPException:
                print("query failed: {}".format(server))

if __name__ == "__main__":
    if len(sys.argv) == 1:
        # Do not use this server for commertial software without permission
        main('pool.ntp.org')
    else:
        main(sys.argv[1:])

Coloque isso em um arquivo ntp_check.py. Certifique-se de ter o ntplib instalado com pip install ntplibdisrebutions específicos ( apt-get install python3-ntplib). Então chame com:

python3 ntp_check.py

informação relacionada