Raspberry: Kleinen Timeserver bauen

Alle Fragen zur Netzwerkkommunikation
Antworten
Timm Thaler
Beiträge: 1224
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

Raspberry: Kleinen Timeserver bauen

Beitrag von Timm Thaler »

Ich habe zwei IP Kameras, die nicht ins Internet dürfen. Damit haben die allerdings auch keinen gültigen Zeitstempel. Ich habe einen Router, der so blöd ist, dass er keinen Timeserver bereitstellen kann. Den ich aber auch nicht austauschen kann.

Nun wollte ich ganz locker einen Raspberry Pi als Zeitserver einrichten, denn der darf ins Internet und sich die aktuelle Zeit holen. Früher(tm) mit ntp wäre das anscheinend problemlos möglich gewesen. Allerdings verwendet raspbian stretch systemd-timedatectl zur Zeitsynchonisation und das kann nur als Client arbeiten, selbst keine Zeit zur Verfügung stellen. ntp parallel zu timedatectl wird nicht empfohlen, und im Raspberry Forum bekommt man dazu so qualitfizierte Aussagen wie: systemd ist eh blöd, schalte das ab und mach ntp. ntp als reinen Server zu betreiben, ohne dass er selbst die Zeit holt scheint nicht möglich.

Eigentlich sollte es doch machbar sein, selbst einen kleinen Zeitserver zu bauen:
- schauen, ob gültige Zeit vorhanden
- schauen, ob UDP-Port 123 frei ist
- UDP-Port 123 belegen
- wenn Anfrage an 123, Zeit ausliefern

Wäre das so machbar? Oder ist meine Vorstellung naiv? In den Kameras kann ich den Timeserver ändern, also auch den Raspi eintragen.

Oder jemand sagt: Die ham keine Ahnung im Raspberry Forum, natürlich kann man ntp als reinen Server einrichten, oder es gibt was anderes, was das low level kann.

sstvmaster
Beiträge: 575
Registriert: Sa 22. Okt 2016, 23:12
OS, Lazarus, FPC: W10, L 2.2.6
CPU-Target: 32+64bit
Wohnort: Dresden

Re: Raspberry: Kleinen Timeserver bauen

Beitrag von sstvmaster »

Oder schau mal hier soll der Raspi als NTP Server laufen: http://www.satsignal.eu/ntp/Raspberry-Pi-NTP.html
LG Maik

Windows 10,
- Lazarus 2.2.6 (stable) + fpc 3.2.2 (stable)
- Lazarus 2.2.7 (fixes) + fpc 3.3.1 (main/trunk)

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6197
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Raspberry: Kleinen Timeserver bauen

Beitrag von af0815 »

Mit einem Lazarusprogramm kann man die Zeit stellen. Das geht, allerdings muss man bei der ausführbaren Datei paar Flags setzen. Code+Infos kann ich dir geben.

Meiner Meinung nach sollte ntpd = Dämon für den Zeitserver alleine auch gehen. Nicht ntp, der ja nur Client ist. Zeitserver selbst zu spielen mit Lazarus, ist wahrscheinlich auch möglich, die Frage ist nur ob es sich auszahlt.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Timm Thaler
Beiträge: 1224
Registriert: So 20. Mär 2016, 22:14
OS, Lazarus, FPC: Win7-64bit Laz1.9.0 FPC3.1.1 für Win, RPi, AVR embedded
CPU-Target: Raspberry Pi 3

Re: Raspberry: Kleinen Timeserver bauen

Beitrag von Timm Thaler »

af0815 hat geschrieben:Mit einem Lazarusprogramm kann man die Zeit stellen.


Die Zeit will ich nicht stellen, das macht der systemd.timesync.

sstvmaster hat geschrieben:Oder schau mal hier soll der Raspi als NTP Server laufen: http://www.satsignal.eu/ntp/Raspberry-Pi-NTP.html


Das sind alles die pre-systemd-Lösungen, wo auf dem Raspi noch ntp zur Zeitsynchronisation lief.

Das Problem ist halt, dass sich die Zeitsynchronisation ja selbst einstellt. Sprich sie holt die Internetzeit, hat dafür eine Liste an verfügbaren Timeservern, dann wird regelmäßig geschaut, wie die interne Uhr mit der Internetzeit zusammenpasst und entsprechend nachsynchronisiert und die "Ganggeschwindigkeit" der Uhr nachgestellt. Offenbar wird hier wirklich die bisherige Gangabweichung eingerechnet.

Das geht gut, solange es einen Dienst gibt, der die Zeit synchronisiert. Machen das aber mehrere Dienste systemd.timesync und ntp als Client, kann es Probleme geben. Wenn ich also mit ntp einen Timeserver anbieten will, dann muss ntp so konfiguriert sein, dass es nur als Server arbeitet, aber nicht als Client selbst die Zeit holt. Und dafür finde ich keine Konfiguration.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6197
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Raspberry: Kleinen Timeserver bauen

Beitrag von af0815 »

Timm Thaler hat geschrieben:Das geht gut, solange es einen Dienst gibt, der die Zeit synchronisiert. Machen das aber mehrere Dienste systemd.timesync und ntp als Client, kann es Probleme geben. Wenn ich also mit ntp einen Timeserver anbieten will, dann muss ntp so konfiguriert sein, dass es nur als Server arbeitet, aber nicht als Client selbst die Zeit holt. Und dafür finde ich keine Konfiguration.

Man muss mal auseianderhalten ntp ist der client und ntpd ist der serverdienst.

Folglich musst du ntpd richtig konfigurieren. Nur ntp und ntpd teilen sich libraries. Du kannst dir also aussuchen ntpd und ntp (Server & client) ODER systemd.timesync (nur client). Alternativ ein Proxydienst für Port 123 am RasPi der die Zeitserverzugriffe weiterleitet.

Edit: Vergiss das mit dem Proxy, gerade nachgeschaut, ntp ist udp, die Proxies normalerweise nur TCP. Geht also nicht.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Antworten