Guide Linux – Installation et configuration d’un serveur TFTP avec tftpd-hpa
- Mise à jour le 11 déc. 2025
TFTP (Trivial File Transfer Protocol) est un protocole de transfert de fichiers léger qui permet à un client d’envoyer ou de récupérer des fichiers depuis un hôte distant.
Bien qu’il s’agisse d’un protocole ancien, il reste largement utilisé dans les environnements réseau, notamment pour des tâches telles que le provisioning de matériel ou la mise à jour de firmwares.
Je l’utilise personnellement pour mettre à jour le firmware de mes équipements réseau, notamment des commutateurs Cisco.
Ce guide explique comment installer et configurer un serveur TFTP sous Debian en utilisant le service tftpd-hpa.
Schéma réseau
- Système d’exploitation : Debian 13 (Trixie)
- Serveur TFTP : tftpd-hpa
- Protocole : UDP port 69
- Répertoire racine TFTP : /srv/tftp
Installation
- Mettre à jour l’index des paquets :
root@server:~# apt update
- Installer le paquet
tftpd-hpa:
root@server:~# apt install tftpd-hpa
- L’installation crée normalement le répertoire
/srv/tftp. S’il n’existe pas, créez manuellement le répertoire racine TFTP :
root@server:~# ls /srv/tftp || mkdir -p /srv/tftp
Configuration
Configuration réseau
Si vos paramètres réseau ne sont pas encore configurés, vous pouvez suivre les instructions ci-dessous pour définir une adresse IP statique.
- Modifiez le fichier
/etc/network/interfaces(remplacezens224par votre 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émarrez le service réseau (ou l’ensemble du système) pour appliquer la nouvelle configuration :
root@host:~# systemctl restart networking
Configuration du service TFTP
Par défaut, et pour des raisons de sécurité, le serveur tftpd-hpa fonctionne en mode lecture seule. Cela signifie que les clients peuvent télécharger des fichiers, mais ne peuvent rien envoyer. Si vous souhaitez activer l’accès en écriture (par exemple pour exporter les fichiers de configuration d’un commutateur, voir exporter un fichier de configuration depuis un commutateur Cisco), vous devez l’activer manuellement.
- Modifiez le fichier
/etc/default/tftpd-hpaet ajoutez l’option--createpour autoriser les clients à envoyer des fichiers :
# /etc/default/tftpd-hpa
TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/srv/tftp"
TFTP_ADDRESS=":69"
TFTP_OPTIONS="--secure --create"
- Redémarrez le service
tftpd-hpa:
root@server:~# systemctl restart tftpd-hpa.service
- Définissez les permissions de lecture et écriture afin que les fichiers présents dans
/srv/tftpsoient accessibles :
root@server:~# chmod -R ugo+rw /srv/tftp/
Vérification depuis un client
Pour vérifier que le serveur fonctionne correctement, nous pouvons utiliser un client TFTP.
- Si vous utilisez une machine Debian (ce qui est un excellent choix), installez le client tftp-hpa :
root@client:~# apt update && apt install tftp-hpa
- Connectez-vous au serveur TFTP :
user@client:~$ tftp 192.168.1.10
- Afficher le statut du client :
tftp> status
Connected to 192.168.1.10.
Mode: netascii Verbose: off Tracing: off Literal: off
Rexmt-interval: 5 seconds, Max-timeout: 25 seconds
- Télécharger un fichier depuis le serveur :
tftp> get c1000-universalk9-mz.152-7.E4.bin
- Envoyer un fichier vers le serveur (uniquement si l’accès en écriture est activé) :
tftp> put c1000-universalk9-mz.152-7.E4.bin
- Quitter la session TFTP :
tftp> quit
Serveur DHCP
Dans certaines situations, il peut être nécessaire de mettre en place un serveur DHCP. Voici comment en configurer un sous Debian.
- Installez le paquet
isc-dhcp-server:
root@client:~# apt update && apt install isc-dhcp-server
- Modifiez le fichier
/etc/dhcp/dhcpd.conf. L’exemple ci-dessous définit un pool d’adresses allant de192.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;
}
- Modifiez le fichier
/etc/default/isc-dhcp-serveret indiquez l’interface réseau sur laquelle le servicedhcpddoit écouter :
INTERFACESv4="ens224"
#INTERFACESv6=""
- Redémarrez le service
isc-dhcp-server:
root@client:~# systemctl restart isc-dhcp-server.service
- Afficher les baux
dhcpdactifs :
root@client:~# grep dhcpd /var/log/syslog