Monter un serveur NTP, configurer les clients Windows et Linux

Bon, un p’tit billet aide-mémoire sur la configuration d’un serveur NTP Linux et des postes Windows et Linux de votre LAN.
C’est un sujet tout bête, mais entre les postes Windows qui ne sont pas très bavards à ce sujet et l’amalgame, côté Linux, entre les paquets ntp et ntpdate utilisant ou pas des fichiers communs de conf, on peut être momentanément perdu. J’espère être clair par la suite.

Préparez le serveur

Le paquet qui va bien

Sur le serveur, installez le paquet « ntp ». Faisant office de serveur, il se met à jour (donc il fait office de client, si je ne dis pas connerie). Pas la peine donc d’installer « ntpdate » qui est un autre client possible.
Les options du serveur sont dans /etc/default/ntp.conf, j’en parle un peu plus bas. Lisez le man.
Les paramètres de /etc/ntp.conf sont :

serv:~# egrep -v "^#|^$" /etc/ntp.conf
driftfile /var/lib/ntp/ntp.drift
statistics loopstats peerstats clockstats
filegen loopstats file loopstats type day enable
filegen peerstats file peerstats type day enable
filegen clockstats file clockstats type day enable
server 0.debian.pool.ntp.org iburst dynamic
server 1.debian.pool.ntp.org iburst dynamic
server 2.debian.pool.ntp.org iburst dynamic
server 3.debian.pool.ntp.org iburst dynamic
restrict -4 default kod notrap nomodify nopeer noquery
restrict -6 default kod notrap nomodify nopeer noquery
restrict 127.0.0.1
restrict ::1
restrict 10.0.0.0 mask 255.0.0.0 nomodify notrap

J’ai juste ajouté la plage 10.0.0.0 (c’est un exemple) pour autoriser mon LAN à joindre ce serveur.

Firewalling ?

Il faudra ouvrir en sortie le port « ntp » (123), en UDP, depuis le serveur vers les serveurs amonts. Si c’est la liste par défaut de /etc/ntp.conf, à savoir les « *.pool.ntp.org », c’est une longue liste, amenée à évoluer dans le temps je suppose. A vous de voir comment faire. Le plus simple : ouvrir UDP/123 vers le web, point.
Pour que les clients joignent votre serveur, c’est pareil, il faudra ouvrir le LAN vers votre passerelle, port UDP/123.

Testez

Je recommande d’ajouter -l /var/log/ntp.log dans les options du fichier /etc/default/ntp, soit :

NTPD_OPTS='-g -l /var/log/ntp.log'

Puis de redémarrer le service via :

/etc/init.d/ntpd restart

Vous verrez dans /var/log/ntp.log si votre serveur se met à jour, de combien de temps etc. Pensez à enlever ce log ou sinon à mettre en place une rotation de logs qui va avec.
Ca ressemble à ça :

13 Nov 11:19:30 ntpd[18381]: synchronized to 91.121.121.160, stratum 2
13 Nov 11:19:30 ntpd[18381]: time reset -0.169417 s
13 Nov 11:19:30 ntpd[18381]: kernel time sync status change 0001
13 Nov 11:23:57 ntpd[18381]: synchronized to 91.121.121.160, stratum 2
13 Nov 11:31:29 ntpd[18381]: synchronized to 91.121.86.143, stratum 2
13 Nov 11:35:30 ntpd[18381]: time reset +0.189846 s
13 Nov 11:35:50 ntpd[18381]: synchronized to 91.121.121.160, stratum 2
13 Nov 11:40:06 ntpd[18381]: synchronized to 81.19.16.225, stratum 2
13 Nov 11:42:57 ntpd[18381]: synchronized to 91.121.121.160, stratum 2

On est maintenant prêt à dire à notre LAN d’aller taper sur ce serveur pour régler l’heure.

Les postes Windows

Le service W32Time (« Horloge Windows ») est en automatique par défaut depuis Windows XP. Il s’appuie sur le paramètre qu’on trouvera dans la clef de registre HKLM/SOFTWARE/Policies/Microsoft/W32Time/Parameters. La clef est « NtpServer ».
Il faut donc mettre à jour cette clef, d’une manière ou d’une autre.

…via des GPO

Si vous êtes en domaine Windows, le réglage est ici :
NTP

En gros, vous indiquez le nom de votre serveur.
Vous pouvez forcer la mise à jour des GPO sur un poste, pour tester, via gpupdate /force.

En pas GPO (domaine Samba-sans-GPO, Workgroup etc)

Il faut modifier la clef mentionnée plus haut, d’une manière ou d’une autre ; et probablement relancer le service « Horloge Windows ».

Sous Windows, comment tester

Le service Windows ne raconte rien et les « event logs » systèmes, c’est chiant.
Je suggère sur le serveur, un joli tcpdump qui vous montrera qui fait quoi :

serv:~# tcpdump -i eth0 dst port ntp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
15:14:49.071538 IP pc315.maboite.fr.ntp > imag.imag.fr.ntp: NTPv3, symmetric active, length 48
15:14:49.172627 IP imag.imag.fr.ntp > pc315.maboite.fr.ntp: NTPv3, symmetric active, length 48
15:15:29.305824 IP pc666.maboite.fr.ntp > serv.maboite.fr.ntp: NTPv3, symmetric active, length 48
15:15:29.306158 IP serv.maboite.fr.ntp > pc666.maboite.fr.ntp: NTPv3, symmetric active, length 48

Là, on voit un « pc315″ qui continue de demander à l’extérieur (le firewall l’autorise pour l’instant) et un pc666 qui a prit le pli.

Les postes Linux

Installez le paquet « ntpdate » et planifiez ntpdate-debian en crontab. Le manuel explique : ntpdate-debian utilise le fichier /etc/default/ntpdate pour la configuration (liste des serveurs de temps etc). Il contient, sans les commentaires :

NTPDATE_USE_NTP_CONF=yes
NTPSERVERS="0.debian.pool.ntp.org 1.debian.pool.ntp.org 2.debian.pool.ntp.org 3.debian.pool.ntp.org"
NTPOPTIONS=""

Mais, dans ce cas, à cause du « yes », il utilise la conf de l’éventuel /etc/ntp.conf installé via le serveur NTP (paquet ntp). Comme on ne l’a pas mis sur les clients (ça sert à rien de faire tourner un serveur NTP), il faut donc soit passer NTPDATE_USE_NTP_CONF à « no », soit ne pas planifier ntpdate-debian, mais ntpdate avec une tartine de paramètres.
Si vous mettez « no », il faudra indiquer dans NTPSERVERS au moins / uniquement votre serveur du LAN. J’ai constaté qu’avec le nom de machine, ça ne passait pas. Mais avec l’IP, c’est OK. A creuser.

Pigé ? moi-même, je me perds régulièrement là-dedans.

Vus : 716
Publié par Michauko : 64