logo rss

GNU/Linux - Comment 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 12 (bookworm)
  • Tftp server : atftpd
  • Network Protocol : UDP 69
  • Répertoire TFTP : /srv/tftp
Diagramme illustrant la configuration d'un serveur TFTP sur Debian, montrant un ordinateur portable connecté à un réseau local (LAN) avec des adresses IP et un dossier TFTP contenant les fichiers nécessaires.
Architecture d'un serveur TFTP sous Debian
Schéma du serveur TFTP Debian avec stockage des fichiers firmware et connexion réseau à un switch via l'interface ens224.
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 -p /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
  • Afin que la modification soit prise en compte, redémarrer le serveur ou le service réseau :
root@host:~# systemctl restart networking

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.
ode: 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