Existe alguma maneira de fazer o ntpd consultar iterativamente os endereços do servidor fornecidos no arquivo ntp.conf?

2

Suponha que a máquina tenha um arquivo ntp.conf com esta aparência:

driftfile < path-to-drift-file >
servidor < NTP-server-1 >
servidor < NTP-server-2 >
servidor < NTP-server-2 >

Por alguma razão, digamos que o servidor NTP não esteja sendo executado na primeira consulta para todos os servidores. Podemos fazer o ntpd reiterar a consulta dessas fontes (por exemplo, consultar novamente o server-1 para o server-3 em um loop)? Como fazemos isso?

Edit: Existe alguma maneira de determinar quantitativamente qual servidor causou a sincronização de tempo real da lista de servidores fornecida no ntp.conf na máquina?

    
por Arpith 03.10.2012 / 21:20

2 respostas

6

Todos os servidores definidos em /etc/ntp.conf são usados para sincronizar a hora. Não há necessidade de tê-lo "loop" através dos servidores como o algoritmo já lida com várias fontes.

The ntpd program operates by exchanging messages with one or more configured servers at designated poll intervals.

De: man ntpd

Você pode ver isso executando ntpq -p na linha de comando para mostrar seus colegas e seu status.

Você pode ver a saída como mostrado aqui:

  remote           refid      st when poll reach   delay  offset    disp
========================================================================
+128.4.2.6    132.249.16.1     2  131  256  373     9.89   16.28   23.25
*128.4.1.20   .WWVB.           1  137  256  377   280.62   21.74   20.23
-128.8.2.88   128.8.10.1       2   49  128  376   294.14    5.94   17.47
+128.4.2.17   .WWVB.           1  173  256  377   279.95   20.56   16.40

A saída é explicada nas páginas do manual também. Mas, com o tempo, colecionei algumas notas:

remote: peers specified in the ntp.conf file
* = current time source
# = source selected, distance exceeds maximum value
o = source selected, Pulse Per Second (PPS) used
+ = source selected, included in final set
x = source false ticker
. = source selected from end of candidate list
- = source discarded by cluster algorithm
blank = source discarded high stratum, failed sanity

refid: remote source’s synchronization source

stratum: stratum level of the source

t: types available
l = local (such as a GPS, WWVB)
u = unicast (most common)
m = multicast
b = broadcast
- = netaddr

when: number of seconds passed since last response

poll: polling interval, in seconds, for source

reach: indicates success/failure to reach source, 377 all attempts successful

delay: indicates the round trip time, in milliseconds, to receive a reply

offset: indicates the time difference, in milliseconds, between the client server and source

disp/jitter: indicates the difference, in milliseconds, between two samples

Finalmente, para responder a última pergunta;

Is there any way to quantitatively determine which server caused the actual time sync from the list of servers given in the ntp.conf in the machine?

O host indicado com o (*) é sua fonte de tempo selecionada no momento. Isso pode mudar durante a votação.

    
por 04.10.2012 / 13:37
0

O Ntpd irá, na inicialização, consultar todo o servidor configurado e escolher aquele com o menor estrato. Se esse falhar, ele automaticamente cairá no próximo servidor. Então, por que você quer mudar isso?

Wikipedia: protocolo de horário da rede - estratos do relógio

Editar: Depois de verificar ao redor, encontrei algumas informações sobre o parâmetro iburst , que é na verdade destinado a acelerar a sincronização do relógio. A diferença aqui é que isso fará com que o servidor ntpd saia quando não puder acessar o servidor. Você poderia abusar disso de uma maneira para ter certeza de que uma instância do ntpd está rodando o tempo todo, por exemplo, usando um watchdog ou um script simples executado pelo cron de vez em quando.

Infelizmente, não consegui descobrir qual é o comportamento padrão do ntpd quando nenhum servidor está acessível; embora eu tenha encontrado muitas referências sobre como ela se comportará quando os servidores não resolverem no DNS (por exemplo, bug ) ou quando a interface fica inativa .

    
por 03.10.2012 / 21:24

Tags