Puncte:1

Depanarea de sincronizare NTP pe serverul VirtualBox Linux

drapel cn

Am o configurare destul de simplă în care am două computere:

Computerul A. are o configurare normală NTP și utilizează sursele standard de Internet (conform Ubuntu) pentru a determina ora. De asemenea, permite interogarea pe IP 10.0.2.0/24:

restriction 10.0.2.0 mask 255.255.255.0 nomodify notrap

Computerul B. are o configurare NTP normală, cu excepția faptului că toate sursele sunt modificate pentru a fi utilizate 10.0.2.1 (care este computerul A).

Din când în când, computerul A primește un semnal Kiss-of-Death de la una dintre sursele sale. Ca rezultat, ucide complet NTP-ul computerului B (adică se pare că KoD-ul este transmis direct).

Există o modalitate de a afla starea unui server NTP în ceea ce privește dacă va trimite doar mesaj KoD sau nu? (de asemenea, cum să ies din acea situație? Când m-am uitat la ea, toate adresele IP afișate în jurnal nu au fost folosite de server?! așa că nu înțeleg de ce insistă să trimită KoD către clientul său) .


Am gasit doua lucruri pana acum:

  1. ntpq

    pot sa fug ntpq ca astfel:

     ntpq -pn
    

    Când serverul NTP funcționează, pot vedea un asterisc în fața adresei IP de care computerul este mulțumit. În cazul meu, toate indicatoarele de stare (prima coloană +, -, *, #, etc.) toate dispar. Din câte știu, asta înseamnă că serviciul NTP nu este mulțumit și nu se efectuează nicio sincronizare.

    Iată un exemplu când încă funcționează (adică există steaguri chiar în prima coloană):

          telecomandă refid st t când sondaj atinge întârziere offset jitter
     ==================================================== =============================
      10.0.2.255 .BCST. 16 B - 64 0 0,000 0,000 0,000
     #51.77.203.211 134.59.1.5 3 u 4 64 1 171.248 -743.64 691.917
     +72.5.72.15 216.218.254.202 2 u 2 64 1 19.223 -778.34 686.200
     +159.69.25.180 192.53.103.103 2 u 3 64 1 237.733 -775.41 701.376
     +173.0.48.220 43.77.130.254 2 u 2 64 1 35.489 -778.85 669.187
      38.229.56.9 172.16.21.35 2 u 31 64 1 153.976 -268.90 122.557
     +137.190.2.4 .PPS. 1 u 31 64 1 93.797 -253.69 116.289
     +150.136.0.232 185.125.206.71 3 u 35 64 1 95.667 -178.19 114.912
      94.154.96.7 194.29.130.252 2 u 31 64 1 237.560 -231.88 107.230
     +162.159.200.123 10.4.1.175 3 u 34 64 1 16.246 -199.68 115.561
     *216.218.254.202 .CDMA. 1 u 35 64 1 52.906 -193.84 131.148
      91.189.91.157 132.163.96.1 2 u 45 64 1 87.772 -5.716 0.000
     +204.2.134.163 44.24.199.34 3 u 34 64 1 16.711 -199.12 116.777
     +74.6.168.73 208.71.46.33 2 u 35 64 1 69.772 -189.21 128.119
      91.189.89.199 17.253.34.123 2 u 45 64 1 165.471 -3.708 0.000
     +216.229.0.49 216.218.192.202 2 u 35 64 1 71.437 -178.94 97.505
      91.189.89.198 17.253.34.123 2 u 44 64 1 172.852 -17.899 0.000
    
  2. ntpdate -q <ip>

    The ntpdate comanda îmi va spune de fapt dacă NTP acceptă pachete. Acest lucru se datorează faptului că dă un mesaj de eroare dacă nu:

     $ sudo ntpdate -q 10.0.2.1
     server 10.0.2.1, stratul 4, offset 5.194725, întârziere 0.02652
     21 iulie 15:22:48 ntpdate[13086]: nu a fost găsit niciun server adecvat pentru sincronizare
    

    Acest lucru se întâmplă după puțin timp când serverul meu principal pierde * starea pe un singur server cu care a fost bucuros să se sincronizeze mai întâi...

Acum... încă trebuie să înțeleg ce trebuie să fac pentru a remedia această problemă...


Acest lucru poate fi util, iată jurnalele despre o repornire de la o repornire completă:

21 iulie 18:29:13 vm-ve-ctl kernel: [ 434.275481] audit: type=1400 audit(1626917353.636:43): apparmor="DENIED" operation="open" profile="/usr/sbin/ntp
d" name="/snap/bin/" pid=3896 comm="ntpd" requested_mask="r" denied_mask="r" fsuid=0 ouid=0
21 iulie 18:29:13 vm-ve-ctl ntpd[3896]: ntpd [email protected] (1): Pornire
21 iulie 18:29:13 vm-ve-ctl ntpd[3896]: Linia de comandă: /usr/sbin/ntpd -p /var/run/ntpd.pid -g -u 126:129
21 iulie 18:29:13 vm-ve-ctl ntpd[3901]: proto: precizie = 0,190 usec (-22)
21 iulie 18:29:13 vm-ve-ctl ntpd[3901]: Nu se poate deschide fișierul de jurnal /var/log/ntp.log: Permisiune refuzată
21 iulie 18:29:13 vm-ve-ctl kernel: [ 434.291490] audit: type=1400 audit(1626917353.652:44): apparmor="DENIED" operation="capable" profile="/usr/sbin/
ntpd" pid=3901 comm="ntpd" capability=1 capname="dac_override"
21 iulie 18:29:13 vm-ve-ctl ntpd[3901]: fișier leapsecond ('/usr/share/zoneinfo/leap-seconds.list'): semnătură hash bună
21 iulie 18:29:13 vm-ve-ctl ntpd[3901]: fișier leapsecond ('/usr/share/zoneinfo/leap-seconds.list'): încărcat, expire=2021-12-28T00:00:00Z ultima =2017-01-01T
00:00:00Z ofs=37
21 iulie 18:29:13 vm-ve-ctl ntpd[3901]: Ascultați și introduceți 0 v6wildcard [::]:123
21 iulie 18:29:13 vm-ve-ctl ntpd[3901]: Ascultați și introduceți 1 v4wildcard 0.0.0.0:123
Jul 21 18:29:13 vm-ve-ctl ntpd[3901]: Ascultați normal pe 2 lo 127.0.0.1:123
Jul 21 18:29:13 vm-ve-ctl ntpd[3901]: Ascultați normal pe 3 enp0s3 192.168.2.120:123
21 iulie 18:29:13 vm-ve-ctl ntpd[3901]: Ascultați normal pe 4 enp0s8 10.0.2.1:123
Jul 21 18:29:13 vm-ve-ctl ntpd[3901]: Ascultați normal pe 5 lo [::1]:123
21 iulie 18:29:13 vm-ve-ctl ntpd[3901]: Ascultați normal pe 6 enp0s3 [fe80::a00:27ff:fe25:38ff%2]:123
21 iulie 18:29:13 vm-ve-ctl ntpd[3901]: Ascultați normal pe 7 enp0s8 [fe80::a00:27ff:fe35:c30b%3]:123
21 iulie 18:29:13 vm-ve-ctl ntpd[3901]: ascultare pe soclul de rutare pe fd #24 pentru actualizări de interfață
21 iulie 18:29:14 vm-ve-ctl ntpd[3901]: Solicitare server pool 51.77.203.211
21 iulie 18:29:15 vm-ve-ctl ntpd[3901]: Solicitare server pool 159.69.25.180
21 iulie 18:29:15 vm-ve-ctl ntpd[3901]: Solicitarea serverului de pool 72.5.72.15
21 iulie 18:29:16 vm-ve-ctl ntpd[3901]: Solicitare server pool 198.251.86.68
21 iulie 18:29:16 vm-ve-ctl ntpd[3901]: Solicitare server pool 173.0.48.220
21 iulie 18:29:16 vm-ve-ctl ntpd[3901]: Solicitare server pool 38.229.56.9
21 iulie 18:29:17 vm-ve-ctl ntpd[3901]: Soliciting pool server 150.136.0.232
21 iulie 18:29:17 vm-ve-ctl ntpd[3901]: Solicitare server pool 94.154.96.7
21 iulie 18:29:17 vm-ve-ctl ntpd[3901]: Solicitare server pool 137.190.2.4
21 iulie 18:29:18 vm-ve-ctl ntpd[3901]: Solicitare server pool 162.159.200.123
21 iulie 18:29:18 vm-ve-ctl ntpd[3901]: Solicitare server pool 216.218.254.202
21 iulie 18:29:18 vm-ve-ctl ntpd[3901]: Solicitare server pool 91.189.91.157
21 iulie 18:29:19 vm-ve-ctl ntpd[3901]: Solicitare server pool 91.189.89.199
21 iulie 18:29:19 vm-ve-ctl ntpd[3901]: Soliciting pool server 74.6.168.73
21 iulie 18:29:19 vm-ve-ctl ntpd[3901]: Solicitare server pool 204.2.134.163
21 iulie 18:29:20 vm-ve-ctl ntpd[3901]: Soliciting pool server 91.189.89.198
21 iulie 18:29:20 vm-ve-ctl ntpd[3901]: Solicitare server pool 216.229.0.49
21 iulie 18:29:20 vm-ve-ctl ntpd[3901]: Solicitare server pool 2604:ed40:1000:1711:d862:f5ff:fe4e:41c4
21 iulie 18:29:21 vm-ve-ctl ntpd[3901]: primiți: amprenta orară a originii neașteptate 0xe4a34871.ac57f05d nu se potrivește cu aorg 0000000000.00000000 de la [email protected].

Nu știu exact când începe să meargă rău. Am văzut, de asemenea, următoarele despre care am crezut că ar putea avea ceva de-a face cu asta (adică, când se întâmplă acest lucru, IP-ul corespunzător este eliminat din listă!), Dar este deja rău acum și nu a apărut o astfel de eroare în ultima mea rulare.

Jul 21 18:08:57 vm-ve-ctl ntpd[9764]: 92.243.6.5 local addr 192.168.2.120 -> <null>

Notă: 192.168.2.120 este IP-ul computerului defect. Este un VirtualBox. Funcționează de luni de zile... totuși, poate s-a schimbat ceva care îl face nefericit.

am găsit acest post despre o problemă cu ... -> <null> mesaj. Cu toate acestea, cred că avem o versiune mai nouă pe Ubuntu 18.04:

Versiunea minimă recomandată SUSE: ntp-4.2.8p7-11.1
Versiunea Ubuntu 18.04: 1:4.2.8p10+dfsg-5ubuntu7.3


Pentru orice eventualitate, am încercat să conectez VM-ul la gazdă și încă am un offset și un jitter uriaș. Ce s-ar fi putut schimba?!

     telecomandă refid st t când sondaj atinge întârziere offset jitter
==================================================== =============================
 10.0.2.10 .PISCINA.         16 p - 64 0 0.000 0.000 0.000
 10.0.2.10 132.163.97.6 2 u 54 64 3 0.457 -5254.2 3917.68

După cum a cerut Paul Gear, iată rezultatul ntpq cu detalii suplimentare:

$ ntpq -ncrv
associd=0 status=0028 leap_none, sync_unspec, 2 evenimente, no_sys_peer,
version="ntpd [email protected] (1)", procesor="x86_64",
system="Linux/4.15.0-151-generic", leap=00, strat=4, precizie=-23,
rootdelay=17.930, rootdisp=5019.260, refid=173.255.215.209,
reftime=e4a44f7a.1c2ec778 joi, 22 iulie 2021 13:11:38.110,
clock=e4a45030.c8a4b259 joi, 22 iulie 2021 13:14:40.783, peer=0, tc=6,
mintc=3, offset=-109,527915, frecvență=-1,707, sys_jitter=0,000000,
clk_jitter=38.724, clk_wander=0.000, tai=37, leapsec=201701010000,
expiră=202112280000

Iată lista ceasurilor disponibile și cea utilizată în prezent:

$ grep . /sys/devices/system/clocksource/clocksource*/[ac]*clocksource
/sys/devices/system/clocksource/clocksource0/available_clocksource:kvm-clock tsc acpi_pm 
/sys/devices/system/clocksource/clocksource0/current_clocksource:kvm-clock

Și, în cele din urmă, dmesg rezultate despre procesul de selectare a sursei de ceas:

$ dmesg | grep clocksource
[ 0.000000] clocksource: kvm-clock: mask: 0xffffffffffffffff max_cycles: 0x1cd42e4dffb, max_idle_ns: 881590591483 ns
[ 0.000000] clocksource: refined-jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645519600211568 ns
[ 0.283117] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[ 1.161844] clocksource: S-a comutat la clocksource kvm-clock
[ 1.208316] clocksource: acpi_pm: mask: 0xffffff max_cycles: 0xffffff, max_idle_ns: 2085701024 ns
[ 2.329228] clocksource: tsc: mask: 0xffffffffffffffff max_cycles: 0x1db81a3240f, max_idle_ns: 440795250379 ns
Paul Gear avatar
drapel cn
Presupunând că prima dvs. ieșire `ntpq -np` este de la computerul A, se pare că are un ceas inexact (deși NTP nu a mai rulat de mult timp, așa că este greu de spus cu siguranță). Se pare că s-ar putea să nu aveți cea mai bună sursă de ceas configurată pentru a rula în acel VM. Ce arată `ntpq -ncrv` după ce NTP a rulat de cel puțin 15 minute? De asemenea, ce înseamnă `grep . /sys/devices/system/clocksource/clocksource*/[ac]*clocksource; dmesg | grep clocksource` show?
drapel cn
@PaulGear Am schimbat paravirtualizarea la **Minimal** și asta a făcut-o să funcționeze. Am revenit la **Implicit** și am avut aceleași probleme.Am un link în răspunsul meu despre unde am găsit soluția și detalii despre aceasta. Am adăugat în continuare rezultatul așa cum ați întrebat aici. Voi verifica ce ceas este folosit în **Minimal** și voi posta și asta.
Puncte:1
drapel cn

Se pare că am găsit o soluție. Nu sunt prea sigur de ce ar fi funcționat înainte, totuși.

După multe căutări, am găsit acest bilet VirtualBox:

https://www.virtualbox.org/ticket/15179

care spune că nu ar trebui să folosești ntpd deoarece VM-ul păstrează deja timpul folosind timpul gazdei pentru a ajusta VM-urile ceas virtual.

Cu toate acestea, chiar și fărăh ntpd funcționând, ceasul VM-ului meu era oprit și avea să sară între ±30 de secunde într-o perioadă scurtă de timp.

Citind acea postare în continuare, s-au oferit să ajusteze setările de paravirtualizare la „Niciuna”. Asta nu părea să funcționeze pentru mine. Am repornit VM-ul și s-a blocat. Așa că am încercat în schimb cu „Minimal” și acum ceasul funcționează. The ntpq -np ieșirea arată mult mai bine:

Joi, 22 iulie 12:57:57 PDT 2021
     telecomandă refid st t când sondaj atinge întârziere offset jitter
==================================================== =============================
 1.ubuntu.pool.n .POOL. 16 p - 64 0 0,000 0,000 0,008
 2.ubuntu.pool.n .POOL. 16 p - 64 0 0,000 0,000 0,008
 3.ubuntu.pool.n .POOL. 16 p - 64 0 0,000 0,000 0,008
 ntp.ubuntu.com .PISCINA. 16 p - 64 0 0,000 0,000 0,008
+23.157.160.168 129.6.15.28 2 u 20 128 377 83.831 0.783 1.745
-104.131.139.195 163.237.218.19 2 u 28 128 377 20.162 3.622 1.451
+144.76.64.40 36.224.68.195 2 u 18 128 377 179.329 2.557 6.671
-159.89.86.140 192.5.41.40 2 u 126 128 377 87.016 3.094 1.385
-23.175.208.10 239.9.71.195 2 u 35 128 377 82.350 2.311 0.794
+206.82.16.3 47.187.174.51 2 u 127 128 377 84.683 1.385 0.753
+92.243.6.5 85.199.214.98 2 u 25 128 377 163.041 4.275 4.025
*200.160.7.186 .ONBR. 1 u 47 128 377 191.078 1.126 1.865
+51.255.197.148 217.91.44.17 2 u 96 128 367 154.201 1.225 4.742

După cum putem vedea, offset-ul (max. 4,3) și Jitter (max. 6,7) sunt minuscule în comparație cu ceea ce am primit înainte. Acum funcționează și celălalt computer al meu și se poate sincroniza cu acest ceas. Întârzierea este în jur de 0,7, ceea ce este suficient pentru mine (în cazul meu, suficient este de 12,0 sau mai puțin).

NOTĂ IMPORTANTĂ: Am repornit acel VM de 2 sau 3 ori folosind Minim, timpul de pornire este îngrozitor de lung. Așa că nu recomand să utilizați acest mod decât ca ultimă soluție dacă aveți absolut nevoie de un ceas de sistem funcțional. Dacă aveți o soluție mai bună care funcționează, sunt toate urechile!


Pentru orice eventualitate, am vrut să văd diferența în ceea ce privește sursele de ceas în Minim modul. Doar primim acpi_pm ceas.

$ grep . /sys/devices/system/clocksource/clocksource*/[ac]*clocksource
/sys/devices/system/clocksource/clocksource0/available_clocksource:acpi_pm 
/sys/devices/system/clocksource/clocksource0/current_clocksource:acpi_pm

Acum mă întreb dacă acest lucru ar putea avea un efect asupra ceasului gazdei. Deoarece am și ntp pe gazda mea, nu cred că aceasta este o problemă.

vidarlo avatar
drapel ar
NTP încearcă să construiască un profil de deplasare a ceasului local. Aceasta presupune că ceasul se comportă oarecum bine și se deplasează liniar. Când aveți un ceas care este setat de o sursă necunoscută de ntpd, acesta renunță - deoarece pașează aleatoriu în moduri inexplicabile. Poate doriți să citiți [aceste întrebări și răspunsuri](https://stackoverflow.com/questions/25041213/how-to-disable-virtualbox-time-sync-from-within-the-guest-at-runtime) la SE ca bine pentru cum să dezactivați acest lucru.
drapel cn
@vidarlo Ah... `--disable-timesync` este probabil soluția. Acestea fiind spuse, tocmai am văzut că ceasul implicit folosește `kvm-clock` și trecerea la `tsc` ar fi probabil mai bună în ceea ce privește „nu derive”. Încă testăm diverse lucruri aici.
vidarlo avatar
drapel ar
Pentru sarcinile de lucru virtualizate, sincronizați gazda și lăsați mașinile virtuale să obțină timpul de la gazdă. Deviația ceasului este oricum sălbatică din cauza reprogramarii necunoscute pe care o efectuează hipervizorul.
drapel cn
@vidarlo În cazul meu, totuși, simulez o aplicație care instalează și rulează `ntpd` pentru că am nevoie de o rețea locală cu un timp foarte strâns. Acestea fiind spuse, cumva problema era foarte vizibilă pe acel VM chiar și fără a rula ntp. Cam ciudat. A funcționat bine de aproape un an...
Puncte:0
drapel cn

Bine, destul de neobișnuit, adaug un al doilea răspuns pentru că acesta explică 100% de ce a început să se rupă. În câteva zile după ultima repornire, există un upgrade al driverului NVidia. Apoi mi-am pornit VM (adică ordinea este foarte importantă aici!)

Nu știam că mediul 3D ar putea lipsi și dacă nu ar fi accelerat, atunci VM-ul s-ar comporta total prost în ceea ce privește ceasul/timpul.

Rețineți că faptul că mediul 3D nu este disponibil nu mi-a fost vizibil. Este posibil să fi fost menționat în unele jurnale, dar ca a standard utilizator, am ratat complet acea parte.

După o repornire completă (necesară de actualizarea NVidia), VM funcționează din nou normal. Nu este nevoie să utilizați Minim opțiune. Am pus acel VM înapoi Mod implicit și funcționează frumos pe tot parcursul ca înainte.

Sper că acest lucru va scuti câțiva oameni de durerea de cap pe care am avut-o timp de 3 zile...

Pentru cei interesați, schimbarea ceasului poate ajuta, de asemenea. Oracle are o pagină frumoasă despre cum se schimbă sursa ceasului. Din partea mea, am ajuns să folosesc apci_pm care pare să ajute foarte mult la menținerea timpului pentru o lungă perioadă de timp.

# echo "acpi_pm" > /sys/devices/system/clocksource/clocksource0/current_clocksource

De asemenea, puteți actualiza parametrii de pornire, astfel încât de fiecare dată când porniți obțineți acea sursă selectată.

GRUB_CMDLINE_LINUX="... clocksource=acpi_pm"

(Am eliminat aici parametrii irelevanți, nu-i șterge, doar adaugă sursa ceasului parametru; se poate, de asemenea, ca variabila să fie goală prima dată când o editați: GRUB_CMDLINE_LINUX="").

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.