Benutzer-Werkzeuge

Webseiten-Werkzeuge


tachtler:ntp_centos_7

ntp CentOS 7

Das NTP (Network Time Protocol) ist ein Protokoll, entwickelt um die einzelnen Uhren jedes an ein Netzwerk angeschlossenen Computers, synchron zu halten. Alle in diesem Netzwerk befindlichen Computer, haben dann eine einheitliche Zeit, wenn diese an der Verteilung der Zeitinformationen eines sogenannten „Zeitservers“, teilnehmen.

Es kann unter Umständen sehr wichtig sein, das alle Computer in einem Netzwerk die selbe Zeit zur Verfügung haben, da sonst z.B. der Austausch von DNS Informationen, bei einer zu hoher Zeitabweichung der einzelnen am DNS beteiligten Computer, nicht durchgeführt werden kann.

:!: HINWEIS - Nachfolgend soll die Installation eines „Zeitservers“ für eine privates Netzwerk beschrieben werden!

:!: HINWEIS - IPv6 soll NICHT genutzt werden!!!

Ab hier werden zur Ausführung nachfolgender Befehle root-Rechte benötigt. Um der Benutzer root zu werden, melden Sie sich bitte als root-Benutzer am System an, oder wechseln mit nachfolgendem Befehl zum Benutzer root:

$ su -
Password:

Installation

Zur Installation eines „Zeitservers“ werden nachfolgende Pakete benötigt:

  • ntp - ist im base-Repository von CentOS enthalten
  • ntpdate - ist ebenfalls im base-Repository von CentOS enthalten und würde als Abhängigkeit zum Paket ntp sowieso installiert werden.

Es sind noch weitere Pakete zu ntp verfügbar, welche nicht zum Betrieb eines „Zeitservers“ zwingend erforderlich sind.

Mit nachfolgendem Befehl, werden die benötigten Pakete installiert:

# yum install ntp
Loaded plugins: changelog, priorities
39 packages excluded due to repository priority protections
Resolving Dependencies
--> Running transaction check
---> Package ntp.x86_64 0:4.2.6p5-18.el7.centos will be installed
--> Processing Dependency: ntpdate = 4.2.6p5-18.el7.centos for package: ntp-4.2.6p5-18.el7.centos.x86_64
--> Processing Dependency: libopts.so.25()(64bit) for package: ntp-4.2.6p5-18.el7.centos.x86_64
--> Running transaction check
---> Package autogen-libopts.x86_64 0:5.18-5.el7 will be installed
---> Package ntpdate.x86_64 0:4.2.6p5-18.el7.centos will be installed
--> Finished Dependency Resolution

Changes in packages about to be updated:


Dependencies Resolved

================================================================================
 Package              Arch        Version                       Repository
                                                                           Size
================================================================================
Installing:
 ntp                  x86_64      4.2.6p5-18.el7.centos         base      539 k
Installing for dependencies:
 autogen-libopts      x86_64      5.18-5.el7                    base       66 k
 ntpdate              x86_64      4.2.6p5-18.el7.centos         base       82 k

Transaction Summary
================================================================================
Install  1 Package (+2 Dependent packages)

Total download size: 687 k
Installed size: 1.6 M
Is this ok [y/d/N]: y
Downloading packages:
(1/3): autogen-libopts-5.18-5.el7.x86_64.rpm               |  66 kB   00:05
(2/3): ntpdate-4.2.6p5-18.el7.centos.x86_64.rpm            |  82 kB   00:00
(3/3): ntp-4.2.6p5-18.el7.centos.x86_64.rpm                | 539 kB   00:05
--------------------------------------------------------------------------------
Total                                              130 kB/s | 687 kB  00:05
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : autogen-libopts-5.18-5.el7.x86_64                            1/3
  Installing : ntpdate-4.2.6p5-18.el7.centos.x86_64                         2/3
  Installing : ntp-4.2.6p5-18.el7.centos.x86_64                             3/3
  Verifying  : ntpdate-4.2.6p5-18.el7.centos.x86_64                         1/3
  Verifying  : ntp-4.2.6p5-18.el7.centos.x86_64                             2/3
  Verifying  : autogen-libopts-5.18-5.el7.x86_64                            3/3

Installed:
  ntp.x86_64 0:4.2.6p5-18.el7.centos

Dependency Installed:
  autogen-libopts.x86_64 0:5.18-5.el7   ntpdate.x86_64 0:4.2.6p5-18.el7.centos

Complete!

Mit nachfolgenden Befehlen kann überprüft werden, welche Inhalte mit den Paketen installiert wurden.

Paket ntp:

# rpm -qil ntp
Name        : ntp
Version     : 4.2.6p5
Release     : 18.el7.centos
Architecture: x86_64
Install Date: Sun 05 Oct 2014 02:19:43 PM CEST
Group       : System Environment/Daemons
Size        : 1425660
License     : (MIT and BSD and BSD with advertising) and GPLv2
Signature   : RSA/SHA256, Fri 04 Jul 2014 05:58:50 AM CEST, Key ID 24c6a8a7f4a80eb5
Source RPM  : ntp-4.2.6p5-18.el7.centos.src.rpm
Build Date  : Wed 18 Jun 2014 11:20:44 PM CEST
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

Paket ntpdate:

# rpm -qil ntpdate
Name        : ntpdate
Version     : 4.2.6p5
Release     : 18.el7.centos
Architecture: x86_64
Install Date: Sun 05 Oct 2014 02:19:43 PM CEST
Group       : Applications/System
Size        : 123894
License     : (MIT and BSD and BSD with advertising) and GPLv2
Signature   : RSA/SHA256, Fri 04 Jul 2014 05:58:53 AM CEST, Key ID 24c6a8a7f4a80eb5
Source RPM  : ntp-4.2.6p5-18.el7.centos.src.rpm
Build Date  : Wed 18 Jun 2014 11:20:44 PM CEST
Build Host  : worker1.bsys.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://www.ntp.org
Summary     : Utility to set the date and time via NTP
Description :
ntpdate is a program for retrieving the date and time from
NTP servers.
/etc/ntp
/etc/ntp/keys
/etc/ntp/step-tickers
/etc/sysconfig/ntpdate
/usr/lib/systemd/system/ntpdate.service
/usr/libexec/ntpdate-wrapper
/usr/sbin/ntpdate
/usr/share/doc/ntpdate-4.2.6p5
/usr/share/doc/ntpdate-4.2.6p5/COPYRIGHT
/usr/share/man/man8/ntpdate.8.gz

Konfiguration

Um einen „Zeitserver“, welcher als Dienst/Deamon als Hintergrundprozess läuft, auch nach einem Neustart des Servers zur Verfügung zu haben, soll der Dienst/Daemon mit dem Server mit gestartet werden, was mit nachfolgendem Befehl realisiert werden kann:

# systemctl enable ntpd.service
ln -s '/usr/lib/systemd/system/ntpd.service' '/etc/systemd/system/multi-user.target.wants/ntpd.service'

Eine Überprüfung, ob beim Neustart des Server der ntpd-Dienst/Deamon wirklich mit gestartet wird, kann mit nachfolgendem Befehl erfolgen und sollte eine Anzeige, wie ebenfalls nachfolgend dargestellt ausgeben:

# systemctl list-unit-files --type=service | grep ntpd.service
ntpd.service                                enabled

/etc/ntp.conf

In der Konfigurationsdatei

  • /etc/ntp.conf

wird der ntpd-Dienst/Daemon konfiguriert.

Änderungen und persönliche Anpassungen sind mit einem voranstehenden Kommentar, welche wie nachfolgend dargestellt aussieht

# Tachtler

gekennzeichnet.

Hier die komplette Konfigurationsdatei /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
# Tachtler
# default: restrict ::1
# restrict ::1
 
# Hosts on local network are less restricted.
# Tachtler
# default: #restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap
restrict 192.168.0.0 mask 255.255.255.0 nomodify notrap nopeer
 
# Use public servers from the pool.ntp.org project.
# Please consider joining the pool (http://www.pool.ntp.org/join.html).
# Tachtler
# default: server 0.centos.pool.ntp.org iburst
# default: server 1.centos.pool.ntp.org iburst
# default: server 2.centos.pool.ntp.org iburst
# default: server 3.centos.pool.ntp.org iburst
server time.idmz.tachtler.net
server 192.168.0.20
 
#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
 
# Tachtler - new -
interface ignore wildcard
interface ignore all
interface listen 192.168.0.10
 
# Tachtler - new -
logconfig=allsync +allclock

/etc/sysconfig/ntpd

Nachfolgende Konfigurationsdatei /etc/sysconfig/ntpd enthält die Einstellungen mit denen der Daemin/Dienst ntpd gestartet wird und sieht standardmäßig wie nachfolgende geszeit aus:

# Command line options for ntpd
OPTIONS="-g"

Folgende Ergänzugen sollten hier ggf. durchgeführt werden:

  • Deaktivieren der Nutzung von IPv6, sondern nur - IPv4.
# Command line options for ntpd
# Tachtler
# default: OPTIONS="-g"
OPTIONS="-4 -g"

:!: WICHTIG - Diese Änderung ist NICHT ausreichend um IPv6 generell zu deaktivieren!!!

Nachfolgende Beschreibung zur Deaktivierung von IPv6 unter CentOS muss durchgeführt werden:

iptables Regel

Damit der „Zeitserver“ auch erreichbar ist und nicht die Weitergab der Zeitinformationen via NTP vom Paketfilter iptables blockiert wird, muss nachfolgende Regel zum iptables-Regelwerk hinzugefügt werden.

Um die aktuellen iptables-Regeln erweitern zu können, sollten diese erst einmal aufgelistet werden, was mit nachfolgendem Befehl durchgeführt werden kann:

# iptables -L -nv --line-numbers
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1      141 10524 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
2        0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
3        0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
4        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 
5        1    32 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT 79 packets, 9140 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Nachfolgender Befehl, fügt folgende iptables-Regel dem iptables-Regelwerk nach der Position 4 hinzu, ohne das der Paketfilter angehalten werden muss:

  • -A INPUT -p udp --dport 123 -j ACCEPT

und hier der Befehl:

# iptables -I INPUT 5 -p udp --dport 123 -j ACCEPT

Ein erneute Abfrage des iptables-Regelwerts, sollte dann nachfolgend dargestellte Ausgabe ergeben, was mit folgendem Befehl durchgeführt werden kann:

# iptables -L -nv --line-numbers
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1      435 32812 ACCEPT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           state RELATED,ESTABLISHED 
2        0     0 ACCEPT     icmp --  *      *       0.0.0.0/0            0.0.0.0/0           
3        0     0 ACCEPT     all  --  lo     *       0.0.0.0/0            0.0.0.0/0           
4        0     0 ACCEPT     tcp  --  *      *       0.0.0.0/0            0.0.0.0/0           state NEW tcp dpt:22 
5        0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           udp dpt:123 
6        4   128 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
num   pkts bytes target     prot opt in     out     source               destination         
1        0     0 REJECT     all  --  *      *       0.0.0.0/0            0.0.0.0/0           reject-with icmp-host-prohibited 

Chain OUTPUT (policy ACCEPT 12 packets, 1320 bytes)
num   pkts bytes target     prot opt in     out     source               destination

Die neue Zeile ist an Position 5 zu sehen, hier nachfolgend zur Verdeutlichung noch einmal dargestellt (nur relevanter Ausschnitt):

...
5        0     0 ACCEPT     udp  --  *      *       0.0.0.0/0            0.0.0.0/0           udp dpt:123
...

Um diese iptables-Regel dauerhaft, auch nach einem Neustart des Server, weiterhin im iptables-Regelwerk zu speichern, muss nachfolgend dargestellter Befehl abschließend noch ausgeführt werden:

# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[  OK  ]

Zeitserver starten

Um einen „Zeitserver“ zu starten muss der ntpd-Dienst/Deamon mit nachfolgendem Befehl gestartete werden:

# systemctl start ntpd.service

Ob der „Zeitserver“, sprich der ntpd-Dienst/Deamon auch tatsächlich als Hintergrundprozess läuft, kann mit nachfolgendem Befehl überprüft werden (Es sollte eine Ausgabe wie nachfolgend dargestellt, erfolgen - es kommt auf die zweite Zeile an!):

# ps auxwwwf | grep ntpd
root     15166  0.0  0.0 112640   924 pts/0    S+   14:46   0:00                      \_ grep --color=auto ntpd
ntp      15164  0.0  0.1  25136  1732 ?        Ss   14:46   0:00 /usr/sbin/ntpd -u ntp:ntp -4 -g

Zeitserver Status

Um zu überprüfen in wie weit der offset bzw. die Abweichung zur aktuell gültigen Zeit ist, kann nachfolgende Abfrage genutzt werden:

# ntpq -np4
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
*192.168.0.20    78.47.148.174    3 u   46   64    1    2.081  -39.134   0.000

bzw. nachfolgendem Befehl:

# systemctl status ntpd.service
ntpd.service - Network Time Service
   Loaded: loaded (/usr/lib/systemd/system/ntpd.service; enabled)
   Active: active (running) since Sun 2014-10-05 14:49:07 CEST; 1min 36s ago
  Process: 15176 ExecStart=/usr/sbin/ntpd -u ntp:ntp $OPTIONS (code=exited, status=0/SUCCESS)
 Main PID: 15177 (ntpd)
   CGroup: /system.slice/ntpd.service
             15177 /usr/sbin/ntpd -u ntp:ntp -4 -g

Oct 05 14:49:07 rechner10.idmz.tachtler.net systemd[1]: Started Network Time Service.
Oct 05 14:49:07 rechner10.idmz.tachtler.net ntpd[15177]: proto: precision = 0.347 usec
Oct 05 14:49:07 rechner10.idmz.tachtler.net ntpd[15177]: 0.0.0.0 c01d 0d kern kernel time sync enabled
Oct 05 14:49:07 rechner10.idmz.tachtler.net ntpd[15177]: ntp_io: estimated max descriptors: 1024, initial socket boundary: 16
Oct 05 14:49:07 rechner10.idmz.tachtler.net ntpd[15177]: Listen and drop on 0 v4wildcard 0.0.0.0 UDP 123
Oct 05 14:49:07 rechner10.idmz.tachtler.net ntpd[15177]: Listen normally on 1 lo 127.0.0.1 UDP 123
Oct 05 14:49:07 rechner10.idmz.tachtler.net ntpd[15177]: Listen normally on 2 eth0 192.168.0.10 UDP 123
Oct 05 14:49:07 rechner10.idmz.tachtler.net ntpd[15177]: Listening on routing socket on fd #21 for interface updates

Zeitserver optimieren

Falls der offset, wie in obigen Beispiel sehr hoch ist, würde eine Synchronisierung rein durch den ntpd-Dienst/Deamon relativ lange dauern, die kann durch nachfolgende Befehle kurzum bereinigt werden, damit der offset relativ gering ist, zum Teil auch je nach Bandbreite der zur Verfügung stehenden Internet Anbindung.

Zuerst muss der ntpd-Dienst/Deamon mit nachfolgendem Befehl gestoppt werden:

# systemctl stop ntpd.service

Anschließend wird die Zeit mit einem der unter dem Befehl ntpq -4np aufgelisteten Zeitserver synchronisiert, was mit nachfolgendem Befehl realsiert werden kann:

# ntpdate 131.188.3.220
 5 Oct 14:48:07 ntpdate[2517]: adjust time server 131.188.3.220 offset 0.145769 sec

Anschließend wird der ntpd-Dienst/Deamon mit nachfolgendem Befehl wieder gestartet:

# service ntpd start
Starting ntpd:                                             [  OK  ]

:!: HINWEIS - Warten Sie ca. 10 Minuten, bevor nachfolgende Abfrage durchgeführt wird !!!

Abschließend wir der Befehl zu überprüfen, in wie weit der offset bzw. die Abweichung zur aktuell gültigen Zeit ist, noch einmal ausgeführt:

# ntpq -np4
     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
+46.4.54.78      129.69.1.153     2 u   19   64  377   36.111   28.293  24.654
*131.234.137.24  .DCF.            1 u   12   64  377   43.241   24.100  32.154
+141.40.103.103  129.69.1.153     2 u   11   64  377   46.183   25.988  30.931
+78.47.136.228   141.24.7.240     2 u   10   64  377   32.121   25.555  30.914
+95.89.157.176   192.168.100.122  2 u   13   64  377   61.341   28.482  35.455
+213.95.21.43    131.76.36.210    2 u    8   64  377   31.485   26.107  27.892
+213.9.73.106    134.34.3.18      2 u    7   64  377   39.795   26.240  25.152

Zeitserver und NetworkManager

Falls der NetworkManager auf dem Server mit dem „Zeitserver“ zum Einsatz kommt, kann es mit der Standard-Implementierung des NetworkManagers zu Problemen kommen. In diesem Falls ist in der Konfigurationsdatei:

  • /etc/sysconfig/network

nachfolgender Eintrag zu ergänzen (nur relevanter Ausschnitt):

...
NETWORKWAIT=1
Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
tachtler/ntp_centos_7.txt · Zuletzt geändert: 2014/10/16 10:47 von klaus