Zuerst muss das NTP-Paket installiert werden:
apt-get install ntp
Den Inhalt der Datei /etc/ntp.conf löschen und in Ihr Servereinträge erstellen, von denen die Zeit geholt werden soll.
mcedit /etc/ntp.conf tinker panic 0 # gib auch bei großen Zeitabweichungen nicht auf server = 192.168.1.2 iburst dynamic server = meinNTPserver.my.do.main iburst dynamic restrict -4 default kod notrap nomodify nopeer # hier muss die freigegebnen IP-Ranges angegeben werden, Beispiel: restrict 192.168.123.0 mask 255.255.255.0 restrict 192.168.111.0 mask 255.255.255.0 # ich antworte auf Suchbroadcast aus den beiden Netzen und biete mich als NTP-quelle an: broadcast 192.168.123.255 broadcast 192.168.111.255 disable auth
Anschließend muss der Dienst neu gestartet werden:
/etc/init.d/ntp restart
Wenn Windowsserver im Netz vorhanden sind, kann man auch diese benutzen, da diese auch eine ntp-Dienst zur Verfügung stellen.
Die Uhrzeit ist besonders bei einer Domänenanbindung eines Linuxservers wichtig.
Bei mehr als 5 Minuten Zeitunterschied zwischen Client und Server wird die Authentifizierung vom Server abgelehnt.
typische Fehlermeldung : Timeskew to great.
Zeit manuell abgleichen:
/etc/init.d/ntpd stop ntpdate meinserver #oder (suse 11.2) sntp -P no -r meinserver /etc/init.d/ntpd start
zeige mir die Abweichungen der in /etc/ntp.conf
konfigurierten Server zum lokalen Rechner an:
Interessant ist hier der Wert von offset
. Das sind die Abweichungen in Millisekunden.
ntpq -p
zeige mir jetzt die Abweichungen(offset) in Sekunden an:
ntpdc -p
zeige mir die Abweichungen auf einem Linux-PC mit installiertem Winbind an:
net time -S meinTimesrv
ändere die Zeit sofort auf den gleichen Wert meines Servers:
/etc/init.d/ntp stop net time set -S meinTimesrv /etc/init.d/ntp start
zeige mir die lokale Zeit unter SUSE:
rcntp status
zeige mir die lokale Zeit :
date +%T
zeige mir die Tageszahl:
date +%d
zeige mir das Datum in amerikanischem Format:
date +%D
zeige mir das Jahr(16):
date +%y
zeige mir das Jahr(2016):
date +%Y
zeige mir die Wochennummer:
date +%V
zeige mir den Wochentag als Wort(Wednesday) an:
date +%A
zeige mir den Wochentag als Abkürzung(Wed) an:
date +%a
zeige mir den Monat als Zahl an:
date +%H
zeige mir den Monat als Abkürzung(Oct) an:
date +%h
zeige mir die Uhrzeit an(09:14):
date +%R
zeige mir die aktuelle Minute an:
date +%M
zeige mir die interne Hardwareuhrzeit an:
cat /proc/driver/rtc
Es soll nur ein Server sich die Zeit aus dem Internet holen alle anderen sollen sich die Zeit von meinem neuen Server holen.
Zuerst muss das NTP-Paket und der xinetd installiert werden:
apt-get install ntp xinetd
Dann muss die Datei /etc/ntp.conf
mit Servereinträgen editiert werden:
... #eventuell andere server auskommentieren server ptbtime2.ptb.de iburst ...
Dann muss die Datei /etc/xinetd.d/time
editiert werden. Darin werden alle disable-Einstellungen auf „no“ gesetzt werden.
(siehe auch XINETD)
Dann muss noch der xinetd neu gestartet werden:
/etc/init.d/xinetd restart
Dann sollte noch der Server über den DHCP-Server als timeserver bekannt gemacht werden.
Serveroptionen 004 + 042
Auf den Maschinen ohne DHCP muss der Server manuell in die /etc/ntp.conf
eingetragen und der jeweilige lokale Ntp-Dienst neu gestartet werden.
dpkg-reconfigure tzdata #oder tzselect #oder timedatectl set-timezone Europe/Berlin
in datei ~/.profile
eintragen:
TZ ='Europe/Gibraltar';export TZ
apt-get remove ntp
Datei /etc/systemd/timesyncd.conf
editieren
[Time] NTP=mylocalntpsrv
dann:
systemctl enable systemd-timesyncd.service timedatectl set-ntp true systemctl restart systemd-timesyncd.service timedatectl show timedatectl status timedatectl timesync-status timedatectl set-timezone Europe/Berlin
#!/bin/bash ##### checktime.sh / rb / 2025 ##### check time between a webserver and the localtime uri="https://borwinius.de" ##### check if curl or wget and get webservertime if [ -x $(which curl) ]; then curl -skI $uri -o /dev/null || exit 60 timestring=$(curl --head $uri 2>>/dev/null | grep -e Date: | cut -d: -f2-4) else wget --no-check-certificate --spider $uri -q -O - 2>&1 || exit 5 timestring=$(wget -S $uri -q -O - 2>&1 | grep -e Date: | head -1 | cut -d: -f2-4) fi #timestring="Mon, 13 Jan 2025 12:22:33 GMT" echo $timestring webseconds=$(date -d "$timestring" +%s) echo $webseconds ##### get localtime localseconds=$(date +%s) echo $localseconds ##### check if the difference gt 5 minutes difference=$(expr $webseconds - $localseconds ) # echo $difference if [ "${difference##*[+-]}" -ge 300 ]; then echo "ERROR: $difference greater then 300 secs" exit 1 else echo "OK: $difference smaller then 300 secs " fi