Openntpd setzt die Zeit nicht richtig

vice_pres

Mitglied
Mitglied seit
6 Apr 2008
Beiträge
474
Punkte für Reaktionen
4
Punkte
18
Hi,

Auf meiner 7390 mit aktuellem Trunk hab ich enorme Probleme mit openntpd - die Zeit geht nach ein paar Stunden mehrere Minuten falsch. Neustart des Dienstes setzt die Zeit wieder richtig - aber zur Laufzeit nicht:

Code:
Aug  3 23:30:07 fritz daemon.info ntpd[3824]: adjusting local clock by -0.256690s
Aug  3 23:30:41 fritz daemon.info ntpd[3824]: adjusting local clock by -0.088049s
Aug  3 23:32:22 fritz daemon.info ntpd[3824]: adjusting local clock by -293.821347s
Aug  3 23:36:30 fritz daemon.info ntpd[3824]: adjusting local clock by -294.948266s
Aug  3 23:38:07 fritz daemon.info ntpd[3824]: adjusting local clock by -148.107803s
Aug  3 23:41:54 fritz daemon.info ntpd[3824]: adjusting local clock by -296.348481s
Aug  3 23:43:31 fritz daemon.info ntpd[3824]: adjusting local clock by -0.119890s
Aug  3 23:46:08 fritz daemon.info ntpd[3824]: adjusting local clock by -297.050268s
Aug  3 23:50:24 fritz daemon.info ntpd[3824]: adjusting local clock by -297.975245s
Aug  3 23:51:25 fritz daemon.info ntpd[3824]: adjusting local clock by -0.473792s
Aug  3 21:54:29 fritz daemon.info ntpd[3794]: peer 192.53.103.104 now invalid
Aug  3 23:55:09 fritz daemon.info ntpd[3824]: adjusting local clock by -299.154729s
Aug  3 23:57:51 fritz daemon.info ntpd[3824]: adjusting local clock by -299.581399s
Aug  3 21:59:47 fritz daemon.info ntpd[3794]: peer 192.53.103.104 now valid
Aug  4 00:02:05 fritz daemon.info ntpd[3824]: adjusting local clock by -300.350546s

Davon abgesehen haben im syslog einige Meldungen auf einmal mittendrin 2 Stunden versatz nach hinten

Config von openntpd
Code:
# Addresses to listen on (ntpd does not listen by default)
# Use '0.0.0.0' to listen on every local interface
listen on 192.168.0.254

# use a random selection of 8 public stratum 2 servers
# see http://twiki.ntp.org/bin/view/Servers/NTPPoolServers
servers ptbtime1.ptb.de
servers ptbtime2.ptb.de
servers ptbtime3.ptb.de

Jemand eine Idee?

Gruß
Peter
 
Is AVM NTP client activ as well? If it's configured to get time from some local machine 5 minutes off.....Or both ntp client don't agree on UTC zone
 
chronyd is removed and multid ntp is deactivated - i cut down the server list to just ptbtime1-3 - i've had official ntp servers as well but cut the list because i thought it might be a problem there...

And the time gap is getting bigger as stated in the log:

Code:
Aug  4 01:06:54 fritz daemon.info ntpd[13640]: adjusting local clock by -13.468745s
Aug  3 23:09:11 fritz daemon.info ntpd[13638]: peer 192.53.103.103 now valid
Aug  4 01:10:08 fritz daemon.info ntpd[13640]: adjusting local clock by -14.060623s
Aug  4 01:11:12 fritz daemon.info ntpd[13640]: adjusting local clock by -14.627322s
Aug  3 23:14:09 fritz daemon.info ntpd[13638]: peer 192.53.103.104 now invalid
Aug  4 01:14:17 fritz daemon.info ntpd[13640]: adjusting local clock by -15.135265s
Aug  4 01:18:00 fritz daemon.info ntpd[13640]: adjusting local clock by -15.821575s
Aug  3 23:19:27 fritz daemon.info ntpd[13638]: peer 192.53.103.104 now valid
Aug  4 01:22:20 fritz daemon.info ntpd[13640]: adjusting local clock by -16.372476s
Aug  4 01:23:21 fritz daemon.info ntpd[13640]: adjusting local clock by -0.427638s
Aug  4 01:24:23 fritz daemon.info ntpd[13640]: adjusting local clock by -16.592668s
Aug  4 01:28:06 fritz daemon.info ntpd[13640]: adjusting local clock by -17.928076s
Aug  4 01:29:41 fritz daemon.info ntpd[13640]: adjusting local clock by -18.397416s
Aug  4 01:32:24 fritz daemon.info ntpd[13640]: adjusting local clock by -0.107613s
 
Zuletzt bearbeitet:
Davon abgesehen haben im syslog einige Meldungen auf einmal mittendrin 2 Stunden versatz nach hinten

ja, das ist ein bug irgendwie in zusammenhang mit "chroot". die ursache dafür muss noch analysiert werden...
zumindest tritt der bug nur in zusammenhang mit dem aktuellen trunk auf. in 1.1.4 gibts damit kein problem.

hier ein ähnliches problem -> click

Jemand eine Idee?

poste mal die "adjusting clock frequency" logs
 
Im Post oben ist ja schon ein teil der "adjusting clock" - hier jetzt ein aktueller Ausschnitt. Wie man sieht wird die Uhrzeit immer ungenauer:

Code:
Aug  4 08:02:06 fritz daemon.info ntpd[15518]: adjusting local clock by -35.765837s
Aug  4 08:04:14 fritz daemon.info ntpd[15518]: adjusting local clock by -0.037318s
Aug  4 08:08:00 fritz daemon.info ntpd[15518]: adjusting local clock by -36.908628s
Aug  4 06:08:00 fritz daemon.info ntpd[15516]: clock is now synced
Aug  4 06:08:29 fritz daemon.info ntpd[15516]: peer 192.53.103.103 now invalid
Aug  4 06:08:32 fritz daemon.info ntpd[15516]: peer 192.53.103.108 now invalid
Aug  4 08:11:47 fritz daemon.info ntpd[15518]: adjusting local clock by -0.589984s
Aug  4 06:11:47 fritz daemon.info ntpd[15516]: clock is now unsynced
Aug  4 08:12:17 fritz daemon.info ntpd[15518]: adjusting local clock by -37.141397s
Aug  4 08:13:23 fritz daemon.info ntpd[15518]: adjusting local clock by -38.634310s
Aug  4 06:13:50 fritz daemon.info ntpd[15516]: peer 192.53.103.108 now valid
Aug  4 06:13:51 fritz daemon.info ntpd[15516]: peer 192.53.103.103 now valid
Aug  4 08:17:39 fritz daemon.info ntpd[15518]: adjusting local clock by -39.014568s
Aug  4 08:20:52 fritz daemon.info ntpd[15518]: adjusting local clock by -0.519588s
Aug  4 06:20:52 fritz daemon.info ntpd[15516]: clock is now synced
Aug  4 08:22:00 fritz daemon.info ntpd[15518]: adjusting local clock by -40.356877s
Aug  4 06:22:00 fritz daemon.info ntpd[15516]: clock is now unsynced
Aug  4 08:26:20 fritz daemon.info ntpd[15518]: adjusting local clock by -40.760669s
Aug  4 08:29:30 fritz daemon.info ntpd[15518]: adjusting local clock by -41.697924s
Aug  4 06:32:23 fritz daemon.info ntpd[15516]: peer 192.53.103.104 now invalid
Aug  4 08:32:31 fritz daemon.info ntpd[15518]: adjusting local clock by -42.258584s
Aug  4 08:34:36 fritz daemon.info ntpd[15518]: adjusting local clock by -21.469537s
Aug  4 06:38:07 fritz daemon.info ntpd[15516]: peer 192.53.103.103 now invalid
Aug  4 08:38:35 fritz daemon.info ntpd[15518]: adjusting local clock by -43.990575s
Aug  4 08:42:51 fritz daemon.info ntpd[15518]: adjusting local clock by -44.229363s
Aug  4 06:43:24 fritz daemon.info ntpd[15516]: peer 192.53.103.104 now valid
Aug  4 06:43:28 fritz daemon.info ntpd[15516]: peer 192.53.103.103 now valid
Aug  4 08:44:20 fritz daemon.info ntpd[15518]: adjusting local clock by -45.030473s
 
Im Post oben ist ja schon ein teil der "adjusting clock"
sowas vermisse ich in deinem log:
Code:
Aug  4 04:32:53 fritz daemon.info ntpd[2200]: adjusting clock frequency by 0.269984 to 11.627970ppm
Aug  4 04:51:03 fritz daemon.info ntpd[2200]: adjusting clock frequency by 0.352087 to 11.980048ppm
Aug  4 05:14:47 fritz daemon.info ntpd[2200]: adjusting clock frequency by 0.134553 to 12.114595ppm
Aug  4 13:59:43 fritz daemon.info ntpd[2200]: adjusting clock frequency by -0.731606 to 11.382987ppm
Aug  5 00:24:18 fritz daemon.info ntpd[2200]: adjusting clock frequency by -0.324838 to 11.058143ppm

lädt dein ntpd evtl. ein driftfile (/var/db/ntpd.drift) mit unsinnigem inhalt?
 
Zuletzt bearbeitet:
Ich hab nur adjusting local clock - kein clock frequency im log

Code:
root@fritz:/var/mod/root# ls -la /var/db/
drwxr-xr-x    2 root     root            40 Jan  1  1970 .
drwxr-xr-x   16 root     root          1520 Aug  5 08:31 ..

Hab im gesamten FS kein drift-file liegen, gerade mal gesucht...

Edit:
Was mir aber aufgefallen ist (und einmal die Box bis zum Ende gekillt hat zum selbst-reboot danach aber nie mehr aufgetreten ist:)

Code:
15452 root      1148 S    /bin/sh /bin/onlinechanged.sh online
15461 root      1148 S    /bin/sh /bin/onlinechanged.sh online
15516 ntp        924 S    ntpd -s -f /mod/etc/ntpd.conf
15517 ntp        860 S    ntpd -s -f /mod/etc/ntpd.conf
15518 root       856 S    ntpd -s -f /mod/etc/ntpd.conf
18323 root      1144 S    /bin/sh /bin/onlinechanged.sh offline
18327 root      1144 S    /bin/sh /bin/onlinechanged.sh online

Die Onlinechanged scripts... Ein neustart von openntpd löst übrigens auch en onlinechanged Event aus komischerweise...
 
Zuletzt bearbeitet:
Das onlinechanged Event liegt daran, dass der mit dem nptd evtl. der multid neu gestartet wird. Hier gibts noch einen Patch für den ntpd.

Gruß
Oliver
 
Patch später mal ausprobieren

Ich kann übrigens in der config kein driftfile angeben, dann startet openntpd nicht mehr...
 
Patch später mal ausprobieren
Ich kann übrigens in der config kein driftfile angeben, dann startet openntpd nicht mehr...
poste mal deine konfiguration. ansonsten füge mal folgendes in die "config.h" ein und compilier dann neu:
Code:
#define BROKEN_ADJTIME
 
@TIK
Hast du mal im onlinechanged Fall geschaut, ob das Environment Unterschiede aufweist? Wo bekommt die uClibc die Timezone her? Aus der TZ Variablen oder liest die /etc/TZ ein?

Code:
root@fritz:/var/mod/root# set |grep TZ
TZ='CET-1CEST-2,M3.5.0/02:00:00,M10.5.0/03:00:00'

Gruß
Oliver
 
poste mal deine konfiguration. ansonsten füge mal folgendes in die "config.h" ein und compilier dann neu:
Code:
#define BROKEN_ADJTIME

gemacht:
openntpd-dirclean gemacht und neu angefangen, eingefügt, precompiled gemacht

Immer noch kein clock frequency, nur das übliche:

Code:
Aug  6 09:06:47 fritz daemon.info ntpd[3818]: adjusting local clock by -1.308119s
Aug  6 09:11:02 fritz daemon.info ntpd[3818]: adjusting local clock by -1.414295s
Aug  6 09:11:35 fritz daemon.info ntpd[3818]: adjusting local clock by -0.680093s
Aug  6 09:14:46 fritz daemon.info ntpd[3818]: adjusting local clock by -2.661592s

Edit:
Aber braucht er dafür nicht auch das driftfile? Das kann ich nicht angeben...

Meine Config
Code:
# Addresses to listen on (ntpd does not listen by default)
# Use '0.0.0.0' to listen on every local interface
listen on 192.168.0.254

# use a random selection of 8 public stratum 2 servers
# see http://twiki.ntp.org/bin/view/Servers/NTPPoolServers
servers ptbtime1.ptb.de
servers ptbtime2.ptb.de
servers ptbtime3.ptb.de

Edit 2:

probiert habe ich es in der Config mit

driftfile /var/db/ntpd.drift

oder auch mit anderen pfaden, beim starten kommt aber immer:

/mod/etc/ntpd.conf:11: syntax error
 
Zuletzt bearbeitet:
Aber braucht er dafür nicht auch das driftfile? Das kann ich nicht angeben...

du kannst in der openntpd config kein driftfile angeben. default ist /var/db/...
mit configure kannst du das verhalten beeinflussen (siehe configure --help), sonst nicht. hast du das problem nur mit der pre4.9 oder gabs das auch schon mit der 3.9?
 
Hast du mal im onlinechanged Fall geschaut, ob das Environment Unterschiede aufweist?

nee, wenig zeit gehabt. müsste das nicht derjenige wissen, das das onlinechanged fabriziert hat?
oder anders gesagt: warum sollte es hier unterschiede geben? wird hier irgendwie irgednwas rumgetrickst?
 
Ich hab das Problem erst seit der pre4.9 - und unter /var/db wird bei mir definitiv kein driftfile angelegt
 
Ich hab das Problem erst seit der pre4.9 - und unter /var/db wird bei mir definitiv kein driftfile angelegt

das driftfile wird immer dann geschrieben, wenn obige "adjusting clock frequency" logmessage auftaucht. passiert bei dir wohl nicht, da deine clock nicht lange genug "in sync" ist. starte mal den ntpd zusätzlich mit -v...
du kannst auch mal probieren "--disable-adjfreq" beim configure anzugeben. obwohl ich nicht glaube, das es hier abhilfe schafft

im unterschied zur 3.9 nutzt die 4.9 für interne zeitgeschichten die socket-timestamps anstatt die lokale zeit. das kann man konfigurieren, aber in deiner version noch nicht...
 
gemacht:
openntpd-dirclean gemacht und neu angefangen, eingefügt, precompiled gemacht

hab ich übersehn:
hast du die "config.h" im dl/*.tgz oder lokal im source verzeichnis geändert? "dirclean" packt alles neu aus und überschreibt deine lokale "config.h". lokal ändern und "make openntpd-clean" würde ausreichen...
 
im source, nach dem dirclean

#define BROKEN_ADJTIME

leider immer noch das gleiche Problem :(
 
im source, nach dem dirclean

#define BROKEN_ADJTIME

leider immer noch das gleiche Problem :(

füge mal folgende zeile in client.c ein und compilier neu:
Code:
	for (cmsg = CMSG_FIRSTHDR(&somsg); cmsg != NULL;
	    cmsg = CMSG_NXTHDR(&somsg, cmsg)) {
		if (cmsg->cmsg_level == SOL_SOCKET &&
		    cmsg->cmsg_type == SCM_TIMESTAMP) {
			memcpy(&tv, CMSG_DATA(cmsg), sizeof(tv));
			T4 += tv.tv_sec + JAN_1970 + 1.0e-6 * tv.tv_usec;
			break;
		}
	}

	if (T4 < JAN_1970) {
		client_log_error(p, "recvmsg control format", EBADF);
		set_next(p, error_interval());
		return (0);
	}

// einfügen
	T4 = gettime_corrected();
// einfügen ende

	ntp_getmsg((struct sockaddr *)&p->addr->ss, buf, size, &msg);

wenn auch das nicht hilft. stoppe mal openntp, schalte alle komponenten deiner box aus, welche die zeit aktualisieren (chrony, multid) und dann starte openntpd aus der console mit
Code:
ntpd -s -v -f /mod/etc/ntpd.conf
 
Zuletzt bearbeitet:
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.