TFTP (pour Trivial File Transfert Protocol) est un protocole simplifié de transfert de fichiers. Il fonctionne en UDP sur le port 69, au contraire du FTP qui utilise lui TCP et le port 21. L'utilisation d'UDP implique que le client et le serveur doivent gérer eux-mêmes une éventuelle perte de paquets.
Les principales simplifications visibles du TFTP par rapport au FTP sont qu'il ne gère pas le listage de fichiers, et ne dispose pas de mécanismes d'authentification, ni de chiffrement. Il faut connaître à l'avance le nom du fichier que l'on veut récupérer. De même, aucune notion de droits de lecture/écriture n'est disponible en standard.
On utilise le protocole TFTP notamment pour la mise à jour des firmwares sur les équipements réseaux, la sauvegarde de la configuration de ces équipements réseau, mais aussi pour amorcer des stations de travail sans disque dur.
Ce tutoriel vaut pour les 2 premiers cas qui requièrent un serveur TFTP basique. Si vous souhaitez amorcer un PC par le réseau, il vous faut préférer tftp-hpa.
Installez les paquets xinetd tftpd tftp . apt://xinetd,tftpd,tftp
Créer le fichier /etc/xinetd.d/tftp puis l'éditer et saisir :
service tftp { protocol = udp port = 69 socket_type = dgram wait = yes user = nobody server = /usr/sbin/in.tftpd server_args = /tftpboot disable = no }
Créer le répertoire /tftpboot :
sudo mkdir /tftpboot sudo chmod -R 777 /tftpboot sudo chown -R nobody /tftpboot
Re-charger les fichiers de configuration de xinetd :
sudo /etc/init.d/xinetd reload
Démarrer ou re-démarrer xinetd :
sudo /etc/init.d/xinetd start
ou
sudo /etc/init.d/xinetd restart
Pour tester votre service
netstat -n | grep 69 (exemple de sortie a ajouter)
Pour tester le bon fonctionnement du serveur, nous allons créer un fichier dans notre home (emetteur - client) et dans /tftpboot (serveur) (avec l'attribut 777) puis le transférer sur le serveur tftp :
Sur le serveur (car il faut que le fichier existe) :
$ touch /tftpboot/essai.txt $ sudo chmod 777 /tftpboot/essai.txt
$ touch /home/MON-REPERTOIRE-UTILISATEUR/essai.txt $ tftp 192.168.1.1 tftp> put essai.txt Sent 722 bytes in 0.0 seconds tftp> quit
Pour avoir l'aide mémoire sur les commandes de tftp taper :
$ tftp tftp> ?
Ce qui est écrit ci-dessous n'est pas vérifié dans tous les cas !!!
Ne pas oublier de créer le fichier que l'on désire envoyer sur le serveur dans le dossier /tftpboot pour l'écraser par la suite, sans cette manipulation vous aurez une erreur du type:
Error code 2: Access violation
Voilà, le serveur tftp est fonctionnel pour recevoir et mettre à disposition des fichiers.
Les messages tftpd sont loggé sur le serveur avec syslog. Voici un exemple d'affichage dynamique :
user:~$ tail -f /var/log/syslog | grep tftp Apr 9 09:19:58 user tftpd[12613]: tftpd: trying to get file: test.txt Apr 9 09:19:58 user tftpd[12613]: tftpd: serving file from /home/user/common/tftp