Commande tftp sous Linux avec exemples pratiques

LinuxLinuxBeginner
Pratiquer maintenant

Introduction

Dans ce laboratoire, nous allons explorer la commande Linux tftp (Trivial File Transfer Protocol) et apprendre à configurer un serveur tftp pour transférer des fichiers entre un client et un serveur. Le protocole TFTP fournit un mécanisme simple pour transférer des fichiers sans les fonctionnalités d'authentification présentes dans des protocoles plus complexes comme FTP.

Nous commencerons par comprendre l'utilisation de base de la commande tftp, y compris ses différentes options et commandes. Ensuite, nous configurerons un serveur tftp et nous entraînerons à transférer des fichiers vers et depuis le serveur. Ce laboratoire offre une expérience pratique avec le protocole tftp, couramment utilisé pour le démarrage réseau, le transfert de fichiers de configuration vers des périphériques réseau et d'autres tâches de transfert de fichiers légères.

Fiche de référence des commandes Linux

Comprendre le protocole TFTP

Le Trivial File Transfer Protocol (TFTP) est un protocole simple conçu pour des opérations de transfert de fichiers légères. Contrairement au File Transfer Protocol (FTP) plus complexe, TFTP ne fournit pas de fonctionnalités d'authentification ni de listage de répertoires. Il fonctionne en utilisant UDP sur le port 69, ce qui le rend plus rapide mais moins fiable que les protocoles basés sur TCP.

Commençons par vérifier si le client TFTP est correctement installé sur notre système :

which tftp

Vous devriez voir une sortie similaire à :

/usr/bin/tftp

Maintenant, vérifions la version du client TFTP :

tftp --version

La sortie devrait afficher :

tftp-hpa version 5.2

Le client TFTP fonctionne en mode interactif. Pour entrer dans ce mode, tapez simplement :

tftp

Cela vous donnera une invite tftp> où vous pourrez entrer diverses commandes. Pour voir les commandes disponibles, entrez :

help

Vous devriez voir une liste de commandes comme :

Commands may be abbreviated.  Commands are:

connect         connect to remote tftp
mode            set file transfer mode
put             send file
get             receive file
quit            exit tftp
verbose         toggle verbose mode
trace           toggle packet tracing
status          show current status
binary          set mode to octet
ascii           set mode to netascii
rexmt           set per-packet retransmission timeout
timeout         set total retransmission timeout
?               print help information

Examinons quelques-unes des commandes TFTP les plus importantes :

  1. connect - Établit une connexion avec un serveur TFTP distant.
  2. get - Télécharge un fichier du serveur vers votre machine locale.
  3. put - Téléverse un fichier de votre machine locale vers le serveur.
  4. quit - Quitte le client TFTP.
  5. binary - Définit le mode de transfert sur binaire (recommandé pour la plupart des fichiers).
  6. ascii - Définit le mode de transfert sur ASCII (pour les fichiers texte).

Vous pouvez quitter le client TFTP en tapant :

quit

Dans la prochaine étape, nous apprendrons à exécuter un serveur TFTP et à le configurer correctement pour les transferts de fichiers.

Configuration et gestion d'un serveur TFTP

Dans cette étape, nous allons examiner comment le serveur TFTP est configuré et fonctionne sur notre système. Le script d'installation a déjà installé et configuré le serveur TFTP pour nous, mais il est important de comprendre son fonctionnement.

Tout d'abord, vérifions si le serveur TFTP est en cours d'exécution :

sudo service tftpd-hpa status

Vous devriez voir une sortie indiquant que le service est actif et en cours d'exécution.

La configuration du serveur TFTP est stockée dans le fichier /etc/default/tftpd-hpa. Examinons son contenu :

cat /etc/default/tftpd-hpa

Vous devriez voir quelque chose comme :

TFTP_USERNAME="labex"
TFTP_DIRECTORY="/tftpboot"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure"

Voici ce que signifient chacun de ces paramètres :

  • TFTP_USERNAME : Le compte utilisateur sous lequel le serveur TFTP s'exécute.
  • TFTP_DIRECTORY : Le répertoire racine où TFTP servira et stockera les fichiers.
  • TFTP_ADDRESS : L'adresse IP et le port sur lesquels le serveur écoute (0.0.0.0 signifie toutes les interfaces).
  • TFTP_OPTIONS : Options supplémentaires pour le serveur ("--secure" restreint les opérations au répertoire TFTP).

Explorons maintenant le répertoire TFTP :

ls -la /tftpboot

Initialement, ce répertoire peut être vide ou ne contenir que des fichiers système. Créons un fichier de test dans ce répertoire :

echo "This is a file in the TFTP server directory." > /tmp/server-file.txt
sudo cp /tmp/server-file.txt /tftpboot/

Vérifions si le fichier a été créé avec succès :

ls -la /tftpboot

Vous devriez voir server-file.txt dans le répertoire.

Pour nous assurer que le serveur TFTP peut lire et écrire des fichiers dans ce répertoire, nous devons vérifier les permissions :

ls -ld /tftpboot

Les permissions devraient être définies pour permettre la lecture et l'écriture par tous les utilisateurs (777), comme nous l'avons configuré dans le script d'installation.

Si vous avez besoin de redémarrer le serveur TFTP à tout moment, vous pouvez utiliser :

sudo service tftpd-hpa restart

Nous avons maintenant un serveur TFTP en cours d'exécution avec un fichier de test prêt à être téléchargé. Dans la prochaine étape, nous utiliserons le client TFTP pour transférer des fichiers vers et depuis le serveur.

Transfert de fichiers à l'aide du client TFTP

Maintenant que nous avons un serveur TFTP en cours d'exécution avec un fichier de test, apprenons à transférer des fichiers à l'aide du client TFTP. Nous allons nous entraîner à télécharger des fichiers depuis le serveur et à téléverser des fichiers vers le serveur.

Note importante : Lors de l'utilisation de TFTP pour téléverser des fichiers, le client recherche les fichiers dans votre répertoire de travail actuel. Assurez-vous d'être dans le bon répertoire (~/project) avant de tenter de téléverser des fichiers.

Téléchargement de fichiers depuis le serveur TFTP

Tout d'abord, essayons de télécharger le fichier server-file.txt que nous avons créé à l'étape précédente. Nous utiliserons le client TFTP en mode interactif :

cd ~/project
tftp localhost

Vous devriez voir l'invite tftp>. Définissons le mode de transfert sur binaire, ce qui convient à tous les types de fichiers :

binary

Maintenant, téléchargez le fichier depuis le serveur :

get server-file.txt downloaded-file.txt

Cette commande télécharge server-file.txt depuis le serveur et l'enregistre sous le nom downloaded-file.txt dans votre répertoire actuel.

Une fois le transfert de fichier terminé, quittez le client TFTP :

quit

Vérifions que le fichier a été téléchargé correctement :

cat downloaded-file.txt

Vous devriez voir :

This is a file in the TFTP server directory.

Téléversement de fichiers vers le serveur TFTP

Maintenant, essayons de téléverser un fichier vers le serveur TFTP. Nous avons déjà un fichier sample.txt dans notre répertoire de projet qui a été créé par le script d'installation.

Tout d'abord, assurons-nous d'être dans le bon répertoire et vérifions le contenu de ce fichier :

cd ~/project
ls -la sample.txt
cat sample.txt

Vous devriez voir :

This is a sample file for TFTP transfer testing.

Maintenant, téléversons ce fichier sur le serveur TFTP :

tftp localhost

À l'invite tftp>, définissez le mode de transfert sur binaire et téléversez le fichier :

binary
put sample.txt uploaded-sample.txt

Si vous obtenez une erreur "File not found", quittez TFTP et vérifiez que le fichier existe :

quit
ls -la ~/project/sample.txt
cd ~/project
tftp localhost
binary
put sample.txt uploaded-sample.txt

Cette commande téléverse votre fichier local sample.txt sur le serveur et l'enregistre sous le nom uploaded-sample.txt. Une fois le transfert de fichier terminé, quittez le client TFTP :

quit

Vérifions maintenant que le fichier a été téléversé avec succès sur le serveur :

cat /tftpboot/uploaded-sample.txt

Vous devriez voir :

This is a sample file for TFTP transfer testing.

Utilisation de TFTP avec une seule ligne de commande

Vous pouvez également utiliser TFTP sans entrer en mode interactif en fournissant toutes les informations nécessaires sur une seule ligne de commande. Par exemple :

cd ~/project
echo "One-line TFTP test" > oneline-test.txt
tftp -c put oneline-test.txt localhost

Vérifions si le fichier a été téléversé sur le serveur :

cat /tftpboot/oneline-test.txt

Vous devriez voir :

One-line TFTP test

Cela démontre que vous pouvez utiliser TFTP à la fois de manière interactive et avec des lignes de commande uniques, selon vos besoins.

Dans la prochaine étape, nous explorerons des options TFTP plus avancées et des techniques de dépannage.

Options TFTP avancées et dépannage

Dans cette étape, nous allons explorer quelques options avancées pour le client TFTP et apprendre à dépanner les problèmes courants.

Mode verbeux

Lors du transfert de fichiers avec TFTP, il peut être utile de voir plus de détails sur le processus de transfert. Vous pouvez activer le mode verbeux pour voir plus d'informations :

tftp localhost

À l'invite tftp>, activez le mode verbeux :

verbose

Vous devriez voir :

Verbose mode on.

Maintenant, essayez de télécharger un fichier :

get server-file.txt downloaded-file.txt

Avec le mode verbeux activé, vous devriez voir des informations plus détaillées sur le processus de transfert.

Quittez le client TFTP :

quit

Vérification de l'état des fichiers

Créons des fichiers de différentes tailles pour tester les capacités de transfert TFTP :

## Assurez-vous que nous sommes dans le répertoire du projet
cd ~/project

## Créer un petit fichier texte
echo "This is a small text file." > small.txt

## Créer un fichier de taille moyenne (environ 10 Ko)
dd if=/dev/urandom of=medium.bin bs=1K count=10 2> /dev/null

## Vérifier que les fichiers ont été créés
ls -la small.txt medium.bin

## Essayer de téléverser ces fichiers
tftp localhost

À l'invite tftp> :

binary
put small.txt
put medium.bin
status
quit

La commande status affiche des informations sur la session TFTP en cours, y compris le serveur connecté et le mode de transfert.

Problèmes courants de TFTP et solutions

Voici quelques problèmes courants que vous pourriez rencontrer lors de l'utilisation de TFTP et comment les résoudre :

  1. Fichier introuvable (pour les opérations put) :
    Cela se produit lorsque le client TFTP ne trouve pas le fichier que vous essayez de téléverser dans votre répertoire actuel.

    Solution : Assurez-vous d'être dans le bon répertoire et que le fichier existe :

    pwd
    ls -la filename.txt
    cd ~/project
  2. Permission refusée :
    Cela peut se produire si le répertoire du serveur TFTP n'a pas les bonnes permissions.

    Solution : Assurez-vous que le répertoire TFTP a les permissions appropriées :

    sudo chmod -R 777 /tftpboot
  3. Connexion refusée :
    Cela peut se produire si le serveur TFTP n'est pas en cours d'exécution ou n'est pas accessible.

    Solution : Vérifiez l'état du serveur TFTP :

    sudo service tftpd-hpa status

    S'il n'est pas en cours d'exécution, démarrez-le :

    sudo service tftpd-hpa start
  4. Fichier introuvable (pour les opérations get) :
    Cela peut se produire si vous essayez de télécharger un fichier qui n'existe pas sur le serveur.

    Solution : Listez les fichiers dans le répertoire TFTP pour vous assurer que le fichier existe :

    ls -la /tftpboot

Créons intentionnellement une situation où un fichier n'existe pas et voyons l'erreur :

cd ~/project
tftp localhost

À l'invite tftp> :

get non-existent-file.txt

Vous devriez voir un message d'erreur indiquant que le fichier n'a pas été trouvé.

quit

Paramètres de délai d'attente TFTP

TFTP dispose de paramètres pour contrôler les délais d'attente pendant les transferts de fichiers. Ceux-ci peuvent être utiles lors du transfert de fichiers sur des réseaux peu fiables :

cd ~/project
tftp localhost

À l'invite tftp> :

rexmt 5
timeout 25
status
quit

Ces commandes définissent le délai d'attente de retransmission par paquet à 5 secondes et le délai d'attente de retransmission total à 25 secondes.

Vous savez maintenant comment utiliser diverses options avancées avec TFTP et comment dépanner les problèmes courants. Ces compétences seront précieuses lorsque vous travaillerez avec TFTP dans des scénarios réels.

Résumé

Dans ce laboratoire, nous avons exploré le protocole Trivial File Transfer Protocol (TFTP) sous Linux. Nous avons découvert les principales caractéristiques et limitations de TFTP, ce qui le rend adapté à des cas d'utilisation spécifiques tels que le démarrage réseau et le transfert de fichiers de configuration vers des périphériques réseau.

Voici ce que nous avons couvert :

  1. Comprendre le protocole TFTP : Nous avons découvert les concepts de base de TFTP et comment il diffère des autres protocoles de transfert de fichiers. Nous avons exploré le mode interactif du client TFTP et ses commandes de base.

  2. Configuration et gestion d'un serveur TFTP : Nous avons examiné comment un serveur TFTP est configuré sous Linux, y compris les paramètres du fichier de configuration et les permissions de répertoire nécessaires à son bon fonctionnement.

  3. Transfert de fichiers à l'aide du client TFTP : Nous nous sommes entraînés à télécharger des fichiers depuis un serveur TFTP et à en téléverser, en utilisant à la fois le mode interactif et des lignes de commande uniques.

  4. Options TFTP avancées et dépannage : Nous avons exploré des options avancées telles que le mode verbeux et les paramètres de délai d'attente, et appris à dépanner les problèmes TFTP courants.

TFTP est un protocole léger qui remplit un objectif spécifique dans l'administration réseau et les systèmes embarqués. Bien qu'il manque de nombreuses fonctionnalités de protocoles plus robustes comme FTP ou SFTP, sa simplicité le rend précieux dans les scénarios où un protocole minimal est nécessaire.

Les compétences que vous avez acquises dans ce laboratoire peuvent être appliquées à des tâches telles que :

  • Mise à jour du firmware sur les périphériques réseau
  • Provisionnement de nouveaux serveurs à l'aide du démarrage réseau
  • Transfert rapide de fichiers de configuration entre systèmes
  • Mise en place de systèmes de sauvegarde automatisés pour les configurations de périphériques réseau

Conseils importants pour l'utilisation de TFTP :

  • Assurez-vous toujours d'être dans le bon répertoire de travail lors du téléversement de fichiers
  • Les transferts TFTP ne sont pas chiffrés, utilisez-le donc uniquement dans des environnements réseau de confiance ou pour des données non sensibles
  • N'oubliez pas que TFTP ne fournit pas de capacités de liste de répertoires, vous devez donc connaître les noms de fichiers exacts
  • Les permissions de fichiers sur les répertoires client et serveur sont cruciales pour des transferts réussis

Fiche de référence des commandes Linux