Freebox OS 4.1 : accédez aux données de la box depuis une machine virtuelle

Samba, Samba ! 40
Accès libre
image dediée
FAI TUTO
David Legrand

Depuis aujourd'hui, il est possible d'activer des machines virtuelles au sein de la Freebox Delta de Free. Une fois démarrées, celles-ci ont accès au réseau local, mais comment peuvent-elles lire ou écrire dans l'espace de stockage de la box ? Samba vient à votre rescousse.

La Freebox Delta de Free est un modem routeur classique, composé comme un micro PC. Il dispose d'un SoC ARM v8 à quatre cœurs, de 2 Go de mémoire, de multiples ports réseau, d'une puce Wi-Fi 5 (802.11ac, 160 MHz) et de quatre ports S-ATA permettant de connecter des HDD/SSD pouvant être utilisés dans une grappe RAID.

Depuis la mise à jour 4.1 de Freebox OS diffusée ce matin, il est possible d'y utiliser non seulement l'interface web proposée par Free, mais également n'importe quelle application à travers une machine virtuelle. Dans la pratique, il s'agit de simuler l'existence d'un petit ordinateur au sein de la box où l'on installe un système d'exploitation tel que Linux ou FreeBSD par exemple, puis toutes les applications que l'on souhaite.

De quoi héberger un petit site web, utiliser youtube-dl ou même des services plus complets comme Jeedom, YunoHost ou OwnCloud/NextCloud. Le tout en ayant accès à l'espace de stockage de la box, qui peut atteindre plusieurs To.

Comment accéder aux données de la Freebox Delta depuis une VM ?

Mais dans la pratique, comment faire ? En effet, la machine virtuelle a beau être intégrée à la Freebox Delta, du point de vue du réseau, elle est perçue comme une machine à part entière avec son propre OS, sa propre adresse IP, etc. Elle doit donc faire comme tout le monde : passer par un partage Samba.

Pour y parvenir avec un système Linux accessible uniquement en ligne de commande, il existe quelques outils simples à prendre en main. Pour commencer, il faut néanmoins disposer d'une machine virtuelle fonctionnelle. Nous en avons configuré une sous Debian 10, accessible via OpenSSH. Si vous ne savez pas comment faire, suivez le début de ce guide :

Une fois que c'est fait, vous pouvez installer un premier outil qui vous permettra de naviguer au sein des données de la Freebox Delta en exploitant Samba : smbclient.

sudo apt install smbclient

Lors de la procédure, il vous sera demandé si vous voulez laisser le serveur DHCP du réseau (celui de la Freebox en l'occcurrence) attribuer les noms WINS (Windows Internet Naming Service) de vos machines, répondez oui. Ensuite, vous pourrez voir la Freebox et son stockage partagé (adaptez l'IP et le mode de connexion si vous les avez modifiés) :

smbclient -L //192.168.0.254 -N

L'accès se faisant par défaut de manière anonyme, il faut éviter que l'on ne vous demande un mot de passe. C'est à cela que sert le « -N » à la fin de la ligne de commande. La capture ci-dessous montre qu'il existe un partage principal, nommé Freebox. On peut donc s'y connecter et naviguer à l'intérieur comme on le ferait dans un répertoire local :

Samba Freebox Delta VM

Pour cela, il existe quelques commandes que vous pouvez taper :

smbclient //192.168.0.254/Freebox -N
cd VMs
ls
cd ../Enregistrements
help

Cela vous permet respectivement de vous connecter à la Freebox, de vous rendre dans le répertoire contenant les fichiers des machines virtuelles, de les lister, de vous rendre dans le répertoire contenant les enregistrements TV puis d'afficher l'ensemble des commandes disponibles. Il est également possible de copier des fichiers (get, put).

Mais pour transférer des données entre la machine virtuelle et la Freebox, le plus simple est de permettre à la première de voir l'espace de stockage de la seconde, considéré comme « distant », comme un répertoire classique. Dans les systèmes Unix tels que Linux, on parle alors de point de montage. On utilise pour cela CIFS (Common Internet File System) :

sudo apt install cifs-utils

Il suffit ensuite de créer un répertoire où sera « monté » le partage réseau de la Freebox. Pour cela il faut utiliser un compte invité et forcer la version 1.0 du protocole. Si vous ne le faites pas, une erreur sera affichée. Free nous confirme ne supporter que SMBv1 suite au passage de Samba à la licence GPLv3, cela ne devrait donc pas évoluer. 

sudo mkdir -p /mnt/freebox
sudo mount -t cifs -o guest,vers=1.0,uid=1000,gid=1000 //192.168.0.254/Freebox /mnt/freebox
cd /mnt/freebox/VMs
ls

Avec ces lignes de commandes on crée un répertoire où l'on monte ensuite le dossier partagé principal de la Freebox, comme on pourrait le faire avec n'importe quel autre dossier contenu dans celle-ci. (Freebox/Vidéos par exemple).

Le paramètre guest permet d'éviter d'avoir à entrer un mot de passe. Puisque l'on est obligé de lancer cette commande comme administrateur (sudo) afin d'exploiter le type CIFS, on précise les valeurs guid/uid permettant d'indiquer à quel utilisateur/groupe appartiendront les fichiers montés. Ils correspondent ici à l'utilisateur courant.

Pour vous assurer que ce sont les bons, vous pouvez utiliser ces commandes :

id -u nom_utilisateur
id -g nom_utilisateur

Les autres lignes de commandes permettent de se rendre dans le répertoire contenant les fichiers des machines virtuelles afin de les lister. Avec cette méthode, vous pouvez copier simplement des fichiers depuis ou vers la Freebox, mais aussi les utiliser pour vos différentes applications ou des sauvegardes. Ce, comme s'ils étaient présents au sein de la VM.

Si vous activez une redirection de port, cela peut également permettre un accès distant aux fichiers de la Freebox à travers la machine virtuelle, avec des dispositifs comme SSHFS-Win par exemple. 

Pour aller plus loin, vous pouvez automatiser ce montage au démarrage. Pour cela, il faut passer par le fichier fstab :

sudo nano /etc/fstab

Ajoutez cette ligne (à adapter si besoin), enregistrez (CTRL+X) et redémarrez le serveur (sudo reboot) :

//192.168.0.254/Freebox /mnt/freebox cifs guest,vers=1.0,uid=1000,gid=1000 0 0

chargement
Chargement des commentaires...