Determinar a diferença de horário entre dois servidores linux

23

Estou solucionando um problema de latência na rede. Provavelmente, é um problema comum ou de cabeamento, mas enquanto eu estava no processo de descobrir isso, observava os horários de um pacote de ping saindo de uma placa de rede e chegando a outro servidor. Ambos linux.

Então, eu tenho o tcpdump rodando em ambos, e emito um ping de um para o outro, e de novo, e observar as diferenças de tempo pode ter esclarecido a origem da latência.

É um exercício acadêmico agora, pois preciso eliminar algumas causas mais fundamentais, mas fiquei curioso para saber como isso poderia ser alcançado. Como o ntpd está instalado e em execução em dois servidores, como posso confirmar a discrepância de tempo atual entre os dois servidores, para qualquer nível de precisão possível - considerando que estamos falando de latência em uma LAN local, o que é ideal em milissegundos ou então.

O próprio NTP é preciso para alguns ms em boas condições e, como os dois servidores estão no mesmo ambiente, eles devem (presumivelmente) atingir um nível semelhante de precisão e, portanto, devem ter uma discrepância de tempo de apenas alguns ms - mas como posso verificar isso?

Paulo
fonte

Respostas:

14

Se os dois servidores forem pares NTP, use

  ntpq -p

Que mostrará as compensações atuais

Observe que o NTP leva em consideração a latência da rede. Se você conhece o deslocamento de cada servidor em relação a um servidor NTP comum, isso é o mais preciso possível com as ferramentas padrão.


ATUALIZAR

Eu tenho dois servidores unix usando NTP. Vamos ver que tipo de tempo eles estão mantendo:

$ sudo /usr/sbin/ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 hufu.ki.iif.hu  185.219.2.214    2 u   12   64    1   71.755   -0.073   0.001
 web.puflet.info 188.138.107.156  3 u   11   64    1   78.248    0.417   0.001
 84.2.44.19      10.20.75.140     2 u   10   64    1   74.721   -1.076   0.001

$ sudo /usr/sbin/ntpq -p otherbox
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+ntp2.exa-networ 195.66.241.10    2 u  799 1024  377   43.405    7.796 218.471
+mantaray.netine 249.240.53.144   3 u  289 1024  377   34.782    8.484 212.631
*rilynn.me.uk    81.2.117.228     2 u  765 1024  377   45.665    6.804 142.023
+ntp.thirdlight. 193.67.79.202    2 u  791 1024  377   38.322    9.871 223.397

Eles estão usando servidores diferentes porque usam servidores do pool ntp.

Adicionarei outra caixa temporariamente à configuração deste servidor para que eu possa medir diretamente o deslocamento de tempo

$ sudo vi /etc/ntp.conf
 (added `server otherbox`)

$ sudo /sbin/service ntpd restart

$ sudo /usr/sbin/ntpq -p
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 gamma.h3x.no    78.70.33.22      3 u    4   64    1   34.840   -0.964   0.001
 web.puflet.info 188.138.107.156  3 u    3   64    1   78.148   -1.243   0.001
 alpha.rueckgr.a 129.69.1.153     2 u    2   64    1   61.495   -2.362   0.001
 otherbox.exampl 60.155.73.34     3 u    1   64    1    0.604  -11.286   0.001

Parece que os carimbos de data e hora nos meus dois servidores são cerca de 11 ms diferentes.

RedGrittyBrick
fonte
Eles não são, eles ficam de forma independente o seu tempo a partir de servidores NTP
Paul
@Paul: Veja a atualização
RedGrittyBrick
Quando você adicionou o servidor NTP local ao /etc/ntp.confcliente, suponho que você fez isso como tal server 192.168.1.70 iburst. Além disso, você removeu todos os outros servidores da lista de clientes?
puk
33

ntpdate -q faz o que você quer.

Exemplo:

root@host1:~# ntpdate -q host2 
server host2, stratum 4, offset 109.584520, delay 0.77560
17 Apr 21:48:16 ntpdate[28849]: no server suitable for synchronization found

Nesse caso, os servidores têm uma diferença de cerca de 110 segundos.

Alexander Garden
fonte
Isso funciona sim, mas preciso de uma maneira de obter uma resposta mais rápida para poder adicionar o deslocamento em um script de coleta de dados.
SJG
8

Você também pode fazer o seguinte no host1:

root@host1# clockdiff -o host2
Graeme Moss
fonte