Ich besitze eine Hosting-Firma und wir machen genau das. So erreichen wir das.
Zunächst benötigen Sie eine NTP-Masterquelle. So wird einer Ihrer Linux-Server zum Master. Ich würde einen DNS A-Eintrag namens time.example.com erstellen (vorausgesetzt, example.com ist die Domain). Auf diese Weise müssen Sie die anderen 19 Server nicht aktualisieren, wenn Ihr Master umzieht.
Auf dem Master-Server benötigen Sie eine entsprechend konfigurierte ntp.conf-Datei.
So sieht eine unserer Master-Dateien /etc/ntp.conf aus. Beachten Sie, dass dies ein Rechenzentrum mit einem privaten Adressraum (RFC1918) ist, der 172.17.xx verwendet, sodass Sie entsprechende Anpassungen vornehmen müssen. Wenn Sie mehr als einen Master möchten, erstellen Sie mehr als einen DNS A-Eintrag mit jeweils unterschiedlicher IP, um auf Wunsch eine gewisse Fehlertoleranz zu erzielen.
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
server 0.north-america.pool.ntp.org
server 1.north-america.pool.ntp.org
server 2.north-america.pool.ntp.org
server 3.north-america.pool.ntp.org
# Logging & Stats
statistics loopstats
statsdir /var/log/ntp/
filegen peerstats file peers type day link enable
filegen loopstats file loops type day link enable
# Drift file. Put this in a directory which the daemon can write to.
# No symbolic links allowed, either, since the daemon updates the file
# by creating a temporary in the same directory and then rename()'ing
# it to the file.
#
driftfile /etc/ntp/drift
broadcastdelay 0.008
restrict default noquery nomodify
restrict 0.north-america.pool.ntp.org mask 255.255.255.255 nomodify notrap noquery
restrict 1.north-america.pool.ntp.org mask 255.255.255.255 nomodify notrap noquery
restrict 2.north-america.pool.ntp.org mask 255.255.255.255 nomodify notrap noquery
restrict 3.north-america.pool.ntp.org mask 255.255.255.255 nomodify notrap noquery
# Allow LAN to query us
restrict 172.17.0.0 mask 255.255.0.0 nomodify notrap
# Trust ourselves. :-)
restrict 127.0.0.1
Jetzt haben wir auf jedem Client eine /etc/ntp.conf-Datei, die folgendermaßen aussieht:
server 127.127.1.0 # local clock
fudge 127.127.1.0 stratum 10
server time.example.com
# Drift file. Put this in a directory which the daemon can write to.
# No symbolic links allowed, either, since the daemon updates the file
# by creating a temporary in the same directory and then rename()'ing
# it to the file.
driftfile /etc/ntp/drift
multicastclient # listen on default 224.0.1.1
broadcastdelay 0.008
# Don't serve time or stats to anyone else by default (more secure)
restrict default noquery nomodify
restrict time.example.com mask 255.255.255.255 nomodify notrap noquery
# Allow LAN to query us
restrict 172.17.0.0 mask 255.255.0.0 nomodify notrap
# Trust ourselves. :-)
restrict 127.0.0.1
Verwenden Sie den Befehl ntpq, um die Server anzuzeigen, mit denen Sie synchronisiert sind. Sie erhielten eine Liste der konfigurierten Zeitserver sowie die Verzögerung, den Versatz und den Jitter, die Ihr Server mit ihnen hat. Für eine korrekte Synchronisation sollten die Verzögerungs- und Versatzwerte ungleich Null sein und der Jitterwert sollte unter 100 liegen.
Auch auf unseren Client-Knoten haben wir ein RC-Skript (/etc/rc.d/rc.local), das die Uhr synchronisiert, bevor der NTPD-Daemon gestartet wird. Hier sind die wichtigen Teile ... Sie sind auftragsabhängig.
Synchronisieren Sie die Uhr des Clients mit der Hauptzeitquelle / usr / sbin / ntpdate -b time.example.com
Starten Sie den NTPD-Daemon, um während des Startvorgangs umfangreiche Zeitanpassungen vorzunehmen. / usr / sbin / ntpd -g -x
Abhängig von Ihrer Einrichtung müssen Sie eine Firewall-Regel festlegen, damit Ihr time.example.com-Master über den UDP-Port auf das öffentliche Internet zugreifen kann. Hier ist eine typische und entsprechend platzierte IPTables-Regel
iptables -t nat -A POSTROUTING -o $ PUB_IF -p udp --dport 123 -j MASQUERADE
Wobei PUB_IF die öffentliche Schnittstelle ist (eth0, eth1, was auch immer)