Klient NTP nesynchronizuje čas

pouCZ

Klient NTP nesynchronizuje čas
« kdy: 21. 03. 2024, 11:10:33 »
Dobrý den,
potřebuji bez ručních zásahů nastavit ntp klienta tak, aby vždy synchronizoval čas podle serveru.

Nyní mám stav takový, že bios (špatná baterie) má nastaven čas špatně a ntp klient ho neopravý .

Přitom ntp se souští s parametrem -g a konektivita na ntp servery je.

Můžete mi prosím poradit proč se čas nesynchronizuje?

Moc děkuji





Kód: [Vybrat]
$ hwclock
2023-02-28 20:02:22.117538+01:00
$ date
  t  28.    nora  2023,  20:08:36  CET

Ntp klient má konfigurační soubor:
Kód: [Vybrat]
$ cat /etc/ntpsec/ntp.conf
# /etc/ntpsec/ntp.conf, configuration for ntpd; see ntp.conf(5) for help

driftfile /var/lib/ntpsec/ntp.drift
leapfile /usr/share/zoneinfo/leap-seconds.list

# To enable Network Time Security support as a server, obtain a certificate
# (e.g. with Let's Encrypt), configure the paths below, and uncomment:
# nts cert CERT_FILE
# nts key KEY_FILE
# nts enable

# You must create /var/log/ntpsec (owned by ntpsec:ntpsec) to enable logging.
#statsdir /var/log/ntpsec/
#statistics loopstats peerstats clockstats
#filegen loopstats file loopstats type day enable
#filegen peerstats file peerstats type day enable
#filegen clockstats file clockstats type day enable

# This should be maxclock 7, but the pool entries count towards maxclock.
tos maxclock 11

# Comment this out if you have a refclock and want it to be able to discipline
# the clock by itself (e.g. if the system is not connected to the network).
tos minclock 4 minsane 3

# Specify one or more NTP servers.

# Public NTP servers supporting Network Time Security:
server tik.cesnet.cz
server tak.cesnet.cz
#server time.cloudflare.com nts


# pool.ntp.org maps to about 1000 low-stratum NTP servers.  Your server will
# pick a different set every time it starts up.  Please consider joining the
# pool: <https://www.pool.ntp.org/join.html>
server 127.127.0.1
fudge 127.127.0.1 stratum 1
#pool 0.debian.pool.ntp.org iburst
#pool 1.debian.pool.ntp.org iburst
#pool 2.debian.pool.ntp.org iburst
#pool 3.debian.pool.ntp.org iburst

# Access control configuration; see /usr/share/doc/ntpsec-doc/html/accopt.html
# for details.
#
# Note that "restrict" applies to both servers and clients, so a configuration
# that might be intended to block requests from certain clients could also end
# up blocking replies from your own upstream servers.

# By default, exchange time with everybody, but don't allow configuration.
restrict default kod notrap nomodify nopeer noquery limited

# Local users may interrogate the ntp server more closely.
restrict 127.0.0.1
restrict ::1




Zde je log z restartu aplikace:
Kód: [Vybrat]
Feb 28 20:00:09 debian systemd[1]: Starting ntpsec.service - Network Time Service...
Feb 28 20:00:09 debian ntpd[37547]: INIT: ntpd ntpsec-1.2.2: Starting
Feb 28 20:00:09 debian ntp-systemd-wrapper[37547]: 2023-02-28T20:00:09 ntpd[37547]: INIT: ntpd ntpsec-1.2.2: Starting
Feb 28 20:00:09 debian ntp-systemd-wrapper[37547]: 2023-02-28T20:00:09 ntpd[37547]: INIT: Command line: /usr/sbin/ntpd -p /run/ntpd.pid -c /etc/ntpsec/ntp.conf -g -N -u ntps
ec:ntpsec
Feb 28 20:00:09 debian ntpd[37547]: INIT: Command line: /usr/sbin/ntpd -p /run/ntpd.pid -c /etc/ntpsec/ntp.conf -g -N -u ntpsec:ntpsec
Feb 28 20:00:09 debian systemd[1]: Started ntpsec.service - Network Time Service.
Feb 28 20:00:09 debian ntpd[37549]: INIT: precision = 0.264 usec (-22)
Feb 28 20:00:09 debian ntpd[37549]: INIT: successfully locked into RAM
Feb 28 20:00:09 debian ntpd[37549]: CONFIG: readconfig: parsing file: /etc/ntpsec/ntp.conf
Feb 28 20:00:09 debian ntpd[37549]: CLOCK: leapsecond file ('/usr/share/zoneinfo/leap-seconds.list'): good hash signature
Feb 28 20:00:09 debian ntpd[37549]: CLOCK: leapsecond file ('/usr/share/zoneinfo/leap-seconds.list'): loaded, expire=2023-12-28T00:00Z last=2017-01-01T00:00Z ofs=37
Feb 28 20:00:09 debian ntpd[37549]: INIT: Using SO_TIMESTAMPNS(ns)
Feb 28 20:00:09 debian ntpd[37549]: IO: Listen and drop on 0 v6wildcard [::]:123
Feb 28 20:00:09 debian ntpd[37549]: IO: Listen and drop on 1 v4wildcard 0.0.0.0:123
Feb 28 20:00:09 debian ntpd[37549]: IO: Listen normally on 2 lo 127.0.0.1:123
Feb 28 20:00:09 debian ntpd[37549]: IO: Listen normally on 3 enp1s0 10.2.11.18:123
Feb 28 20:00:09 debian ntpd[37549]: IO: Listen normally on 4 enp1s0 10.2.11.14:123
Feb 28 20:00:09 debian ntpd[37549]: IO: Listen normally on 5 enp2s0 192.168.12.195:123
Feb 28 20:00:09 debian ntpd[37549]: IO: Listen normally on 6 enp2s0:0 192.168.100.195:123
Feb 28 20:00:09 debian ntpd[37549]: IO: Listen normally on 7 lo [::1]:123
Feb 28 20:00:09 debian ntpd[37549]: IO: Listen normally on 8 enp1s0 [fe80::204:5fff:fe7e:3bd9%2]:123
Feb 28 20:00:09 debian ntpd[37549]: IO: Listen normally on 9 enp2s0 [fe80::204:5fff:fe7e:3bda%3]:123
Feb 28 20:00:09 debian ntpd[37549]: IO: Listening on routing socket on fd #26 for interface updates
Feb 28 20:00:09 debian ntpd[37549]: REFCLOCK: refclock_newpeer: clock type 0 invalid
Feb 28 20:00:09 debian ntpd[37549]: PROTO: 127.127.0.1 unlink local addr 127.0.0.1 -> <null>
Feb 28 20:00:09 debian ntpd[37549]: INIT: MRU 10922 entries, 13 hash bits, 65536 bytes
Feb 28 20:00:09 debian ntpd[37549]: INIT: OpenSSL 3.0.9 30 May 2023, 30000090
Feb 28 20:00:09 debian ntpd[37549]: NTSc: Using system default root certificates.
Feb 28 20:00:09 debian ntpd[37549]: statistics directory /var/log/ntpsec/ does not exist or is unwriteable, error No such file or directory
Feb 28 20:00:10 debian ntpd[37549]: DNS: dns_probe: tik.cesnet.cz, cast_flags:1, flags:20801
Feb 28 20:00:10 debian ntpd[37549]: DNS: dns_check: processing tik.cesnet.cz, 1, 20801
Feb 28 20:00:10 debian ntpd[37549]: DNS: Server taking: 195.113.144.201
Feb 28 20:00:10 debian ntpd[37549]: DNS: dns_take_status: tik.cesnet.cz=>good, 0
Feb 28 20:00:11 debian ntpd[37549]: DNS: dns_probe: tak.cesnet.cz, cast_flags:1, flags:20801
Feb 28 20:00:11 debian ntpd[37549]: DNS: dns_check: processing tak.cesnet.cz, 1, 20801
Feb 28 20:00:11 debian ntpd[37549]: DNS: Server taking: 195.113.144.238
Feb 28 20:00:11 debian ntpd[37549]: DNS: dns_take_status: tak.cesnet.cz=>good, 0








jjrsk

  • ****
  • 459
    • Zobrazit profil
Re:ntp klient nesynchronizuje čas
« Odpověď #1 kdy: 21. 03. 2024, 12:00:37 »
1) vymen tu baterku ...

2) pouzij ntpdate ... pred tim, nez pusti ntpd. https://linux.die.net/man/8/ntpdate

Re:Klient NTP nesynchronizuje čas
« Odpověď #2 kdy: 21. 03. 2024, 12:41:09 »
ntpdate:
SYNC_HWCLOCK=yes

chronyd:
rtcsync

ntpd i chronyd synchronizuje RTC jednou za 11 minut.

Re:Klient NTP nesynchronizuje čas
« Odpověď #3 kdy: 21. 03. 2024, 13:33:20 »
Referenční implementace ntpd nesynchronizuje čas, pokud je rozdíl aktuálního a skutečného času příliš velký. Bere se to, že tak velký rozdíl času představuje vážný problém, který musí správce spravit ručním zásahem. Protože třeba byl čas napřed, teď se vrátí zpět a poběží stejným časovým úsekem znovu, což může některým aplikacím způsobit vážné problémy.

U referenční implementace ntpd se doporučuje v takových případech nejprve zavolat ntpdate pro jednorázové srovnání času, jak napsal jirsk.

Nebo použijte třeba zmíněné chronyd, které se dá nastavit tak, ať čas sesynchronizuje bez ohledu na cokoli. Referenční implementace to možná umí také, ale nikdo nenašel, jak to nakonfigurovat ;-)

Re:Klient NTP nesynchronizuje čas
« Odpověď #4 kdy: 21. 03. 2024, 13:43:11 »
Jak již zde radili, před ntp spustit

Kód: [Vybrat]
ntpdate -b 0.cz.pool.ntp.org
a je to


e3k

  • ****
  • 254
    • Zobrazit profil
    • E-mail
Re:Klient NTP nesynchronizuje čas
« Odpověď #5 kdy: 21. 03. 2024, 13:53:45 »
mozno by pomohlo si nejaky ten pool uncommentovat v konfiguraku?

Re:Klient NTP nesynchronizuje čas
« Odpověď #6 kdy: 21. 03. 2024, 14:12:57 »
Já jsem pochopil, že je problém jen se synchronizací RTC (hwclock).
Již zmíněný parametr "-g" zařídí, že se čas seřídí i když je ofset > 1000s.
Do RTC se pak čas přepisuje periodicky, každých 11 minut, po startu ntpd to není hned.
Při rebootu se do RTC čas zapíše, po restartu opět načte, takže by měl být +- sekunda, ntpd to pak už jen doladí.

Re:Klient NTP nesynchronizuje čas
« Odpověď #7 kdy: 21. 03. 2024, 14:32:51 »
ne, jak už tady říkali: ntp nechce opravovat čas, pokud je tam velký rozdíl. on to totiž opravuje postupně a to při velkém rozdílu moc nefunguje - trvalo by to dlouho

opravit skokově jde ntpdate -b, naopak postupně ntpdate -B (nedoporučeno)

jjrsk

  • ****
  • 459
    • Zobrazit profil
Re:Klient NTP nesynchronizuje čas
« Odpověď #8 kdy: 21. 03. 2024, 16:41:05 »
...
Viz vejs, ntp nenastavuje cas. Ntp vubec cas nemeni! Presne tohle je treba si uvedomit driv, nez se to vubec pokusis pouzivat.

Protoze, jak tu zaznelo, zmena castu je vzdy pruser. Tudiz ntp dela to, ze hodiny zpomaluje nebo zrychluje, ale NIKDY nemeni cas. A presne proto to nemuze fungovat, pokud mas rozdil treba i v desitkach let.

Re:Klient NTP nesynchronizuje čas
« Odpověď #9 kdy: 21. 03. 2024, 17:28:13 »
ntpd pokud je vetší skluz času než 128ms dělá STEP - mění čas skokem. Rozdíly času do 128ms dorovnává změnou frekvence.
Když je rozdíl víc jak 1000s, v defaultním nastavení skončí a zapíše do logu chybu.
To jde vypnout právě tím "-g" přepínačem, který udělá časový skok neomezeně a který OP použil.
Různé "krabičky" nemají RTC s baterkou a časový skok tam funguje.

Vyzkoušel bych chronyd, má víc možností nastavení, umí i zapnout rtcsync.
S ntpd to musí chodit taky, má jen pomalejší regulační smyčku.

Re:Klient NTP nesynchronizuje čas
« Odpověď #10 kdy: 21. 03. 2024, 17:48:55 »
Viz vejs, ntp nenastavuje cas. Ntp vubec cas nemeni! Presne tohle je treba si uvedomit driv, nez se to vubec pokusis pouzivat.

Protoze, jak tu zaznelo, zmena castu je vzdy pruser. Tudiz ntp dela to, ze hodiny zpomaluje nebo zrychluje, ale NIKDY nemeni cas. A presne proto to nemuze fungovat, pokud mas rozdil treba i v desitkach let.
Takhle to není. Referenční implementace ntpd má tři pásma. Pokud je systémový čas rozjetý proti přesnému času o méně než 128 sekund (snad, ve výchozím nastavení), upravuje čas zrychlováním nebo zpomalováním hodin systémového času (přičemž je konfiguračně určeno i to, jako moc se smí hodiny zrychlit či zpomalit – takže i ta úprava může trvat nějakou nezanedbatelnou dobu). Tohle chování můžete potlačit použitím parametru -x – pak se opravdu čas nikdy nenastaví, jenom se zrychlují či zpomalují hodiny.
Pak je to druhé pásmo do 1000 sekund, kdy se může čas na hodinách změnit skokově (pokud nud není použit ten parametr -x). To může způsobit problém, zejména když se čas vrátí zpět. A třetí pásmo je nad 1000 sekund, kdy ntpd usoudí, že je něco fakt špatně a skončí s chybou (a počítá se s tím, že správce má monitoring, který ho na tu chybu upozorní a správce to spraví ručně).

Re:Klient NTP nesynchronizuje čas
« Odpověď #11 kdy: 21. 03. 2024, 17:51:30 »
ntpd pokud je vetší skluz času než 128ms dělá STEP - mění čas skokem. Rozdíly času do 128ms dorovnává změnou frekvence.
Já jsem to z dokumentaci pochopil tak, že 128 ms má ještě jiný význam a že ta hranice je 128 s. Nebo to s je jen překlep v manuálové stránce?

Re:Klient NTP nesynchronizuje čas
« Odpověď #12 kdy: 21. 03. 2024, 23:37:31 »
ntpd mění frekvenci nejvíce o 500ppm, každou sekundu tak zmenší skluz o 0.5ms max. Hranice 128ms pro skok je kompromis kvůli líné regulační smyčce.
Po restartu OS časový skok nastane skoro vždy, když RTC má jen sekundové rozlišení.
Parametr "-x" řeší pouze přestupnou sekundu, ne skok při inicializaci.

chronyd je agresivnější, s driftem až 100000ppm odstraní i větší skluz rychle, za cenu extrémních odchylek od frekvence.

Pak je otázka, co je menší zlo. Jestli jednorázový skok v čase chvíli po startu OS, dlouhodobě velká ale zmenšující se odchylka, nebo významné změny ve frekvenci hodin.

pouCZ

Re:Klient NTP nesynchronizuje čas
« Odpověď #13 kdy: 22. 03. 2024, 11:24:26 »
Dobrý den,
doinstaloval jsem ntpdate a pomocí:
Kód: [Vybrat]
ntpdate -b 0.cz.pool.ntp.orgUž proběhla změna času správně.
Do HW hodin se sice nepřepsal ale vyřeším to skryptem po spuštění
  • ntpdate -b 0.cz.pool.ntp.org
  • hwclock --systohc

Děkuji za vysvětlení a pomoc