Documentations Orange PiTransformer votre Orange Pi en VPN

Documentation pour transformer votre Orange Pi en VPN

Dans un monde où tout est connecté, votre maison héberge sans doute une multitude de solutions variées, que ce soit Home Assistant, un NAS, Navidrome ou d’autres services.

Vous vous posez sûrement la question suivante : comment les emporter avec vous sans les exposer à la vue de tous ?

C’est là qu’un VPN entre en jeu. Avec un VPN, vous n’aurez à exposer qu’une seule connexion à l’extérieur, celle du VPN, tout en gardant vos données sécurisées grâce à un système de clés.

Une fois votre VPN configuré, vous pourrez créer des clients pour vos appareils et y accéder depuis l’extérieur en toute sécurité. Le mariage de WireGuard et d’un Orange Pi constitue donc une solution économique et efficace pour sécuriser votre accès à distance.

Mise en place de WireGuard

💡

Avant de commencer ce tutoriel, vous aurez besoin d’avoir déjà configurer votre Orange Pi !

Une fois connecté à votre Orange Pi à votre orangepi.

Installation de WireGuard

apt update
apt install wireguard

Génération des clés

WireGuard utilise des paires de clés pour chiffrer les communications. Vous devrez générer une clé privée et une clé publique pour chaque appareil qui se connectera au VPN.

Cette commande génère la clé publique et la clé privée dans deux fichiers appelés privatekey et publickey.

wg genkey | tee privatekey | wg pubkey > publickey

Configuration du serveur

Créez un fichier de configuration pour le serveur WireGuard, généralement situé dans /etc/wireguard/wg0.conf . Voici un exemple de configuration de base :

[Interface]
PrivateKey = <votre_clé_privée_serveur>
Address = 10.0.0.1/24
ListenPort = 51820

Il ne vous manque plus qu’à ajouter la clé privée du serveur qui se trouve dans le fichier privatekey.

Vous pouvez afficher la clé privée du serveur en faisant :

cat privatekey

Nous allons donc ajouter un client à notre VPN. Pour cela, vous devez générer la clé privée et la clé publique de votre client avec cette commande

wg genkey | tee clientprivatekey | wg pubkey > clientpublickey

Ouvrez votre fichier de configuration de WireGuard et ajoutez les lignes suivantes :

[Peer]
PublicKey = <clé_publique_du_client>
AllowedIPs = 10.0.0.2/32

Il ne vous manque plus qu’à ajouter la clé publique du client qui se trouve dans le fichier privatekey.

Vous pouvez afficher la clé publique du client en faisant :

cat clientpublickey

Cela doit donner ceci !

[Interface]
PrivateKey = <votre_clé_privée_serveur>
Address = 10.0.0.1/24
ListenPort = 51820
 
[Peer]
PublicKey = <clé_publique_du_client>
AllowedIPs = 10.0.0.2/32
⚠️

Faites attention à ne pas avoir de doublons d’IP dans votre réseau VPN si vous ajoutez d’autres clients !

Configuration du client

[Interface]
PrivateKey = <clé_privée_client>
Address = 10.0.0.2/32
 
[Peer]
PublicKey = <clé_publique_du_server>
AllowedIPs = 10.0.0.0/24
Endpoint = Votre_IP_Publique:51820
PersistentKeepalive = 25

Il ne vous manque plus qu’à ajouter la clé priver du client qui se trouve dans le fichier clientprivatekey. Et d’ajouter la clé publique du serveur qui se trouve dans le fichier publickey.

Si dans AllowedIPs vous mettez AllowedIPs = 0.0.0.0/0, le client sortira par l’Internet de votre serveur, donc l’adresse IP publique de votre client sera la même que celle de votre serveur lors de sa navigation sur Internet.

Vous avez donc terminé la partie configuration. La configuration du serveur et du client est terminée, nous allons passer à la partie mise en fonctionnement.

Mise en fonctionnement

Vous devrez ouvrir le port WireGuard, c’est-à-dire le port 51820, sur votre box. Pour cela, vous pouvez retrouver la procédure dans notre article “Ouvrir un Port sur sa Box ”.

⚠️

Si vous ne faites pas cela, votre VPN ne pourra fonctionner que dans votre réseau domestique.

Vous pouvez donc démarrer votre VPN en faisant :

systemctl start wg-quick@wg0

Si vous souhaitez que votre VPN démarre en même temps que votre serveur, faites la commande suivante :

systemctl enable wg-quick@wg0

Votre VPN est donc maintenant opérationnel. Vous pouvez installer le client WireGuard en suivant le lien ici et ajouter le fichier client que nous avons créé ci-dessus.

Configuration du client Windows

Une fois que vous aurez installé le client Windows que vous pouvez télécharger ici, vous pourrez le démarrer et cela vous donnera ceci.

ClientWindows

Vous pouvez cliquer sur ‘Importer’ pour importer votre fichier de client.

⚠️

Faites attention, le format des fichiers clients doit être en .conf !

ClientWindows

Une fois importé, vous devrez le voir apparaître. Vous pouvez donc cliquer sur Activer pour le démarrer.

⚠️

Faites attention, activer ne veut pas dire que le VPN est réellement fonctionnel !

Vous pouvez savoir s’il fonctionne en regardant plus bas, sous ‘Activer’. Vous pourrez voir le dernier établissement de la liaison et le transfert. Si vous voyez qu’il y a des ‘envoyés’ et des ‘reçus’, c’est plutôt bon signe.

ClientWindows

Configuration d’un client debian

Pour la configuration d’un client sur Debian, cela reste assez similaire à la création d’un serveur sur Debian.

Installation de WireGuard

apt update
apt install wireguard

Importation du client WireGuard

Une fois WireGuard installé, vous pouvez donc mettre le fichier du client en .conf dans /etc/wireguard

Vous pouvez donc démarrer votre Client VPN en faisant :

systemctl start wg-quick@Nom_du_Fichier_CONF

Si vous souhaitez que votre Client VPN démarre en même temps que votre machine / serveur, faites la commande suivante :

systemctl enable wg-quick@Nom_du_Fichier_CONF

Exemple :

systemctl enable wg-quick@vpnmaison

Un peu d’automatisation : avec ce script, il vous est possible de rendre la création de clients plus rapide.

Son fonctionnement est simple : vous devez mettre les bonnes valeurs dans les variables $plageip, $ipvpn, et $pubeyvpn, et veiller à ce que votre fichier soit bien nommé wg0.conf

Une fois cela fait, faites attention à ce que le script se trouve dans un dossier, car une fois en fonctionnement, il vous demandera les informations dont il a besoin. Ensuite, il créera des fichiers au nom des clients pour les ranger proprement. Il ne vous suffira plus que de redémarrer le VPN pour que cela soit pris en compte. Attention aux doublons, car le script ne les détecte pas.

#!/bin/bash
##MakeInLab
 
#Partie Generation
genkey() {
  wg genkey | tee privkey$nom | wg pubkey > pubkey$nom
  privkey=$(cat privkey$nom)
  pubkey=$(cat pubkey$nom)
  echo "---------------------------------------------------------------------"
  echo "La clée privée est : $privkey"
  echo "La clée public est : $pubkey"
  echo "---------------------------------------------------------------------"
  read -p "Quelle IP souhaitez-vous ? exemple [ 21 ] " ip
  tee -a /etc/wireguard/wg0.conf << EOF
 
[Peer]#$nom
PublicKey = $pubkey
AllowedIPs = $plage.$ip/32
EOF
  tee -a conf$nom.conf << EOF
[Interface]
PrivateKey = $privkey
Address = $plage.$ip/32
 
[Peer]
PublicKey = $pubkeyvpn
AllowedIPs = $plage.0/24
Endpoint = $ipvpn:51810
PersistentKeepalive = 25
EOF
}
#Variable pour choix de plage ip Exemple : 10.0.0 ou 172.16.0
plageip=XX.XX.XX
#Variable pour ip publique de votre box
ipvpn=XX.XX.XX.XX
#Variable de la cle publique serveur
pubkeyvpn=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx=
nom=$1
 
if [[ $# = 1 ]] ; then
        genkey
        mkdir ./$nom
        mv vpnmachine-$nom.conf ./$nom
        mv privkey$nom pubkey$nom ./$nom
else
        read -p "Pour qui est cette configuration ? [ Nom ] " nom
        genkey
        mkdir ./$nom
        mv conf$nom.conf ./$nom
        mv privkey$nom pubkey$nom ./$nom
fi

Cas pratique

Vous pouvez ajouter des clients à vos autres machines. Par exemple, si vous avez un autre Orange Pi qui héberge Navidrome, vous lui ajoutez un client. Cela permet aux autres clients de se connecter directement à son IP VPN pour accéder à Navidrome ou au service en question.

Donc, une fois les clients ajoutés au serveur qui héberge des services, vous créez des clients pour vos appareils (téléphone, tablette, PC). À l’extérieur de chez vous, vous lancez le VPN et pouvez accéder au service via leur IP VPN. Cela peut aussi être pratique pour ceux qui veulent héberger un serveur de jeu, comme Minecraft. Vous créez des clients VPN pour vos amis, et ils pourront se connecter au serveur sans ouvrir un port supplémentaire. Si vous mettez un client sur le serveur de jeu, ils n’auront qu’à entrer l’IP VPN pour se connecter.

En clair, avec le VPN, vous pouvez simplement ouvrir un seul port de votre box et avoir accès à une multitude de services, bien plus sécurisé que d’ouvrir un port pour chaque service. Cela vous offre une possibilité quasiment infinie, à faible coût, car un Orange Pi ne coûte pas cher, et côté consommation électrique, cela est très léger.