NTP und NetworkManager

Aus Linupedia
Wechseln zu: Navigation, Suche

Es gibt immer wieder Schwierigkeiten, wenn man NTP in Verbindung mit dem NetworkManager einsetzt. Das große Problem an der Sache ist, dass der NetworkManager zu lange braucht um eine Internetverbindung zu erstellen und NTP dadurch ein Timeout bekommt.

Hier eine kleine Anleitung, wie man den NTP Daemon an den NetworkManager (mit Hilfe des Dispatchers) koppelt. Normal müssten alle Scripte bei der Standardinstallation (openSUSE 11.0) schon richtig verlinkt sein und man muss nur folgende kleine Änderungen machen:

  1. Den Autostart von NTP deaktivieren. (Am besten im Yast)
  2. Die Datei /etc/sysconfig/network/scripts/50-ntp öffnen und die letzten Zeilen wie gefolgt ändern:
# Main case switch case "$0" in
       *if-up.d*)
       if rcntp status 2>&1; then
               log_msg=$( rcntp readd 2>&1 )
               log_dbg "${log_msg}"
       else
#               if chkconfig -c ntp 2>&1; then
#                       log_msg=$( rcntp ntptimeset 2>&1 )
                       log_msg=$( rcntp restart 2>&1 )
                       log_dbg "${log_msg}"
#               fi
       fi
       ;;
       *if-down.d*)
               # nothing to do for the NTP daemon if we go offline
       ;;
       *)
               log_err "Don't know what to do.  This script used to be called from dir if-{up,down}.d/."
       ;;
esac

Zur Erklärung: if chkconfig -c ntp 2>&1; then überprüft, ob ntp im Autostart ist, was wir aber deaktiviert haben, da wir den Daemon nur mit dem NetworkManager starten wollen. log_msg=$( rcntp ntptimeset 2>&1 ) holt die aktuelle Zeit vom Server und passt die lokale Zeit an, startet aber den NTP Daemon nicht. Wem das reicht, der kann die Zeile auch stehen lassen, ansonsten durch diese ersetzten: log_msg=$( rcntp restart 2>&1 ).

--Rettich 20:24, 8. Aug. 2008 (UTC)

Update: Ich hab festgestellt, dass es unter openSuse 11.1 inzwischen sehr viel leichter geht. Anscheinend hat ntp nicht mehr das Problem, dass es ewig versucht eine Verbindung aufzubauen, obwohl kein Netzwerk da ist. Es wird einfach nur eine Verbindung zum lokalen Rechner aufgebaut.

Mit dem Script (mit Ausführungsrechten abgespeichert unter /etc/NetworkManager/dispatcher.d/) wird ntp einfach jedes Mal neu gestartet, falls der NetworkManager etwas an der Verbindung ändert.

#!/bin/bash
#
# ntp - Starts and stops NTP-Client
#
# Author: Sebastian Rettenberger

case "$2" in
        up)
                /etc/init.d/ntp restart
                ;;
        down)
                /etc/init.d/ntp restart
                ;;
        *)
                ;;
esac

exit 0

--Rettich 20:37, 12. Jan. 2009 (UTC)