GNU/Linux - Installer et configurer un serveur TFTP

Tux logo

TFTP pour Trivial File Transfer Protocol est un protocole simplifié de transfert de fichiers qui permet a un ou plusieurs clients d'échanger des fichiers avec un hôte distant.

C'est un vieux protocole mais qui est toujours très utilisé dans de nombreuses applications réseau.

Je l'utilise personnelement pour mettre à jour les firmware de mes périphériques réseau. (Les commutateurs Cisco par exemple).

Nous verrons ici comment mettre en place un serveur TTFP sous la distribution Debian.

Schéma Réseau

  • OS : Debian 11 (bullseye)
  • Tftp server : atftpd
  • Network Protocol : UDP 69
  • Répertoire TFTP : /srv/tftp
GNU/Linux | Architecture d'un serveur tftp Debian
Architecture d'un serveur TFTP sous Debian

Installation

  • Mettre à jour la liste des paquets :
root@server:~# apt update
  • Installer le serveur atftpd :
root@server:~# apt install atftpd
  • Créer un dossier /srv/tftp si manquant. Ce dernier sera notre répertoire racine de notre partage tftp :
root@server:~# ls /srv/tftp || mkdir /srv/tftp

Configuration

Configuration réseau

  • Éditer le fichier /etc/network/interfaces (remplacer ens224 par sa propre interface réseau) :
allow-hotplug ens224
iface ens224 inet static
        address 192.168.1.10
        netmask 255.255.255.0
        gateway 192.168.1.254
	dns-nameservers 192.168.1.254
  • Redémarrer :
root@host:~# reboot

Configuration TFTP

  • Éditer le fichier /etc/default/atftpd et vérifier que l'on a les paramètres suivants :
USE_INETD=true
# OPTIONS below are used only with init script
OPTIONS="--tftpd-timeout 300 --retry-timeout 5 --mcast-port 1758 --mcast-addr 239.239.239.0-255 --mcast-ttl 1 --maxthread 100 --verbose=5 /srv/tftp"
  • Redémarrer le service atftpd :
root@server:~# systemctl restart atftpd.service
  • Ajouter les droits de lecture/écriture pour rendre les fichiers dans /srv/tftp lisibles et modifiables :
root@server:~# chmod -R ugo+rw /srv/tftp/

Vérification depuis un client

Pour vérifier le bon fonctionnement de notre serveur nous pouvons utiliser un client tftp.

  • Depuis un hôte Debian, installer le client tftp :
root@client:~# apt update && apt install tftp
  • Se connecter au serveur tftp :
user@client:~$ tftp 192.168.1.10
  • Afficher l'état :
tftp> status
Connected to 192.168.1.10.
Mode: netascii Verbose: off Tracing: off
Rexmt-interval: 5 seconds, Max-timeout: 25 seconds
  • Télécharger un fichier :
tftp> get c1000-universalk9-mz.152-7.E4.bin
  • Envoyer un fichier :
tftp> put c1000-universalk9-mz.152-7.E4.bin
  • Quitter la session :
tftp> quit

Serveur DHCP

Dans certaines situations on peut également avoir besoin de paramétrer un serveur DHCP, nous allons ici voir comment.

  • Installer le service dhcpd :
root@client:~# apt update && apt install isc-dhcp-server
  • Éditer le fichier /etc/dhcp/dhcpd.conf, ici avec un pool d'adresses de 192.168.10.10 à 192.168.10.20 :
option domain-name "example.org";
default-lease-time 600;
max-lease-time 7200;
ddns-update-style none;

subnet 192.168.10.0 netmask 255.255.255.0 {
  range 192.168.10.10 192.168.10.20;
}
  • Éditer le fichier /etc/default/isc-dhcp-server pour préciser sur quelle interface réseau le service fonctionnera :
INTERFACESv4="ens224"
#INTERFACESv6=""
  • Redémarrer le service dhcpd :
root@client:~# systemctl restart isc-dhcp-server.service
  • Afficher les attributions dhcpd :
root@client:~# grep dhcpd /var/log/syslog
Creative Commons License
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.

Contact :