Configurer un serveur TFTPD
Auteur : Olivier BOYER - oboyer () ajoute ! org
Mots clés
NetBSD, service, tftp, dhcp, inetd
Introduction
Ce document décrit comment configurer le service TFTP sur un NetBSD 1.6.x ou 2.X. Le périphérique qui est configuré via TFTP est un serveur d'impression HP JetDirect EX.
Le serveur TFTP écoute sur le port udp/69.
Nous utiliserons le service TFTP livré par défaut avec les versions NetBSD supérieures à 1.6. Il s'agit de celui de l'ISC (Internet Software Consortium), disponible à l'URL : http://www.isc.org/sw/dhcp/
Présentation de la maquette
Les éléments suivants sont mis en oeuvre :
- un service DHCP
- un service TFTP
- un service SYSLOG qui écoute sur l'interface LAN
- un serveur d'impression HP JetDirect EX
Le serveur d'impression HP JetDirect EX obtient son adresse IP (jd.leaves.org) via DHCP, et télécharge son fichier de configuration (jd.cfg) par TFTP. Les logs des actions effectuées par le serveur d'impression HP JetDirect EX sont envoyées par syslogd au serveur smoking.leaves.org.
Note
Toutes les commandes présentées ici, sont à executer, sauf mention contraire, en tant qu'administrateur de la machine.
Pré-requis
Ce document suppose que :
- le service DHCP soit déjà configuré et fonctionnel sur la machine
- le service SYSLOG soit convenablement configuré et écoute sur l'interface LAN du serveur.
- les noms des machines
jd.leaves.orgetsmoking.leaves.orgsoient convenablement résolus en adresse IP.
Configuration du serveur TFTP
Créer un compte utilisateur dédié
Le service TFTP par nature n'est pas sécurisé, puisqu'il ne nécessite aucune authentification de l'utilisateur pour télécharger les fichiers.
Par défaut, le service TFTP tourne sous l'identité du compte nobody. Il vaut mieux créer un autre utilisateur, plus spécifique.
Procédez comme suit :
# groupadd -g 114 tftp # useradd -b /nonexistent -s /sbin/nologin -c "tftp pseudo-user" -u 114 -g tftp tftp
Créer le répertoire racine du serveur TFTP
Dans notre configuration, le daemon tftpd(8) va exécuter l'appel système chroot(2) au démarrage. Cela permet d'éviter que d'autres fichiers que ceux dans le répertoire racine soient accéder via le protocole TFTP.
Si le client distant inclus le répertoire dans le nom du fichier à transmettre, il sera nécessaire de créer un lien symobolique du répertoire racine vers . dans le répertoire racine.
Dans notre configuration, le répertoire racine du server est : /var/chroot/tftpboot
# mkdir /var/chroot/tftpboot # chown root:wheel /var/chroot/tftpboot # chmod 755 /var/chroot/tftpboot
Le “standard de fait” pour le répertoire racine du service TFTP est : /tftpboot
Nous allons donc créer un lien symbolique de : /var/chroot/tftpboot vers /tftpboot
# cd / # ln -s var/chroot/tftpboot tftpboot
Activer le service TFTP
Le daemon tftpd utilisé ici n'est pas autonome. Il est lancé par le super daemon réseau inetd. Pour l'activer, modifier comme suit le fichier /etc/inetd.conf :
#default#tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -s /tftpboot tftp dgram udp wait root /usr/libexec/tftpd tftpd -l -u tftp -g tftp -s /var/chroot/tftpboot
Relancer le daemon inetd pour prendre en compte les modifications :
# /etc/rc.d/inetd reload
Modifier le fichier /etc/dhcpd.conf
Le serveur d'impression HP JetDirect EX à besoin :
- d'une adresse IP obtenue via le service DHCP,
- d'un fichier de configuration téléchargé via le service TFTP.
Pour configurer le serveur d'impression HP JetDirect EX, modifier comme suit le fichier /etc/dhcpd .conf :
##
## bootp options
##
allow bootp;
##
## Clients settings
##
host jd {
# HP JetDirect Ex print server
# Manage an HP Laser Jet printer
hardware ethernet 08:00:09:xx:xx:xx;
fixed-address jd.leaves.org;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.0.255;
option routers 192.168.0.254;
option log-servers smoking.leaves.org;
# name of the HP JetDirect Ex config file
filename "/var/chroot/tftpboot/jd.cfg";
}
Relancer le daemon dhcpd pour prendre en compte les modifications :
# /etc/rc.d/dhcpd restart