I. Introduction▲
Dans votre installation informatique, vous avez ressenti le besoin de centraliser les données afin que plusieurs équipements, que l’on appellera clients, y accèdent. Pour cela, vous avez la possibilité de connecter un disque dur à une box Internet, à un Raspberry Pi ou à un NAS, que l’on appellera par la suite serveur. Aussi, pour que les données soient disponibles sur le réseau, le serveur utilise un protocole permettant de communiquer avec les clients.
I-A. Protocoles▲
Au fil du temps, plusieurs protocoles ont été créés afin de répondre à cette problématique de transfert de fichiers sur un réseau. Même si, pour un utilisateur débutant, ces protocoles sont très ressemblants, il existe bel et bien des différences qui pourront devenir des éléments déterminants pour privilégier l’un d’entre eux.
De plus, ces protocoles ont évolué et continuent d’évoluer, notamment pour améliorer leur sécurité. Il est donc conseillé d’utiliser la version la plus récente. Toutefois, cela n’est pas sans contrepartie : une vieille machine pourra ne pas supporter une telle version et n’arrivera donc pas à se connecter au serveur.
I-A-1. NFS▲
Initialement conçu par Sun Microsystems en 1984 pour un usage interne, le protocole NFS est, à partir de la version 2, un standard ouvert dont la documentation est accessible dans les RFC.
Version |
RFC |
Notes |
2 |
1094 |
Fonctionne sur UDP. |
3 |
1813 |
Fonctionne en 64 bits et accepte donc des fichiers supérieurs à 2 Go. |
4 |
Améliorations des performances et de la sécurité. |
|
4.1 |
5661 |
Ajout du support des clusters de serveurs avec possibilité d’effectuer des accès en parallèle sur plusieurs machines (par l’extension pNFS). |
4.2 |
7862 |
Copie et clonage effectué par le serveur, réservation de l’espace, fichiers avec des données non initialisées, indications sur le comportement de l’application, support des applications manipulant des blocs… |
I-A-2. SMB/CIFS▲
Le protocole Server Message Block (SMB) (aussi connu sous le nom de Common Internet File System (CIFS)) a d’abord été conçu par IBM (en 1983) mais a été repris et largement modifié par Microsoft. Le protocole est propriétaire, mais la spécification de la version a été publiée afin de permettre aux développeurs de créer des clients compatibles avec le partage de fichiers utilisé dans Windows.
Version |
Année |
Notes |
1 |
1983 |
Dépréciée depuis 2013, cette version commence à disparaître. |
2.0 |
2006 |
Support des liens symboliques, optimisation du protocole (par la diminution des commandes), support du pipeline (possibilité d’envoyer de nouvelles commandes avant de recevoir une réponse), possibilité d’effectuer plusieurs actions en une requête, gestion des déconnexions courtes, mise en cache des propriétés des fichiers. |
2.1 |
2009 |
Nouveau mécanisme de verrou opportuniste et améliorations mineures |
3.0 |
2012 |
Support de l’utilisation de plusieurs canaux, support de la récupération transparente, chiffrement bout à bout, AES-128 CCM. |
3.0.2 |
2013 |
Améliorations mineures et possibilité de désactiver SMB1 |
3.1.1 |
2015 |
Support de l’AES-128 GCM, support de vérification de préauthentification et forçage de négociation sécurisé. |
I-A-3. AFP▲
Le protocole Apple Filing Protocol (AFP) a été créé par Apple. La première implémentation a vu le jour en 1988 et reposait sur AppleTalk. À la date d’écriture de cet article, le protocole est à la version 3.4. Ci-dessous, quelques étapes importantes du projet :
Version |
Année |
Notes |
2.1 |
1991 (Système 7) |
Possibilité d’incorporer des utilisateurs anonymes. |
2.2 |
1999 (Mac OS X Server 1.0) |
Support de la communication sur TCP. |
3.0 |
2001 (OS X 10.0) |
Support de l’UTF-8, support des privilèges UNIX, support de la reconnexion, support des fichiers de plus de 2 Go, support des serveurs Open Directory. |
3.1 |
2002 (OS X 10.2) |
Améliorations mineures. |
3.1+ |
2003 (OS X 10.3) |
Support de Kerberos. |
3.2 |
2005 (OS X 10.4) |
Support des listes de contrôle d’accès et des attributs étendus. |
3.2+ |
2007 (OS X 10.5) |
Amélioration du support de la synchronisation avec Time Machine. |
3.3 |
2009 (OS X 10.6) |
Support de la ré-application du cache (nécessaire pour Time Machine). |
3.4 |
2012 (OS X 10.8) |
Améliorations mineures liées à la correspondance des codes d’erreur POSIX/AFP. |
Apple a commencé à déprécier le protocole AFP à partir de macOS High Sierra en faveur de SMB.
I-A-4. FTP▲
File Transfer Protocol est un protocole dédié aux transferts de fichiers, créé en 1971 et documenté au travers de RFC (RFC 114 pour la première spécification).
Toutefois, ce protocole est bien plus limité quant à la gestion des fichiers que les protocoles précédents. En effet, alors que les autres protocoles proposent un mécanisme de système de fichiers, FTP ne se limite qu’à l’envoi et la réception des fichiers. Par contre, il permet des échanges rapides de fichiers.
Voici une liste, non exhaustive, des évolutions :
RFC |
Notes |
114 |
Première version, reposant sur NCP (ancêtre de TCP/IP). |
765 |
Utilisation de TCP/IP. |
1579 |
Ajout du mode passif. |
2228 |
Ajout d’extensions liées à la sécurité. |
2428 |
Ajout du support de l’IPv6 et d’un nouveau type de mode passif. |
4217 |
Utilisation de TLS. |
7151 |
Modification de la commande HOST pour les hôtes virtuels. |
I-A-5. SSH/SFTP▲
Le protocole SSH File Transfer Protocol repose sur une connexion SSH pour proposer un accès aux fichiers. Un de ses avantages est que tout comme SSH, il établit un lien sécurisé entre le client et le serveur. Toutefois, cette sécurisation a un impact sur les performances de transfert et sur l’utilisation CPU des machines l’utilisant.
Malgré leurs noms très proches, ce protocole n’a pas de lien avec FTP.
I-A-6. WebDAV▲
WebDAV est une extension du protocole HTTP permettant de manipuler les fichiers sur un serveur. Elle ajoute donc une série de commandes (en plus de celles de HTTP) permettant de déplacer et copier des fichiers ainsi que de créer des dossiers. Cette extension est décrite par les RFC 2518 et RFC 4918.
I-A-7. iSCSI▲
Ce protocole diffère des précédents. En effet, iSCSI repose sur les blocs du disque et non pas sur les fichiers exposés par le système de fichiers comme le feraient les protocoles précédents. En clair, cela veut dire que par le biais de ce protocole, vous exposez un morceau du disque, dans sa forme brute. Le client devra formater le disque en question, avant de pouvoir l’utiliser.
Ce protocole a été conçu dans le but de permettre le partage d’espace de stockage sur le réseau et ce, sur des longues distantes. À l’utilisation, la machine cliente considérera le disque comme un disque dur présent dans la machine.
Le protocole a été créé par Cisco et IBM et a été standardisé par l’IETF en 2004 (RFC 3720, puis RFC 7143).
Ce protocole apporte sa propre terminologie :
- Logical Unit Number (LUN) : un nombre permettant d’identifier un disque accessible au travers de iSCSI. En plus d’être un simple identifiant, le terme est aussi utilisé pour parler de l’espace de stockage ainsi exposé au travers du protocole iSCSI ;
- Cible : une unité de stockage à laquelle un client iSCSI peut se connecter. En bref, c’est une entité logique fonctionnant comme un serveur et englobant un ensemble de LUN (un ensemble d’espaces de stockage) ;
- Initiateur : un client se connectant à une cible pour accéder à un LUN.
Aussi, il faut comprendre que iSCSI offre un accès bas niveau à un espace de stockage. Par conséquent, il n’y a pas de mécanisme spécifique à un accès par plusieurs utilisateurs à la fois. Certains serveurs offrent une option bloquant la connexion à la cible si un client est déjà connecté. Une solution est d’utiliser un système de fichiers supportant les verrous, tel que VMFS.
I-A-8. Choisir le bon service▲
Dans la plupart des cas, vous aurez le choix du protocole à utiliser. En effet, un NAS supporte généralement tous les protocoles cités ci-dessus. À l’inverse, une box internet pourra ne proposer qu’un seul protocole, sans laisser de choix.
Par conséquent, un premier choix peut dépendre des machines qui se connectent à votre serveur. En effet, une machine fonctionnant avec Windows ne pourra pas lire (nativement) un dossier partagé à travers le protocole AFP. De la même façon, le support natif des partages NFS n’existe que sur Windows Pro et Enterprise. Ainsi, parmi le trio AFP/NFS/SMB, le choix le mieux supporté sera SMB. D’ailleurs, c’est certainement ce protocole qui a été utilisé pour les machines pour lesquels vous n’avez pas le choix (par exemple, la box internet).
Alternativement, si vous privilégiez les fonctionnalités, votre choix pourra être tout autre. Notamment, le protocole iSCSI propose une approche totalement différente répondant à des besoins particuliers. Aussi, un protocole plus simple, tel que FTP ou WebDAV peut suffire, suivant la façon dont les clients vont s’y connecter ou ce qu’ils ont le droit de faire avec les fichiers.
Finalement, SFTP est aussi une solution immédiate pour peu que la machine serveur propose un serveur SSH (chose immédiate sous Linux ou mac OS).
En bref, SMB est très pratique, le plus répandu, permet le travail collaboratif et est certainement le plus simple à mettre en place.
I-B. Configuration du client▲
La configuration de la (ou des) machine(s) cliente(s) permet d’accéder aux fichiers stockés sur le serveur. Pour réaliser cette opération de connexion, il sera nécessaire de connaître les informations suivantes :
- SERVER : l’adresse IP ou le nom réseau du serveur fournissant les fichiers ;
- USER : le nom de l’utilisateur avec lequel se connecter sur le serveur ;
- PASS : le mot de passe associé à USER ;
- PARTAGE : le nom du dossier exposé par le serveur.
I-B-1. Windows▲
Comme écrit ci-dessus, Windows 10 ne propose nativement que de se connecter aux serveurs SMB.
Pour le protocole NFS, un client approprié est installable à travers le gestionnaire de services Windows (accessible depuis le Panneau de configuration → Programmes et fonctionnalités). Toutefois, ce client n’est disponible que dans Windows 10 Professionnel. Pour Windows Home, il faudra utiliser une solution non native payante ou gratuiteNFS.
I-B-1-a. SMB▲
Pour se connecter au NAS grâce au protocole SMB, rien de plus simple :
- ouvrir le poste de travail ;
- dans la colonne de gauche, cliquer sur « Réseau » ;
- si besoin (Windows nous en informe le cas échéant), activer la découverte du réseau ;
- le NAS apparaît et on peut double cliquer dessus pour s’y connecter.
I-B-1-b. NFS▲
Sur Windows 10 Professionnel, vous pouvez monter le dossier partagé sur NFS grâce à la commande mount :
mount -u:USER -p:PASS \\NAS\PARTAGE\ Z:
ce qui ajoute le lecteur Z dans le poste de travail.
I-B-1-c. Lecteur réseau▲
L’explorateur de fichiers de Windows permet d’ajouter des partages SMB, FTP et WebDAV à l’arborescence affichée par le poste de travail. Pour cela, faites un clic droit « Ajouter un emplacement réseau » et spécifiez l’emplacement :
- ftp://NAS pour le serveur FTPÂ ;
- http://NAS:5000/PARTAGE pour le serveur WebDAVÂ ;
- \\NAS pour le serveur SMB.
Pour les versions de Windows disposant du support de NFS, il est aussi possible d’accéder au partage sur le serveur par ce menu.
I-B-1-d. Logiciels tiers▲
I-B-1-d-i. NFS▲
Pour les versions de Windows ne proposant pas le client NFS, il sera nécessaire d’utiliser un logiciel tiers. En voici une liste :
« nekodrive » et « CITI » doivent être compilés pour être utilisés. Par conséquent, NFSClient est plus simple à installer.
Pour réussir l’installation, il est préférable d’indiquer ne pas vouloir installer les paquets « Redistribuable Visual C++ 2013 ».
Au lancement du logiciel, celui-ci demandera les informations nécessaires pour se connecter au serveur.
Après avoir validé les informations de connexion, vous pouvez obtenir une erreur (exception C#), et ce, même si la connexion a réussi. En lisant l’erreur, on peut comprendre que c’est un problème de droit. Dans un tel cas, la solution peut être de changer le dossier distant « Remote point ».
Le programme offre une interface divisée en deux, où la gauche représente les fichiers du client et la droite, les fichiers du serveur.
Malheureusement, le glisser/déposer de l’explorateur de fichiers vers la fenêtre de droite ne fonctionne pas.
I-B-1-d-ii. SFTP▲
I-B-1-d-iii. FTP▲
Encore une fois, FileZilla et WinSCP sont des solutions adaptées pour se connecter à un serveur FTP.
I-B-1-d-iv. WebDAV▲
WinSCP supporte aussi la connexion à un serveur WebDAV.
I-B-1-d-v. AFP▲
Le support du protocole AFP sous Windows semble inexistant. La seule solution serait d’utiliser le sous-système Linux de Windows afin de profiter des outils Linux.
I-B-1-e. ISCSI▲
Sous Windows, pour attacher un espace de stockage disponible au travers de iSCSI il est nécessaire d’utiliser l’initiateur iSCSI (iscsicpl.exe).
L’adresse du serveur doit être insérée dans le champ « Cible ». En cliquant sur le bouton « Connexion rapide… » le système trouvera les cibles disponibles. En sélectionnant une cible il devient alors possible de s’y connecter.
Une fois connecté à une cible, il est nécessaire d’aller dans l’onglet « Volumes et périphériques » pour monter les LUN. Le bouton « Configuration automatique » permet d’ajouter les LUN de la cible automatiquement.
Finalement, l’onglet « Configuration » permet de paramétrer les options avancées, comme le nom de l’initiateur, le secret de l’authentification CHAP ou plus simplement, de générer un rapport des connexions iSCSI sur le PC.
Maintenant, le disque distant est visible dans l’outil « Gestion des disques ». À partir de là , il est possible de l’initialiser (si le disque est vierge), de le formater et de le monter. Une fois fait, le disque est disponible dans le poste de travail et prêt être utilisé.
I-B-2. macOS▲
macOS supporte les protocoles SMB, AFP, NFS et FTP. Pour vous connecter à ceux-ci, vous devez utiliser Finder et cliquer sur « Aller » → « Connecter à un serveur ». Dans la petite fenêtre qui s’ouvre, vous devez renseigner l’adresse du NAS.
L’adresse à saisir dans Finder pour se connecter au serveur est la suivante :
- smb://SERVER pour SMBÂ ;
- afp://SERVER.local pour AFPÂ ;
- nfs://SERVER/PARTAGE pour NFSÂ ;
- ftp:// SERVER pour FTPÂ ;
- http://SERVER:5005/PARTAGE/ pour WebDAV.
Le service NFS peut ne pas avoir été démarré. Pour le démarrer, vous devez écrire dans le Terminal :
sudo nfs start
I-B-2-a. SFTP▲
macOS ne propose qu’une solution en ligne de commande (OpenSSH). Alternativement, vous pouvez utiliser OSXFuse et SSHFS, comme vous le feriez avec Linux, vous pouvez aussi utiliser un logiciel graphique tel que ExpanDrive ou Fetch.
I-B-3. Linux▲
Linux supporte tous les protocoles mentionnés précédemment. Comme toujours, vous pouvez vous connecter au NAS en utilisant la ligne de commande ou l’interface graphique.
I-B-3-a. Ligne de commande▲
Voici un récapitulatif des commandes à utiliser pour monter votre dossier partagé dans l’arborescence de votre système Linux. De plus, les lignes fstab sont précisées, pour un montage automatique au démarrage du système. Alternativement, vous pouvez mettre en place un montage par AutoFS, permettant de ne se connecter au serveur que lorsque l’utilisateur en a besoin.
Pour réussir le montage des dossiers partagés, il faut les paquets suivants :
- cifs-utils pour SMBÂ ;
- afpfs_ng pour AFPÂ ;
- nfs-utils pour NFSÂ ;
- curlftpfs pour FTPÂ ;
- sshfs pour SFTPÂ ;
- davfs2 pour WebDAV.
I-B-3-a-i. Montage manuel▲
# SMB
mount -t cifs -o username
=
USER,password
=
PASS,_netdev //SERVER/PARTAGE /mnt/nas
# NFS
mount -v -t nfs SERVER:PARTAGE /mnt/nas
# AFP
afp_client mount -u USER -p PASS SERVER:PARTAGE /mnt/nas
# ou
mount_afp afp://USER:PASS@SERVER/PARTAGE /mnt/nas/
# SSH
sshfs USER@SERVER:/share/PARTAGE/ /mnt/nas
# FTP
curlftpfs -o user
=
USER:PASS ftp://SERVER /mnt/nas
# WebDAV
mount -t davfs http://SERVER:5005
/mnt/nas
I-B-3-a-ii. FSTAB▲
# SMB
//SERVER/PARTAGE /mnt/nas cifs _netdev,username
=
USER,password
=
PASS 0
0
# NFS
SERVER:PARTAGE /mnt/nas nfs _netdev 0
0
# AFP
afpfs#afp://USER:PASS@SERVER/PARTAGE /mnt/nas fuse user=USER,group=GROUP 0 0
# SSH
USER@SERVER:/share/PARTAGE/ /mnt/nas fuse.sshfs allow_other,_netdev 0
0
# FTP
curlftpfs#USER:PASS@SERVER /mnt/nas fuse allow_other,_netdev 0 0
# WebDAV
http://SERVER:5005
/mnt/nas davfs _netdev,uid
=
USER,gid
=
USER 0
0
I-B-3-a-iii. AutoFS▲
# SMB
smb -fstype
=
cifs,username
=
USER,password
=
PASS ://SERVER/PARTAGE
# NFS
nfs -fstype
=
nfs,vers
=
3
,rw SERVER:/PARTAGE
# AFP
afp -fstype
=
fuse:afpfs\#afp\://USER:PASS\SERVER/PARTAGE
# SSH
ssh -fstype
=
fuse,rw,allow_other,IdentityFile
=
/home/user/.ssh/id_rsa:sshfs\#USER@SERVER\:/
# FTP
ftp -fstype
=
fuse,allow_other :curlftpfs\#USER:PASS@SERVER
# ou
ftp -fstype
=
fuse,allow_other,user
=
USER:PASS :curlftpfs\#SERVER
# WebDAV
webdav -fstype
=
davfs,uid
=
USER,gid
=
USER http://SERVER
I-B-3-a-iv. Notes▲
Pour SMB/CIFS, il est possible de spécifier la version (par exemple, vers=3) et le domaine (domain=WORKGROUP).
Avec le protocole NFS, le système utilisera par défaut la version la plus récente. Si le serveur ne le supporte pas, le montage échoue. Vous pouvez spécifier une autre version avec l’option vers=3.
Pour le montage WebDAV, le mot de passe doit obligatoirement être spécifié dans le fichier /etc/davfs/secrets :
/mnt/nas USER PASS
En cas d’erreur, vous pouvez trouver la raison en ajoutant l’option -v à la commande mount, ou en regardant les messages envoyés par le noyau.
I-B-3-a-v. Sécurité▲
Comme vu dans les exemples ci-dessus, le mot de passe est parfois stocké directement dans le fichier /etc/fstab. Cela est problématique, car tout utilisateur peut lire le fichier et donc, lire les mots de passe. La solution est de stocker le mot de passe dans un fichier intermédiaire (comme cela est fait avec le fichier « secrets » de davfs2). Ce fichier contenant les identifiants devra appartenir à root et avoir la permission 600 (lecture et écriture uniquement pour root). Voici un récapitulatif des parades :
Protocole |
Option dans fstab |
Exemple de fichier |
SMB |
credentials=/root/pass |
Sélectionnez
|
WebDAV |
/etc/davfs/secrets |
I-B-3-a-vi. iSCSI▲
Sous Linux, la détection et le montage d’un disque réseau iSCSI se fait grâce au paquet « open-iscsi ». Ce paquet installe la commande iscsiadm permettant de manipuler les périphériques iSCSI. La commande ne fonctionnera que si le démon iscsid est démarré.
Les commandes iscsiadm doivent être exécutées en tant que root.
La détection d’un périphérique se fait avec la commande :
iscsiadm --mode discovery -t sendtargets --portal NAS
NAS est à remplacer par l’adresse IP ou le nom réseau du NAS.
Le résultat de la commande fournit les cibles disponibles.
Ensuite, vous pouvez essayer de vous connecter à un LUN avec la commande :
iscsiadm --mode node --targetname iqn.2004-04.com.qnap.ts-253d:iscsi.test2.4dcc3a --portal NAS --login
L’identifiant iqn. est un de ceux retournés par la première commande.
Si la connexion effectuée dans la commande ci-dessus réussit, le LUN est dorénavant disponible dans l’arborescence du système. Cela peut être confirmé avec :
fdisk -l
Notamment, dans le retour de la commande fdisk, les disques iSCSI portent la mention :
Modèle de disque : iSCSI Storage
La déconnexion du LUN est possible avec l’option --logout :
iscsiadm --mode node --targetname iqn.2004-04.com.qnap.ts-253d:iscsi.test2.4dcc3a --portal NAS --logout
I-B-3-b. Interface graphique▲
L’explorateur de fichiers est capable de se connecter aux dossiers partagés. Si cela ne fonctionne pas immédiatement, il faut installer le paquet gvfs (ou gvfs-backends). Les partages réseau SMB, AFP, FTP, WebDAV s’afficheront automatiquement dans l’emplacement dédié.
KDE ne détecte pas les partages AFP.
I-B-4. Mobiles▲
Les mobiles et tablettes sous iOS ou Android ne proposent pas de solutions natives pour se connecter à un dossier partagé distant. Pour réussir, il sera nécessaire d’installer des applications tierces.
I-B-4-a. Android▲
Il est possible de se connecter à un serveur SMB ou FTP avec Android. Attention, pour cela il est nécessaire d’utiliser une application externe, comme X-plore File Manager.
De plus, les navigateurs de fichiers supportent plus couramment FTP que SMB.
I-B-4-b. iOS▲
L’explorateur natif de fichiers (« Fichiers ») disponible depuis iOS 11 permet, depuis iOS 13, de se connecter à un serveur SMB.
Autrement, il sera nécessaire d’installer une application tierce, telle que FE File Explorer qui permet de se connecter aux serveurs SMB et FTP.
I-B-5. Autres▲
Si seul l’accès aux fichiers (téléchargement/téléversement) vous intéresse, vous pouvez utiliser FileZilla qui est multiplate-forme et qui est capable de se connecter en FTP et SFTP.
De plus, Cyberduck offre des services similaires, tout en supportant WebDAV, mais n’est disponible que sur Windows et macOS.
De plus, chrtophe a écrit un tutoriel sur le montage d’un partage SSH, que vous retrouverez ici.
II. Conclusion▲
Nous avons vu comment accéder aux fichiers d’un serveur, quels sont les protocoles servant cet usage et comment rendre cet accès le plus transparent possible. Vous pouvez maintenant utiliser un NAS, un ordinateur mono-carte ou une box Internet comme extension à votre espace de stockage ou comme espace de partage des données.