howto:raspberry-pi:samba_pivpn

Créer un simple NAS avec SAMBA et PiVPN

Nous allons voir ici comment créer un petit NAS chez vous, simplement à l'aide d'un Raspberry Pi et de ces deux logiciels : SAMBA et PiVPN. Le principe sera donc partager un ou plusieurs dossiers avec SAMBA, puis d'y accéder de n'importe où grâce à PiVPN.

Ces deux programmes sont faciles à installer, à prendre en main et à contrôler. Ils sont de plus très peu gourmands en énergie, ce qui convient très bien à l'utilisation du Raspberry ici.

J'ai ici utilisé un Raspberry 3B+, connecté au réseau avec un câble ethernet, et la distribution Raspbian Stretch Lite disponible ici.

#SAMBA Nous allons donc utiliser SAMBA pour ce tuto. L’intérêt de ce logiciel qui va nous servir à partager des fichiers via le protocole smb, est qu'il utilisable tant par des machines GNU/Linux que sous Windows. Nous aurons donc accès à nos fichiers aussi bien depuis votre téléphone (Android étant basé sur Linux) que depuis votre PC.

Tout d'abord, nous allons attribuer une IP statique à notre Raspberry Pi, cela permettra d'y accéder bien plus facilement par la suite. Pour cela le plus simple reste d'aller faire un tour sur votre page de configuration de routeur (192.168.<0/1>.1 ou 192.168.<0/1>.254 selon les cas) et d'y configurer un bail statique qui sort de la plage DHCP pour votre appareil Raspi.

Assurez-vous ensuite de mettre à jour vos paquets :

`sudo apt-get update && sudo apt-get upgrade`

Avant d'installer le logiciel proprement dit, il va falloir créer notre espace de stockage : il nous faut pour cela nous munir d'une clé USB ou d'un disque de données (HDD), que nous allons brancher sur le Raspberry Pi. C'est ce stockage que nous allons partager par la suite avec SAMBA.

Une fois branché, nous devons alors connaitre le nom qui a été attribué au matériel :

`sudo fdisk -l`

Repérez dans la liste votre espace de stockage, qui doit porter un nom du style : sda1 ou sdb1.

Notre périphérique doit être formaté en ext4, format réservé à Linux, qui à l'avantage de pouvoir gérer les droits de lecture, d'écriture et d'exécution, ce qui est essentiel dans notre cas. Pour cela, on démonte le stockage puis on lance la commande de formatage (le sda1 est à ajuster au besoin) :

``` umount /dev/sda1 sudo mkfs.ext4 /dev/sda1 ```

Une fois cela fait, on ne va pas re-monter le périphérique de suite. En effet, notre but est d'aller le monter dans un dossier créé spécialement, auquel nous attribuerons les droits que nous voulons.

Nous allons donc ici créer un répertoire d'accueil du montage dans /home/partage , que je vais appelé NAS. L'emplacement et le nom du dossier sont bien sûr entièrement personnalisables.

``` sudo mkdir /home/partage sudo mkdir /home/partage/NAS ```

Nous pouvons alors monter le périphérique dans notre répertoire : `sudo mount /dev/sda1 /home/partage/NAS`

Il nous faut ensuite donner les droits d'accès au stockage ainsi créé : `sudo chmod 777 -R /home/partage/NAS`

Enfin, nous allons créer 3 dossiers, correspondant à 3 utilisation différentes :

  • le répertoire Perso, accessible uniquement avec un identifiant et un mot de passe,
  • le répertoire Media, accessible et lisible par tout le monde, mais modifiable juste par nous,
  • et le répertoire Public, accessible et modifiable par tout le monde.

``` sudo mkdir /home/partage/NAS/Public sudo mkdir /home/partage/NAS/Media sudo mkdir /home/partage/NAS/Perso ```

Voilà, notre stockage est prêt, il ne manque plus que la configuration et la gestion des accès par SAMBA. Toutefois, une dernière manipulation : nous allons rendre automatique à chaque démarrage le montage de notre périphérique dans le dossier NAS. Pour cela, il faut aller éditer le fichier fstab (`sudo nano /etc/fstab`) puis rajouter cette ligne à la fin du fichier :

`/dev/sda1 /home/partage/NAS auto noatime,nofail 0 0`

Il est alors conseillé de reboot votre appareil avant d'entamer la suite. Cela vous permettra de plus de vérifier sur le montage se fait bien de façon automatique.

Nous avons bien préparé le terrain en amont, voici donc arrivé le moment d'installer SAMBA ! Le paquet est présent dans les dépôts de Raspbian, nous avons alors juste une simple commande à rentrer :

`sudo apt-get install samba samba-common-bin`

Une fois installé, nous allons devoir bien sûr configurer le tout. Nous effectuons donc une copie du fichier de configuration (bonne pratique pour avoir une sauvegarde en cas de fausse manipulation), puis nous créons le nouveau fichier :

``` sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.old sudo nano /etc/samba/smb.conf ```

Voici ensuite ce que l'on va mettre dans le fichier :

``` #Configuration générale [global]

 workgroup = WORKGROUP
 server string = %h server
 # nom de votre NAS
 netbios name = NAS
 dns proxy = no
 # un endroit pour stocker les logs / debug
 log file = /var/log/samba/log.%m
 max log size = 1000
 syslog = 0
 panic action = /usr/share/samba/panic-action %d
 # Authentication
 security = user
 encrypt passwords = true
 passdb backend = tdbsam
 obey pam restrictions = yes
 unix password sync = yes
 passwd program = /usr/bin/passwd %u
 passwd chat = *Enter\snew\s*\spassword:* %n\n *Retype\snew\s*\spassword:* %n\n *password\supdated\ssuccessfully* .
 pam password change = yes
 map to guest = bad user
 usershare allow guests = yes

# Nos différents partages : vous pouvez en créer plusieurs à partir de ces 3 modèles selon vos besoins [Public]

 path =/home/partage/NAS/Public
 read only = no
 locking = no
 guest ok = yes
 force user = pi

[Media]

 path =/home/partage/NAS/Media
 read only = yes
 locking = no
 guest ok = yes
 force user = pi

[Perso]

 browseable = yes
 path =/home/partage/NAS/Perso
 writable = yes
 valid users = toto
 create mask = 0700
 directory mask = 0700

```

Vous remarquerez l'utilisateur toto : ce sera notre utilisateur qui gérera le dossier Perso (nom à modifier évidemment). Il faut donc maintenant créer ce compte pour que l’on puisse ouvrir ce dossier partagé avec cet utilisateur.

``` sudo user add toto -m -G users sudo passwd toto ```

On associe l'utilisateur à SAMBA. On en profite pour lui commniquer le mot de passe de l'utilisateur pi, qui va nous servir à modifier le dossier Media :

``` sudo smbpasswd -a toto sudo smbpasswd -a pi ```

Ensuite on donne à cet utilisateur les droits d’accès au dossier Perso, et les droits d'accès pour Pi sur Media : ``` sudo chown toto:toto /home/partage/NAS/Perso/ sudo chown pi:pi /home/partage/NAS/Media ```

Voilà maintenant tout est enfin prêt ! Il n’y a plus qu’à relancer le service Samba pour appliquer les modifications faites dans le fichier de configuration :

`sudo /etc/init.d/samba restart`

Notre système de partage de fichiers et normalement bien en place, mais il nous faut tester ! Pour cela, depuis le gestionnaire de fichiers de votre PC, tapez dans la barre d'adresse : `\\<ADRESSE_IP_DE_VOTRE_RPI>`. Par exemple, moi je tape `\\192.168.1.100`, et j'arrive sur cette page :

Ensuite, tentez de créer un ficher dans Public puis dans Media : dans le premier cas cela devrait marcher, mais pas dans le second ! Puis, ouvrez le dossier Perso, vous devriez voir apparaitre une fenêtre qui vous demande de vous identifiez (c'est là qu'intervient l'utilisateur que nous avons créé plus haut) :

En dernier point, il nous faut pouvoir modifier le contenu du dossier Media. Nous allons utiliser pour cela l'utilisateur pi (à qui nous avons donné les droits) et le protocole SCP. Ce protocole permet de transférer des fichiers d'un ordinateur à un autre via SSH.

Depuis un terminal Linux :

`sudo scp /chemin_vers_mon_fichier/mon_fichier pi@<ADRESSE_IP_DE_VOTRE_RPI>:/home/partage/NAS/Media/mon_fichier`

Depuis une machine Windows, nous avons également la possibilité de le faire, via une interface graphique du logiciel libre WinSCP. Le logiciel nous permet alors de nous connecter avec l'utilisateur que l'on veut sur notre RPi.

Il est alors très simple de téléverser un fichier de votre PC sur le Raspberry, et vice-versa.

# PiVPN

Si la configuration de votre NAS s'est déroulée sans soucis, vous pouvez à présent passer à l'étape supérieure, et intégrer votre serveur SAMBA à PiVPN afin d'y accéder de partout (ou presque !).

Comme vous vous en doutez PiVPN va créer un VPN qui permet depuis l'extérieur (en dehors de votre réseau local) de se connecter chez vous, et plus précisément sur votre Raspberry. Vous allez alors pouvoir profiter du partage du vos fichiers même en dehors de chez vous. Ceci a ses limites bien entendu, dépendant notamment de votre connexion externe et interne. Malgré tout, ça ne coute rien d'essayer et puis PiVPN peut bien sûr servir à bien d'autres projets, un VPN a de multiples applications possibles.

Avant de s'attaquer à l'installation à proprement parlée, il va nous falloir effectuer une petite manipulation : nous allons devoir rediriger un port de notre box vers un port du Raspberry. Ainsi lors d'une connexion extérieure sur ce port à l'aide du VPN, tout passera par notre appareil.

Pour effectuer cette redirection de port, il faut se rendre sur la page de configuration de votre routeur.

- Exemple pour une box Orange :

- Exemple pour une box Free :

Vous remarquerez l'utilisation du port 1194 par défaut, et le choix du protocole UDP (si vous ne savez pas choisir entre TCP et UDP, prenez UPD par défaut).

Nous pouvons maintenant attaquer l'installation. Nous aurons besoin ici de curl, normalement déjà installé sur Raspbian Stretch :

`sudo apt-get install curl`

Ensuite lancez l’installation par :

`curl -L https://install.pivpn.io | bash`

Déroulez l’installateur, avec à l'esprit que si vous ne savez pas répondre laissez les valeurs par défaut.

Il va vous être demandé à un moment de choisir des serveurs DNS sur lesquels vous connecter. Je ne peux que vous conseiller d'éviter ceux par défaut, détenus par Google, et de plutôt choisir ceux proposés par FDN qui fournit des DNS respectueux de votre vie privée ou d'aller faire un tour sur OpenNIC qui vous donne les DNS privés les plus proches de vous. Si toutefois vous vous sentez un peu perdu optez pour ceux de CloudFare (1.1.1.1) qui sont proposés directement dans la liste.

Arrivé à cette page, deux possibilités : soit laisser l'adresse IP chiffrée telle quelle, soit utiliser les services de No IP qui nous fournissent une adresse textuelle sous la forme `<user>.ddns.net` . L'avantage de la deuxième option est qu'elle prévient d'un éventuel changement d'adresse IP, mais demande quelques manipulations supplémentaires.

Une fois au bout, faîtes le reboot proposé par le programme puis une fois réactivé tapez simplement : `pivpn -a`

Il vous sera ensuite demandé un nom pour le profil VPN, puis un mot de passe pour sécuriser votre tunnel. Enfin, PiVPN vous indique alors qu'il a mis à disposition un fichier `ovpn` qui se situe :

`/home/pi/ovpns/<nom_du_profil>.ovpn`

Ne reste plus qu'à le copier sur une clé USB ou le transférer sur votre ordinateur via SCP, puis l'exploiter avec OpenVPN, logiciel libre de connexion VPN disponible sur toutes les plateformes, y compris Android.

Tout est en place ? Il ne reste plus qu'à tester !

Pour cela connectez-vous sur un réseau extérieur (pas votre réseau local !), puis à l'aide de votre fichier `ovpn` et d'OpenVPN connectez-vous sur votre Raspberry. Dans notre cas, nous pouvons tester si le tout marche à l'aide d'un gestionnaire de fichiers, dans lequel vous aller rentrer l'adresse : `\\<ADRESSE_IP_DE_VOTRE_RPI>`. Si tout marche, vous pourrez également remarquer que vous avez non seulement accès aux fichiers partagés depuis votre Raspberry Pi, mais également à tous ceux qui se situent sur votre réseau local (depuis un PC Windows il est facile de partager des fichiers via le gestionnaire de fichiers).

Article lié : Filtrer les publicités avec Pi-hole et PiVPN

  • howto/raspberry-pi/samba_pivpn.txt
  • Dernière modification: 2021/06/24 15:46
  • (modification externe)