Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung |
linux:ntp [22.02.2024 12:23. ] – [Checking chrony Sources] django | linux:ntp [03.07.2024 19:56. ] (aktuell) – [Rolle] django |
---|
| {{htmlmetatags>metatag-robots=() |
| metatag-keywords=(Ansible,Arch Linux,ntp, chrony, timeserver,stratum,chronyc,chronyd) |
| metatag-description=(NTP-Zeitserver mit chrony unter Arch Linux einrichten und nutzen) |
| }} |
====== NTP-Zeitserver mit chrony unter Linux einrichten und nutzen ====== | ====== NTP-Zeitserver mit chrony unter Linux einrichten und nutzen ====== |
{{:linux:hourglass.png?nolink&100 |Bild: stilisierte Sanduhr}} Basis für eine zuverlässige Kommunikation zwischen netzwerkbasierten Diensten und Servern ist unter anderem eine exakte Zeitmessung. Nur so kann gewährleistet werden das Systemkomponenten wie z.B. systemd-Timer und Cronjobs zur richtigen Zeit gestartet werden und laufen. Einzelne Systeme können mit Hilfe des **N**etwork **T**ime **P**rotocol kurz **NTP** ihre Systemzeiten mit einem zentralen Zeitserver oder einem Pool von Servern zu synchronisieren. NTP wurde 1985 von David L. Mills entwickelt und wurde als [[https://tools.ietf.org/html/rfc958|RFC 958]] definiert um eine zuverlässige Zeitgabe über Netzwerke mit variabler Paketlaufzeit über das verbindungslose Protokolls **UDP** zu ermöglichen und bekam von der Internet Assigned Numbers Authority den UDP-Ports **123** zugewiesen. Das **RFC958** wurde in den letzten Jahren mehrfach überarbeitet und ergänzt und wurde letztmalig mit **[[https://www.rfc-editor.org/rfc/rfc9109|RFC 9109 - Network Time Protocol Version 4: Port Randomization]]** ergänzt. | {{:linux:hourglass.png?nolink&100 |Bild: stilisierte Sanduhr}} Basis für eine zuverlässige Kommunikation zwischen netzwerkbasierten Diensten und Servern ist unter anderem eine exakte Zeitmessung. Nur so kann gewährleistet werden das Systemkomponenten wie z.B. systemd-Timer und Cronjobs zur richtigen Zeit gestartet werden und laufen. Einzelne Systeme können mit Hilfe des **N**etwork **T**ime **P**rotocol kurz **NTP** ihre Systemzeiten mit einem zentralen Zeitserver oder einem Pool von Servern zu synchronisieren. NTP wurde 1985 von David L. Mills entwickelt und wurde als [[https://tools.ietf.org/html/rfc958|RFC 958]] definiert um eine zuverlässige Zeitgabe über Netzwerke mit variabler Paketlaufzeit über das verbindungslose Protokolls **UDP** zu ermöglichen und bekam von der Internet Assigned Numbers Authority den UDP-Ports **123** zugewiesen. Das **RFC958** wurde in den letzten Jahren mehrfach überarbeitet und ergänzt und wurde letztmalig mit **[[https://www.rfc-editor.org/rfc/rfc9109|RFC 9109 - Network Time Protocol Version 4: Port Randomization]]** ergänzt. |
==== Chrony unter Arch Linux installieren ==== | ==== Chrony unter Arch Linux installieren ==== |
Bei der Installation des chrony-Paketes verwenden wir unter **[[https://archlinux.org/|Arch Linux]]** den Paketmanager **''pacman''**. | Bei der Installation des chrony-Paketes verwenden wir unter **[[https://archlinux.org/|Arch Linux]]** den Paketmanager **''pacman''**. |
- Als User: <code> $ sudo pacman -S chrony -y </code> | - Als User: <code> $ sudo pacman -S chrony</code> |
- Als Nutzer mit Root-Rechten entsprechend: <code> $ sudo pacman -S chrony -y </code> | - Als Nutzer mit Root-Rechten entsprechend: <code> # pacman -S chrony</code> |
| |
===== Paketinhalt ===== | ===== Paketinhalt ===== |
++++ | ++++ |
===== Dokumentation ===== | ===== Dokumentation ===== |
Eine ausführliche Onlinedokumentation des Chrony Projekts findet sich auf der entsprechnden Projektseite → https://chrony-project.org/documentation.html Bei der Installation des aktuellen chrony-Paketes z.B. unter Arch Linux finden sich im Verzeichnis **''/usr/share/doc/chrony/''** auch entsprechende FAQs, READMEs, NEWS und Beispiele. | Eine ausführliche Onlinedokumentation des Chrony Projekts findet sich auf der entsprechenden Projektseite → https://chrony-project.org/documentation.html Bei der Installation des aktuellen chrony-Paketes z.B. unter Arch Linux finden sich im Verzeichnis **''/usr/share/doc/chrony/''** auch entsprechende FAQs, READMEs, NEWS und Beispiele. |
# tree /usr/share/doc/chrony/ | # tree /usr/share/doc/chrony/ |
<code>/usr/share/doc/chrony// | <code>/usr/share/doc/chrony// |
<code>Name/IP Address NP NR Span Frequency Freq Skew Offset Std Dev | <code>Name/IP Address NP NR Span Frequency Freq Skew Offset Std Dev |
============================================================================== | ============================================================================== |
defiant.tlercher.de 6 5 86m +0.279 0.359 +87us 188us</code> | time.cnetm.de 16 11 782 -0.042 1.299 -35us 292us |
| frank.askja.de 16 9 783 +0.281 0.379 +169us 99us |
| ntp1.noris.net 6 4 452 -0.529 0.977 -304us 43us |
| sv1.ggsrv.de 14 8 784 +0.211 0.264 +434us 70us</code> |
| |
Mit der Option **''-v''** erhalten wir eine Kurzbeschreibung der angezeigten Werte. | Mit der Option **''-v''** erhalten wir eine Kurzbeschreibung der angezeigten Werte. |
Name/IP Address NP NR Span Frequency Freq Skew Offset Std Dev | Name/IP Address NP NR Span Frequency Freq Skew Offset Std Dev |
============================================================================== | ============================================================================== |
defiant.tlercher.de 6 5 86m +0.279 0.359 +95us 188us | time.cnetm.de 16 11 782 -0.042 1.299 -37us 292us |
| frank.askja.de 16 9 783 +0.281 0.379 +178us 99us |
| ntp1.noris.net 6 4 452 -0.529 0.977 -320us 43us |
| sv1.ggsrv.de 14 8 784 +0.211 0.264 +440us 70us |
</code> | </code> |
| |
# chronyc tracking | # chronyc tracking |
| |
<code>Reference ID : C3C98961 (defiant.tlercher.de) | <code>Reference ID : 3E800112 (ntp1.noris.net) |
Stratum : 3 | Stratum : 3 |
Ref time (UTC) : Wed Feb 21 17:44:33 2024 | Ref time (UTC) : Thu Feb 22 12:24:14 2024 |
System time : 0.000000083 seconds slow of NTP time | System time : 0.000030264 seconds slow of NTP time |
Last offset : +0.000929279 seconds | Last offset : +0.000049906 seconds |
RMS offset : 0.000310979 seconds | RMS offset : 0.000355495 seconds |
Frequency : 23.866 ppm fast | Frequency : 23.667 ppm fast |
Residual freq : +0.279 ppm | Residual freq : +0.017 ppm |
Skew : 0.179 ppm | Skew : 0.322 ppm |
Root delay : 0.019519085 seconds | Root delay : 0.016084936 seconds |
Root dispersion : 0.001197367 seconds | Root dispersion : 0.002525240 seconds |
Update interval : 1025.2 seconds | Update interval : 64.5 seconds |
Leap status : Normal</code> | Leap status : Normal</code> |
| |
| |
===== Orchestrierung - Installation und Konfiguration des chronyd mit Hilfe von Ansible ===== | ===== Orchestrierung - Installation und Konfiguration des chronyd mit Hilfe von Ansible ===== |
Natürlich wird man im Jahr 2024 nicht mehr ernsthaft, manuell Server aufsetzen und betreiben wollen. Vielmehr wird amn auf ein Orchestrierungswerkzeug wie z.B. **[[linux:ansible:start|Ansible]]** zurückgreifen. | Natürlich wird man im Jahr 2024 nicht mehr ernsthaft, manuell Server aufsetzen und betreiben wollen. Vielmehr wird man auf ein Orchestrierungswerkzeug wie z.B. **[[linux:ansible:start|Ansible]]** zurückgreifen. |
| |
Wir werden uns nun nachfolgend sowohl die Client- wie auch die Server-Installation und -konfiguration genauer betrachten. | Wir werden uns nun nachfolgend sowohl die Client- wie auch die Server-Installation und -konfiguration genauer betrachten. |
| |
==== Installation und Client-Konfiguration ==== | ==== Installation und Client-Konfiguration ==== |
Setzen wir einen neue virtuellen Host unter Arch Linux neu auf, oder wollen wir bei einem bestehenden Host die Konfiguration aktualisieren, verwenden wir wie zuvor schon angeschnitten **[[https://www.ansible.com/|Ansible]]** als Orchstrierungswerkzeug. So ist sichergestellt dass zum einen all unsere Hosts entsprechend gleich aufgebaut, konfiguriert und betrieben werden. | Setzen wir einen neue virtuellen Host unter Arch Linux neu auf, oder wollen wir bei einem bestehenden Host die Konfiguration aktualisieren, verwenden wir wie zuvor schon angeschnitten **[[https://www.ansible.com/|Ansible]]** als Orchestrierungswerkzeug. So ist sichergestellt dass zum einen all unsere Hosts entsprechend gleich aufgebaut, konfiguriert und betrieben werden. |
| |
=== Rolle === | === Rolle === |
└── vars</code> | └── vars</code> |
| |
Wie wir sehen ist die Rolle durchaus überschaubar, im Task **''main.yaml''** verweisen wir lediglich auf den eigentlichen Task **''chrony-.yml''**. | Wie wir sehen ist die Rolle durchaus überschaubar, im Task **''main.yaml''** verweisen wir lediglich auf den eigentlichen Task **''chrony.yml''**. |
$ vim ~/ansible/roles/chrony_client/tasks/main.yml | $ vim ~/ansible/roles/chrony_client/tasks/main.yml |
<file yaml roles/chrony_client/tasks/main.yml>--- # Playbook/Rolle zur Konfiguration des NTP-Clients | <file yaml roles/chrony_client/tasks/main.yml>--- # Playbook/Rolle zur Konfiguration des NTP-Clients |