Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
centos:ntp_c7 [24.06.2015 18:56. ] – [Checking chrony Source Statistics] djangocentos:ntp_c7 [22.07.2019 14:45. ] (aktuell) django
Zeile 7: Zeile 7:
 Seit CentOS 7 wird neben dem altbekanntem NTP-Daemon **ntp** ein weiterer Daemon Namens **chrony** zur Verfügung gestellt. In Adminkreisen wurde dazu oft spekuliert und argumentiert, warum RedHat einen Daemon als Default zur Verfügung gestellt wird, der vom Entwickler hauptsächlich für mobile Geräte oder nur unregelmäßig laufenden Systemen gebaut hat. Seit CentOS 7 wird neben dem altbekanntem NTP-Daemon **ntp** ein weiterer Daemon Namens **chrony** zur Verfügung gestellt. In Adminkreisen wurde dazu oft spekuliert und argumentiert, warum RedHat einen Daemon als Default zur Verfügung gestellt wird, der vom Entwickler hauptsächlich für mobile Geräte oder nur unregelmäßig laufenden Systemen gebaut hat.
  
-Im Kapitel **[[https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/ch-Configuring_NTP_Using_the_chrony_Suite.html#sect-differences_between_ntpd_and_chronyd|15.1.1. Differences Between ntpd and chronyd]]** finden sich detailierte Angaben, welche Vor- und Nachteile der Daemon **chronyd** gegenüber dem NTP Daemon **ntp**hat. Im gleich anschließendem Kapitel **[[https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/ch-Configuring_NTP_Using_the_chrony_Suite.html#sect-Choosing_between_NTP_daemon|15.1.2. Choosing Between NTP Daemons]]** finden sich dann auch noch weitere Informationen, welcher Daemon wann eingesetzt werden soll.+Im Kapitel **[[https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/ch-Configuring_NTP_Using_the_chrony_Suite.html#sect-differences_between_ntpd_and_chronyd|15.1.1. Differences Between ntpd and chronyd]]** finden sich detailierte Angaben, welche Vor- und Nachteile der Daemon **chronyd** gegenüber dem NTP Daemon **ntp**hat. Im gleich anschließendem Kapitel **[[https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/ch-Configuring_NTP_Using_the_chrony_Suite.html#sect-Choosing_between_NTP_daemon|15.1.2. Choosing Between NTP Daemons]]** finden sich dann auch noch weitere Informationen, welcher Daemon wann eingesetzt werden soll.  
 + 
 +Eine detailierte Gegenüberstellung von **chronyd**, **ntpd** und **openntpd** ist auf der Seite **//[[http://chrony.tuxfamily.org/comparison.html|Comparison of NTP implementations]]//** zu finden.
  
 <WRAP center round tip 80%> <WRAP center round tip 80%>
Zeile 15: Zeile 17:
   * chronyd can adjust the rate of the clock on a Linux system in a larger range, which allows it to operate even on machines with a broken or unstable clock. For example, on some virtual machines.   * chronyd can adjust the rate of the clock on a Linux system in a larger range, which allows it to operate even on machines with a broken or unstable clock. For example, on some virtual machines.
 </WRAP> </WRAP>
- 
- 
  
 Die nachfolgende Graphik zeigt exemplarisch den Offset mehrerer virtueller CentOS-Systeme. Der Offset wird dabei von einem **[[centos:web_c7:icinga:start|Icinga2-Monitoring-Server]]** laufend überwacht.  Die nachfolgende Graphik zeigt exemplarisch den Offset mehrerer virtueller CentOS-Systeme. Der Offset wird dabei von einem **[[centos:web_c7:icinga:start|Icinga2-Monitoring-Server]]** laufend überwacht. 
Zeile 24: Zeile 24:
 Die Server vml000010 bis vml000050 benutzen für den Abgleich der Zeiten das Paket **ntp**; die Server vml000052 bis vml000117 hingegen nutzen den Daemon **chrony**. Bemerkenswert bei diesem Vergleich ist, dass der //Offset// der einzelnen virtuellen Maschinen bei der Verwendung von **chronyd** um den __//Faktor 10 - 100 geringer//__ ist, als bei den vergleichbaren **ntp** bestückten Systemen. Die Server vml000010 bis vml000050 benutzen für den Abgleich der Zeiten das Paket **ntp**; die Server vml000052 bis vml000117 hingegen nutzen den Daemon **chrony**. Bemerkenswert bei diesem Vergleich ist, dass der //Offset// der einzelnen virtuellen Maschinen bei der Verwendung von **chronyd** um den __//Faktor 10 - 100 geringer//__ ist, als bei den vergleichbaren **ntp** bestückten Systemen.
  
-Dies und die Konfigurationsempfehlung von RedHat finden daher bei den Installation Rund um **[[start|Django'WIKI]]** entsprechend Berücksichtigung.+Ähnliche Ergebnisse kann man auch beim direkten Vergleich der zur Verfügung stehenden Zeitquellen an einem Host mit Hilfe von **ntpq**. 
 +   # watch -d -n 1 "ntpq -pn4" 
 + 
 +<code>     remote           refid      st t when poll reach   delay   offset  jitter 
 +============================================================================== 
 ++10.0.0.20       85.10.200.230    2 u  127  128  377    0.184    1.495   0.113 
 +*10.0.0.57       193.175.73.151   2 u  128  128  377    0.166    0.233   0.124 
 ++10.0.0.127      78.111.224.11    2 u   79  128  377    0.150    1.992   1.517 
 +</code> 
 + 
 +In dem gezeigtem Beispiel wurde der Test auf einem CentOS 6 Host vorgenommen, wobei die Hosts folgender Natur waren: 
 +  * 10.0.0.20 = CentOS 6 NTP-Server mit Hilfe von **ntpd**, 
 +  * 10.0.0.57 = CentOS 7 NTP-Server mit Hilfe von **chrony** und 
 +  * 10.0.0.127 = CentOS 7 NTP-Server mit Hilfe von **ntpd**. 
 +  *  
 +Diese beiden Beispiele und die Konfigurationsempfehlung von RedHat finden daher bei den Installation Rund um **[[start|Djangos WIKI]]** entsprechend Berücksichtigung.
  
 ===== chronyd ===== ===== chronyd =====
Zeile 5331: Zeile 5346:
 OPTIONS=-4 OPTIONS=-4
 </file> </file>
 +
 +== Paketfilter - firewalld ==
 +Damit unsere Clients Verbindungen zu dem geöffneten **UDP**-Port **ntp/123** chrony-Daemons aufbauen können müssen wir für diese noch Änderungen am Paketfilter **firewalld** vornehmen.
 +
 +Unter **CentOS 7** wird als Standard-Firewall die dynamische **firewalld** verwendet. Ein großer Vorteil der dynamischen Paketfilterregeln ist unter anderem, dass zur Aktivierung der neuen Firewall-Regel(n) nicht der Daemon durchgestartet werden muss und somit alle aktiven Verbindungen kurz getrennt werden. Sondern unsere Änderungen können **//on-the-fly//** aktiviert oder auch wieder deaktiviert werden.
 +
 +Mit Hilfe des Programms **firewall-cmd** legen wir nun eine **permanente** Regel in der Zone **public**, dies entspricht in unserem Beispiel das Netzwerk-Interface **eth0** mit der IP **10.0.0.57**, an. Als Source-IP geben geben wir das Netz unserer Clients an, was in unserem Fall **10.0.0.0/24** entspricht. Genug der Vorrede, mit nachfolgendem Befehl wird der Port **123** geöffnet.
 +
 +   # firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="10.0.0.0/24" port protocol="udp" port="123" destination address="10.0.0.57/32" accept"
 +
 +   success
 +
 +Anschließend können wir den Firewall-Daemon einmal durchstarten und anschließend überprüfen, ob die Regeln auch entsprechend unserer Definition, gezogen haben. 
 +   # firewall-cmd --reload
 +
 +   success
 +
 +Abschließend prüfen wir noch, ob die Erweiterung unseres Paketfilter aktiv ist. 
 +   # iptables -nvL IN_public_allow
 +<code>Chain IN_public_allow (1 references)
 + pkts bytes target     prot opt in     out     source               destination
 +  205 15580 ACCEPT     udp  --  *      *       10.0.0.0/24          10.0.0.57            udp dpt:123 ctstate NEW
 +    0     0 ACCEPT     tcp  --  *      *       10.0.0.117           10.0.0.57            tcp dpt:5665 ctstate NEW
 +    2   112 ACCEPT     tcp  --  *      *       0.0.0.0/           0.0.0.0/           tcp dpt:22 ctstate NEW
 +</code>
 +
 +== DHCP ==
 +Damit unsere Cliens auch von [[centos:dhcp-server|unserem eigenen NTP-Server]] Gebrauch machen, geben wir die IP-Adresse unseres NTP-Servers via DHCP bekannt.
 +
 +Wir editieren also unsere **/etc/dhcpd.conf**.
 +   vim  /etc/dhcpd.conf
 +   
 +           option ntp-servers              192.168.100.1;
 +Abschließend restarten wir unseren DHCP-Server.
 +   service dhcpd restart
 +
  
 ==== Start des Daemon ==== ==== Start des Daemon ====
Zeile 5351: Zeile 5402:
 Damit der Daemon **chrony** automatisch bei jedem Systemstart startet, kann die Einrichtung eines Start-Scriptes über folgenden Befehl erreicht werden: Damit der Daemon **chrony** automatisch bei jedem Systemstart startet, kann die Einrichtung eines Start-Scriptes über folgenden Befehl erreicht werden:
    # systemctl enable chronyd.service    # systemctl enable chronyd.service
 +
 +   ln -s '/usr/lib/systemd/system/chronyd.service' '/etc/systemd/system/multi-user.target.wants/chronyd.service'
  
 Ein Überprüfung ob der Dienst (Daemon)**chrony**  wirklich bei jedem Systemstart automatisch mit gestartet wird, kann durch folgenden Befehl erreicht werden: Ein Überprüfung ob der Dienst (Daemon)**chrony**  wirklich bei jedem Systemstart automatisch mit gestartet wird, kann durch folgenden Befehl erreicht werden:
Zeile 5375: Zeile 5428:
 Da wir **chrony** im Client-Modus betreiben, wird auch der Port **123** bedient - daher wird bei der nachfolgenden Abfrage auch kein geöffneter Port 123 gemeldet. Da wir **chrony** im Client-Modus betreiben, wird auch der Port **123** bedient - daher wird bei der nachfolgenden Abfrage auch kein geöffneter Port 123 gemeldet.
    # netstat -paunt | grep 123    # netstat -paunt | grep 123
 +
 +Betreiben wir unseren chrony Daemon im Servermode wird dann natürlich der Port **123** auf den konfigurierten Netzwerkadressen gebunden.
 +   # netstat -paunt | grep 123
 +
 +  udp        0      0 0.0.0.0:123             0.0.0.0:                          13580/chronyd
 +  udp6            0 :::123                  :::*                                13580/chronyd
 +
  
  
Zeile 5408: Zeile 5468:
     * **2** wird angezeigt, wenn der Daemon sich mit einer Quelle synchronisiert hat, die den Wert Stratum 1 inne hat.     * **2** wird angezeigt, wenn der Daemon sich mit einer Quelle synchronisiert hat, die den Wert Stratum 1 inne hat.
     * **n** Jede weitere Erhöhung des Stratum-Wertes bedeutet, dass ein weiterer Host zwischen dem chrony-Daemon und dem Zeitnormal mit dem Stratum Wert 1 steht.     * **n** Jede weitere Erhöhung des Stratum-Wertes bedeutet, dass ein weiterer Host zwischen dem chrony-Daemon und dem Zeitnormal mit dem Stratum Wert 1 steht.
-  * **Poll** \\ Angabe in welchen Abständen die Uhrzeit turnusmäßig synchronisiert wird. Die Zeitspanne errechnet sich bei einem polling-Wert **n = 6** nach (<html>2<sup><b>n</b></sup></html>) von <html><b>2<sup>6</sup> = 64</b></html>. Der wert kann schwanken, je nach dem wie stabil das Zeitnormal verläuft.+  * **Poll** \\ Angabe in welchen Abständen die Uhrzeit turnusmäßig synchronisiert wird. Die Zeitspanne errechnet sich bei einem polling-Wert **n = 6** nach (<html>2<sup><b>n</b></sup></html>) von <html><b>2<sup>6</sup> = 64</b></html>. Der Wert kann schwanken, je nach dem wie stabil das Zeitnormal verläuft.
   * **Reach** \\ Registerwert (Oktalzahl) der empfangenen Datenpakete. Das Register hat hat 8 bit und wird jeweils beim Empfang bzw. etwaigen Verlusten von Datenpaketen angepasst. Ein Wert von 377 zeigt z.B. an, das die letzten acht empfangenen Datenpakete gültig waren.   * **Reach** \\ Registerwert (Oktalzahl) der empfangenen Datenpakete. Das Register hat hat 8 bit und wird jeweils beim Empfang bzw. etwaigen Verlusten von Datenpaketen angepasst. Ein Wert von 377 zeigt z.B. an, das die letzten acht empfangenen Datenpakete gültig waren.
   * **LastRx** \\ In dieser Spalte wird angezeigt, wann zuletzt von der genannten Zeitquelle ein Datenpaket empfangen wurde. Ein reiner Zahlenwert steht für die Angabe in Sekunden, sowie die Buchstaben **m**, **h**, **d** oder **y** jeweils für **Minuten**, **Stunden**, **Tage** bzw. **Jahre**. Der Wert 10 Jahre steht dafür, dass noch kein gültiges Datenpaket von der Quelle empfangen wurde.   * **LastRx** \\ In dieser Spalte wird angezeigt, wann zuletzt von der genannten Zeitquelle ein Datenpaket empfangen wurde. Ein reiner Zahlenwert steht für die Angabe in Sekunden, sowie die Buchstaben **m**, **h**, **d** oder **y** jeweils für **Minuten**, **Stunden**, **Tage** bzw. **Jahre**. Der Wert 10 Jahre steht dafür, dass noch kein gültiges Datenpaket von der Quelle empfangen wurde.
   * **Last sample** \\ Hier wird der Offset zwischen der lokalen Zeit und dem empfangenen NTP-UDP-Paket des Zeitservers angezeigt. Der Wert in den eckigen Klammern zeigt die tatsächlich gemessene Abweichung (Offset). Die Werte werden in den Einheiten **ns** für Nanosekunden, **us** für Mikrosekunden, **ms** für Millisekunden und **s** für Sekunden angegeben. Die Zahl auf der linken Seite der eckigen Klammern zeigt die ursprünglichen Messwert an, mit dem die Messwerte bis jetzt korrigiert wurden. Die Zahl nach dem +/- Anzeige zeigt die Fehlerspanne bei der Messung. Positive Offsets anzuzeigen, dass die lokale Zeit der NTP-Serverzeit vorausläuft.   * **Last sample** \\ Hier wird der Offset zwischen der lokalen Zeit und dem empfangenen NTP-UDP-Paket des Zeitservers angezeigt. Der Wert in den eckigen Klammern zeigt die tatsächlich gemessene Abweichung (Offset). Die Werte werden in den Einheiten **ns** für Nanosekunden, **us** für Mikrosekunden, **ms** für Millisekunden und **s** für Sekunden angegeben. Die Zahl auf der linken Seite der eckigen Klammern zeigt die ursprünglichen Messwert an, mit dem die Messwerte bis jetzt korrigiert wurden. Die Zahl nach dem +/- Anzeige zeigt die Fehlerspanne bei der Messung. Positive Offsets anzuzeigen, dass die lokale Zeit der NTP-Serverzeit vorausläuft.
  
 +Haben wir uns mit **chronyc** verbunden, können wir uns auch mit der Option **-v** eine Beschreibung der Spalten abrufen.
 +   # chronyc -a
  
 +<code>chrony version 1.29.1
 +Copyright (C) 1997-2003, 2007, 2009-2013 Richard P. Curnow and others
 +chrony comes with ABSOLUTELY NO WARRANTY.  This is free software, and
 +you are welcome to redistribute it under certain conditions.  See the
 +GNU General Public License version 2 for details.
 +
 +200 OK
 +chronyc>
 +</code>
 +
 +   chronyc> sources -v
 +<code>210 Number of sources = 5
 +
 +  .-- Source mode  '^' = server, '=' = peer, '#' = local clock.
 + / .- Source state '*' = current synced, '+' = combined , '-' = not combined,
 +| /   '?' = unreachable, 'x' = time may be in error, '~' = time too variable.
 +||                                                 .- xxxx [ yyyy ] +/- zzzz
 +||                                                /   xxxx = adjusted offset,
 +||         Log2(Polling interval) -.                yyyy = measured offset,
 +||                                  \            |    zzzz = estimated error.
 +||                                             |
 +MS Name/IP address         Stratum Poll Reach LastRx Last sample
 +===============================================================================
 +^* char-ntp-pool.charite.de      1  10   377    98   -476us[ -433us] +/-   21ms
 +^? s1.vlns.de                    3  10   377   569  +1343us[+1385us] +/-  107ms
 +^+ funky.fuchsi.de                10   377  1017  -1579us[-1537us] +/-   35ms
 +^- nandus.lf-net.org              10   377   765  -1300us[-1258us] +/-   53ms
 +^+ xen1.hochstaetter.de          2  10   377  1018  +4330us[+4372us] +/-   73ms
 +chronyc>
 +</code>
 === Checking chrony Source Statistics === === Checking chrony Source Statistics ===
 Den Status unserer Zeitserverquellen fragen wir mit dem Befehl **chronyc sourcestats** ab. Den Status unserer Zeitserverquellen fragen wir mit dem Befehl **chronyc sourcestats** ab.
Zeile 5426: Zeile 5518:
  
 Die einzelnen Spalten haben folgende Bedeutung:  Die einzelnen Spalten haben folgende Bedeutung: 
-  * ** **+  * **Name / IP-Adresse** \\ Name bzw. die IP-Adresse der Quelle, Referenz-ID oder der lokalen Referenz-Uhr auf den/die sich die folgenden Werte beziehen. 
 +  * **NP** \\ Anzahl der Abtastpunkte (sampling points), die derzeit vom Daemon verwendet werden. Die Driftrate und der Offset werden durch eine lineare Regression der Abtastpunkte geschätzt. 
 +  * **NR** \\ Anzahl der Durchläufe der Restwertberechnungen mit dem gleichen Vorzeichen nach der letzten Regression. Sobald dieser wert unter die Anzahl der Abtastpunkte (sampling points) ist dies ein Anzeichen, dass die Werte nicht mehr optimal linear berechnet werden können. Wird die Anzahl der Durchläufe zu klein, führt chronyd basieren auf alte bekannte Daten eine neu Regression durch, bis der wert wieder in einem akzeptablen Bereich liegt. 
 +  * **Span** \\ Abstand zwischen dem ältesten und neuesten Sample. Wird keine Einheit angegeben, werden Sekunden angezeigt; **m** steht für Minuten.  
 +  * **Frequency** \\ geschätzte Restfrequenz, die dedr Daemon nutzte (<html>10<sup>-6</sup></html>
 +  * **Freq Skew** \\ geschätzte Fehlergrenzen des Werts //Frequency// (<html>10<sup>-6</sup></html>). 
 +  * **Offset** \\ geschätzter Offset der Quelle. 
 +  * **Std Dev** \\ geschätzte Standardabweichung der Stichprobe. 
 + 
 +Haben wir uns mit **chronyc** verbunden, können wir uns auch mit der Option **-v** eine Beschreibung der Spalten abrufen. 
 +   # chronyc -a 
 + 
 +<code>chrony version 1.29.1 
 +Copyright (C) 1997-2003, 2007, 2009-2013 Richard P. Curnow and others 
 +chrony comes with ABSOLUTELY NO WARRANTY.  This is free software, and 
 +you are welcome to redistribute it under certain conditions.  See the 
 +GNU General Public License version 2 for details. 
 + 
 +200 OK 
 +chronyc> 
 +</code> 
 + 
 +   chronyc> sourcestats -v 
 +<code>210 Number of sources = 5 
 +                             .- Number of sample points in measurement set. 
 +                            /    .- Number of residual runs with same sign. 
 +                              /    .- Length of measurement set (time). 
 +                                /      .- Est. clock freq error (ppm). 
 +                                    /           .- Est. error in freq. 
 +                                             /         .- Est. offset. 
 +                                            |          |   On the -. 
 +                                            |          |   samples. \ 
 +                                            |          |             | 
 +Name/IP Address            NP  NR  Span  Frequency  Freq Skew  Offset  Std Dev 
 +============================================================================== 
 +char-ntp-pool.charite.de   64  27   15h     -0.000      0.009   -801us   356us 
 +s1.vlns.de                 18    293m      0.083      0.047  +1293us   244us 
 +funky.fuchsi.de                155m      0.026      0.163  -1709us   263us 
 +nandus.lf-net.org              103m     -0.351      0.495  -2348us   422us 
 +xen1.hochstaetter.de       61  29   15h     -0.001      0.009  +4265us   372us 
 +</code> 
 === Checking chrony Tracking === === Checking chrony Tracking ===
 +Die Anzeige der System Zeit Informationen fragen wir mit dem Befehl **chronyc tracking** ab.
 +   # chronyc tracking
  
 +<code>Reference ID    : 129.70.132.36 (stratum2-3.NTP.TechFak.NET)
 +Stratum         : 3
 +Ref time (UTC)  : Thu Jun 25 12:11:40 2015
 +System time     : 0.000093731 seconds slow of NTP time
 +Last offset     : -0.000091557 seconds
 +RMS offset      : 0.000051272 seconds
 +Frequency       : 0.381 ppm slow
 +Residual freq   : -0.001 ppm
 +Skew            : 0.006 ppm
 +Root delay      : 0.033234 seconds
 +Root dispersion : 0.002327 seconds
 +Update interval : 1043.2 seconds
 +Leap status     : Normal</code>
  
 +Die einzelnen Werte haben nachfolgend aufgeführte Bedeutungen:
 +  * **Reference ID** \\ Referenz-ID bzw. Name und die IP-Adresse mit dem sich der chrony-Daemon synchronisiert hat. Der Wert **127.127.1.1** zeigt an, dass sich der Daemon __nicht__ mit einer externen NTP-server synchronisiert hat, sondern dass der Daemon im "lokal mode" befindet, da der Server über eine externe Signalquelle z.B. einer DCF 77 Funkuhr verfügt.
 +  * ** Stratum** \\ Anzeige des Stratum-Wertes von der Quelle an Hand der zuletzt empfangenen Datenpakete.
 +    * **1** wird angezeigt, wenn der Server über eine lokal angeschlossene Referenzuhr verfügt.
 +    * **2** wird angezeigt, wenn der Daemon sich mit einer Quelle synchronisiert hat, die den Wert Stratum 1 inne hat.
 +    * **n** Jede weitere Erhöhung des Stratum-Wertes bedeutet, dass ein weiterer Host zwischen dem chrony-Daemon und dem Zeitnormal mit dem Stratum Wert 1 steht.
 +  * **Ref time (UTC)** \\ Uhrzeit ([[https://de.wikipedia.org/wiki/Koordinierte_Weltzeit|UTC]]) der Referenz ID, also der Zeit des externen Zeitservers oder der lokalen externen Uhr.
 +  * **System time** \\ Im normalen Betrieb wird der chrony-Daemon die lokale Zeit nicht in einem Schritt neu stellen, da dies zu ungewollten Effekten führen würde. Chrony word daher zur Anpassung der lokalen Uhrzeit an das externe Ziel durch Veränderungen der Laufgeschwindigkeit der lokalen Uhr anpassen; d.h. die loakel Uhr wird mal schneller oder langsamer als die Uhr des Zeitquelle laufen. Diese Abweichung wird beim Punkt **Ref time (UTC)** angegeben.
 +  * **Last offset** \\ Repräsentiert die geschätze Differenz der lokalen Uhr zur externen Quelle.
 +  * **RMS offset** \\ Dies ist die Anzeige der durchschnittliche Abweichung der lokalen Uhr zur externen Quelle.
 +  * **Frequency** \\ Abweichung der lokalen Uhrzeit vom Zeitnormal, in der Annahme chronyd würde die Zeit nicht anpassen. Der Wert wird in //ppm//((parts per million <html>10<sup>-6</sup></html>)) angegeben.
 +  * **Residual freq** \\ Anzeige der Restfrequenz (residual frequency) für die aktuell ausgewählte Referenzquelle. Der angezeigte Wert spiegelt einen Unterschied zwischen dem, was die Messung von der Referenzquelle vorgibt un der aktuell von chrony-Daemon verwendeten Frequenz wieder. Der Wert wird dabei niemals den Wert 0 anzeigen, da bei der Berechnung der Frequenzwerte Rundungen verwendet werden. Jedes mal wenn der Frequenzwert des Zeitnormals empfangen wurde und die neue Restfrequenz berechnet wurde, wird die geschätzte Genauigkeit dieses neuen Restwertes mit den vorhandenen Werten verglichen und angezeigt. Je genauer die Messungen der Referenzquelle ist und je stabiler die lokale Uhr läuft um so geringer wird der angezeigte Wert und nähert sich im Idealfall dem Wert 0 an.
 +  * **Skew** \\ Frequenzdrifft in //ppm//((parts per million <html>10<sup>-6</sup></html>)).
 +  * **Root delay** \\ Verzögerung durch Laufzeitunterschiede zwischen dem Straum 1 und dem lokalen Server, die durch Laufzeitunterschiede im Netzwerk aufgetreten sind. 
 +  * **Root dispersion** \\ Ungefähre Abweichung (Streuung), bedingt durch statistischen Messschwankungen oder Rundungsdifferenzen, der lokalen Uhrzeit bis hin zur Stratum 1 Quelle.
 +  * **Update interval** \\ Intervall in Sekunden, in der der Daemon die Uhrzeit spätentens aktualisiert.
 +  * **Leap status** \\ Sprungstatus der Uhrzeit, die einen der folgenden Werte aufweisen kann:
 +    * **Normal** normaler Betrieb, also alles in Ordnung,
 +    * **Insert second** Zeit wurde durch Einfügen einer Sekunde verlangsamt,
 +    * **Delete second** Zeit wurde durch Löschen einer Sekunde beschleunigt, oder
 +    * **Not synchronized** Zeit konnte noch nicht synchronisiert werden. 
 +
 +=== Checking chrony Clients ===
 +Betreiben wir unseren chrony-Daemon im Server-Mode, können wir uns anzeigen lassen, welcher oder welche Clients sich mit dem Daemon verbunden haben, egal ob via NTP oder zum command/monitoring Port. Hierzu öffnen wir zuerst einmal die chrony-Shell auf unserem Server, auf dem der chrony-Daemon läuft.
 +   # chronyc -a
 +
 +<code>chrony version 1.29.1
 +Copyright (C) 1997-2003, 2007, 2009-2013 Richard P. Curnow and others
 +chrony comes with ABSOLUTELY NO WARRANTY.  This is free software, and
 +you are welcome to redistribute it under certain conditions.  See the
 +GNU General Public License version 2 for details.
 +
 +200 OK
 +chronyc>
 +</code>
 +
 +Anschließend fragen wir mit dem Befehl **clients** ab, welche Clients sich mit dem Server verbunden haben. 
 +   chronyc> clients
 +
 +<code>
 +Hostname                   Client    Peer CmdAuth CmdNorm  CmdBad  LstN  LstC
 +=========================  ======  ======  ======  ======  ======  ====  ====
 +localhost                                  31      25         45y     0
 +10.0.0.52                     228                            57   45y
 +</code>
 +
 +Die einzelnen Werte haben nachfolgend aufgeführte Bedeutungen:
 +  * **Hostname** \\ Hostname oder IP-Adresse des Clients 
 +  * **Client** \\ Anzahl der Verbindungen des Clients im NTP client mode
 +  * **Peer** \\ Anzahl der Verbindungen des Clients im NTP symmetric active mode
 +  * **CmdAuth** \\ Anzahl der authentifizierten Steuerpakete die vom Client bis jetzt erfolgreich, d.h. nach dem password-Befehl, abgesetzt wurden.
 +  * **CmdNorm** \\ Anzahl der __nicht__ authentifizierten Steuerpakete die vom Client bis jetzt abgesetzt wurden.
 +  * **CmdBad** \\ Anzahl der erfolglosen Versuche Steuerpakete die vom Client bis jetzt abgesetzt wurden.
 +  * **LstN** \\ Zeit seit dem das letzte NTP Pakete empfangen wurde
 +  * **LstC** \\ Zeit seit dem das letzte Steuerpaket/Befehl empfangen wurde
 +
 +==== Fazit ====
 +<WRAP center round info 85%>
 +Betrachtet man nun abschließend die Konfigurationsmöglichkeiten von chrony, kann man unter anderem folgendes Re­sü­mee ziehen:
 +
 +chronyd eignet sich hervorragend im Virtualisierungsumfeld, die ja bekannter Weise eine große Vo­la­ti­li­tät bei der lokalen Systemuhr nach sich ziehen kann, eine stabile Synchronisation der Uhrzeiten zu gewährleisten.
 +</WRAP>
  
 ===== ntpd ===== ===== ntpd =====
 +Als Alternative kann man natürlich auch auf den altbekannten NTP-Daemon **ntp** zurückgreifen. 
 ==== Installation ==== ==== Installation ====
 +Wurde bei der Erstinstallation der unter CentOS 7 standardmäßig vorgegebene NTP-Daemon noch nicht vom System entfernt, holen wir dies nun kurz nach.
 +   # yum remove chrony -y
 +
 +Nun installieren wir den NTP-Daemon **ntp** mit Hilfe des Paketverwaltungsprogramms **yum**.
 +   # yum install ntp -y
 +
 +
 +
 ==== Dokumentation ==== ==== Dokumentation ====
 +Was uns das Paket alles mitgebracht hat, zeigt uns der Aufruf vom Befehl **rpm** mit der Option **//-qil//**.
 +   # rpm -qil ntp
 +
 +<code>Name        : ntp               
 +Version     : 4.2.6p5           
 +Release     : 19.el7.centos
 +Architecture: x86_64
 +Install Date: Fri 26 Jun 2015 09:48:07 AM CEST
 +Group       : System Environment/Daemons
 +Size        : 1429916
 +License     : (MIT and BSD and BSD with advertising) and GPLv2
 +Signature   : RSA/SHA256, Sat 20 Dec 2014 03:55:07 AM CET, Key ID 24c6a8a7f4a80eb5
 +Source RPM  : ntp-4.2.6p5-19.el7.centos.src.rpm
 +Build Date  : Sat 20 Dec 2014 03:38:17 AM CET
 +Build Host  : worker1.bsys.centos.org
 +Relocations : (not relocatable)
 +Packager    : CentOS BuildSystem <http://bugs.centos.org>
 +Vendor      : CentOS
 +URL         : http://www.ntp.org
 +Summary     : The NTP daemon and utilities
 +Description :
 +The Network Time Protocol (NTP) is used to synchronize a computer's
 +time with another reference time source. This package includes ntpd
 +(a daemon which continuously adjusts system time) and utilities used
 +to query and configure the ntpd daemon.
 +
 +Perl scripts ntp-wait and ntptrace are in the ntp-perl package,
 +ntpdate is in the ntpdate package and sntp is in the sntp package.
 +The documentation is in the ntp-doc package.
 +/etc/dhcp/dhclient.d
 +/etc/dhcp/dhclient.d/ntp.sh
 +/etc/ntp.conf
 +/etc/ntp/crypto
 +/etc/ntp/crypto/pw
 +/etc/sysconfig/ntpd
 +/usr/bin/ntpstat
 +/usr/lib/systemd/ntp-units.d/60-ntpd.list
 +/usr/lib/systemd/system/ntpd.service
 +/usr/sbin/ntp-keygen
 +/usr/sbin/ntpd
 +/usr/sbin/ntpdc
 +/usr/sbin/ntpq
 +/usr/sbin/ntptime
 +/usr/sbin/tickadj
 +/usr/share/doc/ntp-4.2.6p5
 +/usr/share/doc/ntp-4.2.6p5/COPYRIGHT
 +/usr/share/doc/ntp-4.2.6p5/ChangeLog
 +/usr/share/doc/ntp-4.2.6p5/NEWS
 +/usr/share/man/man5/ntp.conf.5.gz
 +/usr/share/man/man5/ntp_acc.5.gz
 +/usr/share/man/man5/ntp_auth.5.gz
 +/usr/share/man/man5/ntp_clock.5.gz
 +/usr/share/man/man5/ntp_decode.5.gz
 +/usr/share/man/man5/ntp_misc.5.gz
 +/usr/share/man/man5/ntp_mon.5.gz
 +/usr/share/man/man8/ntp-keygen.8.gz
 +/usr/share/man/man8/ntpd.8.gz
 +/usr/share/man/man8/ntpdc.8.gz
 +/usr/share/man/man8/ntpq.8.gz
 +/usr/share/man/man8/ntpstat.8.gz
 +/usr/share/man/man8/ntptime.8.gz
 +/usr/share/man/man8/tickadj.8.gz
 +/var/lib/ntp
 +/var/lib/ntp/drift
 +/var/log/ntpstats
 +</code>
 +
 +Die Beschreibungen der einzelnen Befehle findet man in deren **manpage**'s.
 +
 ==== Konfiguration ==== ==== Konfiguration ====
 +=== Client ===
 +In diesem Konfigurationsbeispiel widmen wir uns einem CentOS 7 Client, der von einem bekannten NTP-Server die Uhrzeit holen und auch synchron halten soll. Ob ein eigener Zeitserver im eigenen **Netzwerk** oder ein **öffentlicher NTP-Server** genutzt werden soll, ist konfigurationstechnisch egal, unterschieden sich beide System i.d.R. nur im Namen oder der zugehörigen IP-Adresse.
 +
 +Die Konfiguration unseres NTP-Daemon, oder genauer gesagt eines NTP-Clients **ntp**, erfolgt über die Datei //**/etc/ntp.conf**//. Mit dem Editor unserer Wahl bearbeiten wir nun diese Datei.
 +   # vim /etc/ntp.conf
 +
 +<file bash /etc/ntp.conf># For more information about this file, see the man pages
 +# ntp.conf(5), ntp_acc(5), ntp_auth(5), ntp_clock(5), ntp_misc(5), ntp_mon(5).
 +
 +driftfile /var/lib/ntp/drift
 +
 +# Permit time synchronization with our time source, but do not
 +# permit the source to query or modify the service on this system.
 +restrict default kod nomodify notrap nopeer noquery
 +restrict -6 default kod nomodify notrap nopeer noquery
 +
 +# Permit all access over the loopback interface.  This could
 +# be tightened as well, but to do so would effect some of
 +# the administrative functions.
 +restrict 127.0.0.1
 +restrict -6 ::1
 +
 +# Hosts on local network are less restricted.
 +#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
 +
 +# Use public servers from the pool.ntp.org project.
 +# Please consider joining the pool (http://www.pool.ntp.org/join.html).
 +# Django : 2015-06-06
 +# default: server 0.centos.pool.ntp.org iburst
 +#          server 1.centos.pool.ntp.org iburst
 +#          server 2.centos.pool.ntp.org iburst
 +#          server 3.centos.pool.ntp.org iburst
 +server time.dmz.nausch.org iburst
 +server 10.0.0.57 iburst
 +server 10.0.0.127 iburst
 +
 +#broadcast 192.168.1.255 autokey        # broadcast server
 +#broadcastclient                        # broadcast client
 +#broadcast 224.0.1.1 autokey            # multicast server
 +#multicastclient 224.0.1.1              # multicast client
 +#manycastserver 239.255.254.254         # manycast server
 +#manycastclient 239.255.254.254 autokey # manycast client
 +
 +# Enable public key cryptography.
 +#crypto
 +
 +includefile /etc/ntp/crypto/pw
 +
 +# Key file containing the keys and key identifiers used when operating
 +# with symmetric key cryptography.
 +keys /etc/ntp/keys
 +
 +# Specify the key identifiers which are trusted.
 +#trustedkey 4 8 42
 +
 +# Specify the key identifier to use with the ntpdc utility.
 +#requestkey 8
 +
 +# Specify the key identifier to use with the ntpq utility.
 +#controlkey 8
 +
 +# Enable writing of statistics records.
 +#statistics clockstats cryptostats loopstats peerstats
 +</file>
 +
 +In der sehr übersichtlichen Konfigurationsdatei ist für unserem Client hauptsächlich die Zeile **server time.dmz.nausch.org iburst** von Interesse. Hier haben wir angegeben, mit welchem oder welchen internen Zeitserver(n) sich der Client sich synchronisieren soll.
 +
 +
 === Server === === Server ===
-=== Clients ===+== Daemon =
 +Im zweiten Konfigurationsbeispiel widmen wir uns einem CentOS 7 Server, der von mehreren vertrauenswürdigen NTP-Server im Internet die Uhrzeit holen und auch synchron halten soll. 
 + 
 +Die Konfiguration unseres NTP-Daemon, oder genauer gesagt unseres NTP-Servers mit Hilfe von **ntüp**, erfolgt über die Datei //**/etc/ntp.conf**//. Mit dem Editor unserer Wahl bearbeiten wir nun diese Datei.  
 +   # vim /etc/ntp.conf 
 + 
 +<file bash /etc/ntp.conf># For more information about this file, see the man pages 
 +# ntp.conf(5), ntp_acc(5), ntp_auth(5), ntp_clock(5), ntp_misc(5), ntp_mon(5). 
 + 
 +driftfile /var/lib/ntp/drift 
 + 
 +# Permit time synchronization with our time source, but do not 
 +# permit the source to query or modify the service on this system. 
 +restrict default nomodify notrap nopeer noquery 
 + 
 +# Permit all access over the loopback interface.  This could 
 +# be tightened as well, but to do so would effect some of 
 +# the administrative functions. 
 +restrict 127.0.0.1 
 +restrict ::1 
 + 
 +# Hosts on local network are less restricted. 
 +# Django : 2015-06-26 
 +#          interne Netze definiert, die den Zeitserver kontaktieren dürfen 
 +# default: #restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap 
 +restrict 10.0.0.0 mask 255.255.255.0 nomodify notrap 
 +restrict 10.0.10.0 mask 255.255.255.192 nomodify notrap 
 + 
 +# Use public servers from the pool.ntp.org project. 
 +# Please consider joining the pool (http://www.pool.ntp.org/join.html). 
 +server 0.centos.pool.ntp.org iburst 
 +server 1.centos.pool.ntp.org iburst 
 +server 2.centos.pool.ntp.org iburst 
 +server 3.centos.pool.ntp.org iburst 
 + 
 +#broadcast 192.168.1.255 autokey        # broadcast server 
 +#broadcastclient                        # broadcast client 
 +#broadcast 224.0.1.1 autokey            # multicast server 
 +#multicastclient 224.0.1.1              # multicast client 
 +#manycastserver 239.255.254.254         # manycast server 
 +#manycastclient 239.255.254.254 autokey # manycast client 
 + 
 +# Enable public key cryptography. 
 +#crypto 
 + 
 +includefile /etc/ntp/crypto/pw 
 + 
 +# Key file containing the keys and key identifiers used when operating 
 +# with symmetric key cryptography. 
 +keys /etc/ntp/keys 
 + 
 +# Specify the key identifiers which are trusted. 
 +#trustedkey 4 8 42 
 + 
 +# Specify the key identifier to use with the ntpdc utility. 
 +#requestkey 8 
 + 
 +# Specify the key identifier to use with the ntpq utility. 
 +#controlkey 8 
 + 
 +# Enable writing of statistics records. 
 +#statistics clockstats cryptostats loopstats peerstats 
 + 
 +# Disable the monitoring facility to prevent amplification attacks using ntpdc 
 +# monlist command when default restrict does not include the noquery flag. See 
 +# CVE-2013-5211 for more details. 
 +# Note: Monitoring will not be disabled with the limited restriction flag. 
 +disable monitor 
 +</file> 
 + 
 +/* 
 +Jul 10 14:34:33 pml010002 kernel: usb 3-1: USB disconnect, device number 2                                                                                                        
 +Jul 10 14:34:37 pml010002 kernel: usb 3-1: new full speed USB device number 12 using ohci_hcd                                                                                     
 +Jul 10 14:34:37 pml010002 kernel: usb 3-1: New USB device found, idVendor=0403, idProduct=e88a                                                                                    
 +Jul 10 14:34:37 pml010002 kernel: usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3                                                                               
 +Jul 10 14:34:37 pml010002 kernel: usb 3-1: Product: Expert mouseCLOCK USB II                                                                                                      
 +Jul 10 14:34:37 pml010002 kernel: usb 3-1: Manufacturer: GUDEADS 
 +Jul 10 14:34:37 pml010002 kernel: usb 3-1: SerialNumber: FTYRYEJF 
 +Jul 10 14:34:37 pml010002 kernel: usb 3-1: configuration #1 chosen from 1 choice 
 +Jul 10 14:34:37 pml010002 kernel: ftdi_sio 3-1:1.0: FTDI USB Serial Device converter detected 
 +Jul 10 14:34:37 pml010002 kernel: usb 3-1: Detected FT232RL 
 +Jul 10 14:34:37 pml010002 kernel: usb 3-1: Number of endpoints 2 
 +Jul 10 14:34:37 pml010002 kernel: usb 3-1: Endpoint 1 MaxPacketSize 64 
 +Jul 10 14:34:37 pml010002 kernel: usb 3-1: Endpoint 2 MaxPacketSize 64 
 +Jul 10 14:34:37 pml010002 kernel: usb 3-1: Setting MaxPacketSize 64 
 +Jul 10 14:34:37 pml010002 kernel: usb 3-1: FTDI USB Serial Device converter now attached to ttyUSB1 
 +*/ 
 +== IPv6 Deaktivierung == 
 +Hat man im eigenen Netz "nur" **IPv4** im Einsatz, möchte man selbstredend den Support für **IPv6** deaktivieren. 
 + 
 +Das Deaktivieren erfolgt nun nicht, wie man vermutlich annehmen wird über die Konfigurationsdatei //**/etc/ntp.conf**//, sondern über die Datei //**/etc/sysconfig/ntpd**//
 +   # vim /etc/sysconfig/ntpd 
 +<file bash /etc/sysconfig/ntpd># Command line options for ntpd 
 +# Django : 2015-06-26 
 +#          disable IPv6 support 
 +# default: OPTIONS="-g" 
 +OPTIONS="-g -4" 
 +</file> 
 + 
 + 
 +== Paketfilter - firewalld == 
 +Damit unsere Clients Verbindungen zu dem geöffneten **UDP**-Port **ntp/123** chrony-Daemons aufbauen können müssen wir für diese noch Änderungen am Paketfilter **firewalld** vornehmen. 
 + 
 +Unter **CentOS 7** wird als Standard-Firewall die dynamische **firewalld** verwendet. Ein großer Vorteil der dynamischen Paketfilterregeln ist unter anderem, dass zur Aktivierung der neuen Firewall-Regel(n) nicht der Daemon durchgestartet werden muss und somit alle aktiven Verbindungen kurz getrennt werden. Sondern unsere Änderungen können **//on-the-fly//** aktiviert oder auch wieder deaktiviert werden. 
 + 
 +Mit Hilfe des Programms **firewall-cmd** legen wir nun eine **permanente** Regel in der Zone **public**, dies entspricht in unserem Beispiel das Netzwerk-Interface **eth0** mit der IP **10.0.0.57**, an. Als Source-IP geben geben wir das Netz unserer Clients an, was in unserem Fall **10.0.0.0/24** entspricht. Genug der Vorrede, mit nachfolgendem Befehl wird der Port **123** geöffnet. 
 + 
 +   # firewall-cmd --permanent --zone=public --add-rich-rule="rule family="ipv4" source address="10.0.0.0/24" port protocol="udp" port="123" destination address="10.0.0.57/32" accept" 
 + 
 +   success 
 + 
 +Anschließend können wir den Firewall-Daemon einmal durchstarten und anschließend überprüfen, ob die Regeln auch entsprechend unserer Definition, gezogen haben.  
 +   # firewall-cmd --reload 
 + 
 +   success 
 + 
 +Abschließend prüfen wir noch, ob die Erweiterung unseres Paketfilter aktiv ist.  
 +   # iptables -nvL IN_public_allow 
 +<code>Chain IN_public_allow (1 references) 
 + pkts bytes target     prot opt in     out     source               destination 
 +  205 15580 ACCEPT     udp  --  *      *       10.0.0.0/24          10.0.0.57            udp dpt:123 ctstate NEW 
 +    0     0 ACCEPT     tcp  --  *      *       10.0.0.117           10.0.0.57            tcp dpt:5665 ctstate NEW 
 +    2   112 ACCEPT     tcp  --  *      *       0.0.0.0/           0.0.0.0/           tcp dpt:22 ctstate NEW 
 +</code> 
 + 
 +=DHCP == 
 +Damit unsere Cliens auch von [[centos:dhcp-server|unserem eigenen NTP-Server]] Gebrauch machen, geben wir die IP-Adresse unseres NTP-Servers via DHCP bekannt. 
 + 
 +Wir editieren also unsere **/etc/dhcpd.conf**. 
 +   vim  /etc/dhcpd.conf 
 +    
 +           option ntp-servers              192.168.100.1; 
 +Abschließend restarten wir unseren DHCP-Server. 
 +   service dhcpd restart
  
 ==== Start des Daemon ==== ==== Start des Daemon ====
 +=== manueller Start des Daemon ===
 +Möchten wir unseren Daemon starten, benutzen wir den folgenden Befehlsaufruf.
 +   # systemctl start ntpd
 +
 +Im syslog unseres Servers wird uns der Start unseres NTP-Daemons entsprechend vermerkt.
 +   # tail -f /var/log/messages
 +<code>Jun 26 10:53:09 vml000127 systemd: Starting Network Time Service...
 +Jun 26 10:53:09 vml000127 ntpd[28371]: ntpd 4.2.6p5@1.2349-o Sat Dec 20 02:38:09 UTC 2014 (1)
 +Jun 26 10:53:09 vml000127 ntpd[28372]: proto: precision = 0.308 usec
 +Jun 26 10:53:09 vml000127 ntpd[28372]: 0.0.0.0 c01d 0d kern kernel time sync enabled
 +Jun 26 10:53:09 vml000127 ntpd[28372]: Listen and drop on 0 v4wildcard 0.0.0.0 UDP 123
 +Jun 26 10:53:09 vml000127 ntpd[28372]: Listen and drop on 1 v6wildcard :: UDP 123
 +Jun 26 10:53:09 vml000127 ntpd[28372]: Listen normally on 2 lo 127.0.0.1 UDP 123
 +Jun 26 10:53:09 vml000127 ntpd[28372]: Listen normally on 3 eth0 10.0.0.127 UDP 123
 +Jun 26 10:53:09 vml000127 ntpd[28372]: Listen normally on 4 eth1 10.0.10.4 UDP 123
 +Jun 26 10:53:09 vml000127 ntpd[28372]: Listen normally on 5 lo ::1 UDP 123
 +Jun 26 10:53:09 vml000127 ntpd[28372]: Listen normally on 6 eth0 fe80::5054:ff:fe75:64da UDP 123
 +Jun 26 10:53:09 vml000127 ntpd[28372]: Listen normally on 7 eth1 fe80::5054:ff:fe34:a2fe UDP 123
 +Jun 26 10:53:09 vml000127 ntpd[28372]: Listening on routing socket on fd #24 for interface updates
 +Jun 26 10:53:09 vml000127 systemd: Started Network Time Service.
 +Jun 26 10:53:10 vml000127 ntpd[28372]: 0.0.0.0 c016 06 restart
 +Jun 26 10:53:10 vml000127 ntpd[28372]: 0.0.0.0 c012 02 freq_set kernel 0.000 PPM
 +Jun 26 10:53:10 vml000127 ntpd[28372]: 0.0.0.0 c011 01 freq_not_set
 +Jun 26 10:53:10 vml000127 ntpd[28372]: 0.0.0.0 c614 04 freq_mode
 +</code>
 +
 +=== automatischer Start des Daemon ===
 +Damit der Daemon **ntpd** automatisch bei jedem Systemstart startet, kann die Einrichtung eines Start-Scriptes über folgenden Befehl erreicht werden:
 +   # systemctl enable ntpd.service
 +
 +   ln -s '/usr/lib/systemd/system/ntpd.service' '/etc/systemd/system/multi-user.target.wants/ntpd.service'
 +
 +Ein Überprüfung ob der Dienst (Daemon)**ntpd**  wirklich bei jedem Systemstart automatisch mit gestartet wird, kann durch folgenden Befehl erreicht werden:
 +   # systemctl is-enabled ntpd.service
 +
 +   enabled
 +
 +
  
 ==== Tests ==== ==== Tests ====
 +=== Daemon ===
 +Als ersten Test überprüfen wir, ob der Service **ntpd** geladen und ausgeführt wird. Hierzu benutzen wir folgenden Befehl.
 +   # systemctl status ntpd.service
  
 +<code>ntpd.service - Network Time Service
 +   Loaded: loaded (/usr/lib/systemd/system/ntpd.service; enabled)
 +   Active: active (running) since Fri 2015-06-26 10:53:09 CEST; 4min 14s ago
 + Main PID: 28372 (ntpd)
 +   CGroup: /system.slice/ntpd.service
 +           └─28372 /usr/sbin/ntpd -u ntp:ntp -g
  
 +Jun 26 10:53:09 vml000127.dmz.nausch.org ntpd[28372]: Listen normally on 4 eth1 10.0.10.4 UDP 123
 +Jun 26 10:53:09 vml000127.dmz.nausch.org ntpd[28372]: Listen normally on 5 lo ::1 UDP 123
 +Jun 26 10:53:09 vml000127.dmz.nausch.org ntpd[28372]: Listen normally on 6 eth0 fe80::5054:ff:fe75:64da UDP 123
 +Jun 26 10:53:09 vml000127.dmz.nausch.org ntpd[28372]: Listen normally on 7 eth1 fe80::5054:ff:fe34:a2fe UDP 123
 +Jun 26 10:53:09 vml000127.dmz.nausch.org ntpd[28372]: Listening on routing socket on fd #24 for interface updates
 +Jun 26 10:53:09 vml000127.dmz.nausch.org systemd[1]: Started Network Time Service.
 +Jun 26 10:53:10 vml000127.dmz.nausch.org ntpd[28372]: 0.0.0.0 c016 06 restart
 +Jun 26 10:53:10 vml000127.dmz.nausch.org ntpd[28372]: 0.0.0.0 c012 02 freq_set kernel 0.000 PPM
 +Jun 26 10:53:10 vml000127.dmz.nausch.org ntpd[28372]: 0.0.0.0 c011 01 freq_not_set
 +Jun 26 10:53:10 vml000127.dmz.nausch.org ntpd[28372]: 0.0.0.0 c614 04 freq_mode
 +</code>
  
 +Mit nachfolgendem Befehlsaufruf können wir überprüfen ob und ggf. auf welchen Netzwerkinterfaces der **ntpd** den **UDP** Port **123** geöffnet hat.
 +   # netstat -paunt | grep 123
 +
 +  udp        0      0 10.0.10.4:123           0.0.0.0:                          28372/ntpd
 +  udp        0      0 10.0.0.127:123          0.0.0.0:                          28372/ntpd
 +  udp        0      0 127.0.0.1:123           0.0.0.0:                          28372/ntpd
 +  udp        0      0 0.0.0.0:123             0.0.0.0:                          28372/ntpd
 +  udp6            0 fe80::5054:ff:fe34::123 :::*                                28372/ntpd
 +  udp6            0 fe80::5054:ff:fe75::123 :::*                                28372/ntpd
 +  udp6            0 ::1:123                 :::                               28372/ntpd
 +  udp6            0 :::123                  :::*                                28372/ntpd
 +
 +
 +Mit dem Befehl **watch ntpq -np** können wir uns abschließend den Status unseres Timeservers anzeigen lassen (Die Synchronisation unter Umständen bis zu 30 Minuten dauern - diese Zeit muss ggf. gewartet werden)
 +<code>watch ntpq -np</code>
 +zeigt uns an:
 +<code>Every 2,0s: ntpq -np                                                                                         Fri Jun 26 11:21:42 2015
 +
 +     remote           refid      st t when poll reach   delay   offset  jitter
 +==============================================================================
 ++81.169.180.23   78.46.78.10      3 u    2   64  377   28.552    0.764   0.540
 ++88.198.23.16    192.53.103.104   2 u   64   64  377   12.074    0.461   0.589
 ++88.198.8.101    192.53.103.104   2 u   62   64  377   42.315    0.422   0.666
 +*193.175.73.151  DCF77            1 u   62   64  377   12.315    0.552   0.852
 +</code>
 +
 +An Hand des **%%*%%** am Zeilenanfang ist zu erkennen, dass Synchronisation erfolgt. Die Spalten haben folgende Bedeutung: 
 +  * **remote** \\ Mit welchen Servern ist mein Zeitserver verbunden?
 +  * **refid** \\ Von welcher Zeitquelle stammt die Zeit? 
 +  * **st** \\ Anzeige des Stratum-Wertes von der Quelle an Hand der zuletzt empfangenen Datenpakete.
 +    * **1** wird angezeigt, wenn der Server über eine lokal angeschlossene Referenzuhr verfügt.
 +    * **2** wird angezeigt, wenn der Daemon sich mit einer Quelle synchronisiert hat, die den Wert Stratum 1 inne hat.
 +    * **n** Jede weitere Erhöhung des Stratum-Wertes bedeutet, dass ein weiterer Host zwischen dem chrony-Daemon und dem Zeitnormal mit dem Stratum Wert 1 steht.
 +  * **t** \\ Welchen Typs ist die Zeitquelle?
 +    * **u** = unicast,
 +    * **m** = multicast,
 +    * **l** = lokal,
 +    * **-** = unbekannt
 +  * **when** \\ Vor wieviel Sekunden wurde beim Server zuletzt angefragt ?
 +  * **poll** \\ Wie oft wird mit diesem Server syncronisiert? ( Intervall in Sekunden )
 +  * **reach** \\ Registerwert (Oktalzahl) der empfangenen Datenpakete. Das Register hat hat 8 bit und wird jeweils beim Empfang bzw. etwaigen Verlusten von Datenpaketen angepasst. Ein Wert von 377 zeigt z.B. an, das die letzten acht empfangenen Datenpakete gültig waren und somit alles bestens ist. 
 +  * **delay** \\ Verzögerung durch Laufzeitunterschiede zwischen dem externen Zeitserver und dem lokalen Server.
 +  * **offset** \\ Repräsentiert die geschätze Differenz der lokalen Uhr zur externen Quelle.
 +  * **jitter** \\ Abweichung in Millisekunden
  
 ====== Links ====== ====== Links ======
Zeile 5450: Zeile 6041:
   * Zurück zur **[[http://dokuwiki.nausch.org/doku.php/|Startseite]]**   * Zurück zur **[[http://dokuwiki.nausch.org/doku.php/|Startseite]]**
  
-~~DISCUSSION~~+
  
  
  
  • centos/ntp_c7.1435172183.txt.gz
  • Zuletzt geändert: 24.06.2015 18:56.
  • von django