Monter son propre VPN sous raspberry ou Debian

Monter son propre VPN sous raspberry ou Debian

Quelques remarques avant tout :

NOTE : Ces explications sont les acheminements à suivre afin de valider une installation derrière une IP dynamique comme nous en avons en Belgique, notamment chez l’isp Proximus.

Certaines informations n’ont pas d’utilités si vous êtes en IP statique globale.

Afin de debug en cas de panne ou de problème, avant – après ou pendant l’installation, il y a deux écoles :

Soit vous tapez un « sudo rm -rf /* » et vous envoyez tout péter (Attention toute marche arrière serait impossible) ;

Soit vous vous démerdez au mieux en cherchant sur le net et en lisant vos logs (Wireshark pourrait être utile afin de suivre les paquets).

Préparation au combat

Tout d’abord – Sachez que j’effectue le travail sur un rapsberry pi 4 mais ce tuto fonctionnera pour un Debian ou tout autre fork de ce dernier.

Il va falloir pour terminer ce tuto :

  • Les accès root ;
  • La commande curl ;
  • Une adresse mail ;
  • L’accès à votre modem ;
  • Un compte chez www.noip.com ;
  • De la patience et des connaissances si vous souhaitez comprendre.

On lance les hostilités

Connection en SSh depuis votre machine vers votre Raspberry

Passez root directement ça évitera des « sudo » inutiles – Je sais c’est pas conseillé, mais on est des pros ou pas ? –

Tapez la commande

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

Ceci va download et lancer l’assistant qui va s’avérer très utile pour éviter les déboires en ligne de commande.

On dit bonjour et ok

Il nous dit qu’une IP statique est obligatoire sur un serveur (ce qui coule de source).

Il va utiliser le DHCP présent ou alors il va falloir lui filer une ip statique.

Un raspberry est souvent utilisé comme petit serveur donc logiquement déjà en statique. Pour ma part, je continue avec un « YES »

Vous allez devoir sélectionner un « user » qui va gérer les certificats de votre vpn.

J’opte pour « pi » à vous de faire vos propres choix.

Ne vous fiez pas à l’image – Elle a été prise quand j’ai testé OpenVPN !!!

Sélectionnez WIREGUARD !!!!! Il est bien mieux à tout les niveaux et surtout intégré au kernel linux.

Sélectionnez ici « UDP »

Encore une fois, le port par défaut présenté sur l’image est celui de openvpn. Donc celui en Wireguard sera surement le 51280 – Changez le ou conservez celui par défaut, mais retenez le.

Confirmez. (cette image était réellement obligatoire ?)

Petit plus, il me détecte l’installation de mon Pi-Hole et me demande si je souhaite utiliser le DNS de ce dernier ? La réponse semble couler de source.

Si je dis oui, je vais avoir une bande passante bien meilleure et nettoyée de toute les pubs/crasses de l’internet.

Dans le cas où vous n’auriez pas de Pi-hole optez pour les dns de CloudFlare ou de OpenDNS évitez ceux de Google …

Pour cette étape si vous êtes en IP public optez pour la première option.
Si vous êtes en IP dynamique (Belgique/proximus toussa) venez sur DNS ENTRY.

On attaque sur un autre front en même temps

Attention, on va réduire la fenêtre SSH et passer sur notre navigateur pour aller sur www.noip.com là-bas je vous invite à créer un compte, cliquer sur « create hostname », placer un nom de dns qui vous sied, et votre ip globale (pré indiquée). Un assistant sur la gauche vous fera le tour du propriétaire si vous êtes perdu.

Notez le nom du nouveau DNS.

On revient en SSH et on encode notre nouveau DNS fraîchement crée.

Qu’avons nous fait juste là ?
On demande à ce que le DNS de noip pointe vers notre MODEM.

Dites lui non. L’idée étant que cette histoire soit stable et compatible avec tout nos devices/kernel. – Je ne me souviens plus si en Wireguard il vous pose la question -.

Optez pour 4096 – CIA et FBI peuvent le craquer mais bon …

Sur les Raspberry choisissez non. Cela prendrait plusieurs heures.

Dites lui « yes » et si il attend une commande appuyez sur enter simplement sans rien.

Ne partez pas les ip dyn ne vont pas tenir

Vous allez devoir ajouter quelques petits détails qui auront leurs importances.

Premièrement votre modem voici un screen du port mapping de ma box si j’avais TOUT laissé par défaut ce qui vous servira d’exemple pour configurer vos appareils. Changez les chiffres.

l’idée est qu’il faut lire l’image de droite à gauche afin de comprendre ceci :

Remote host any (donc toutes les connexions extérieures)

Internal host : Vont aller vers 192.168.1.23 (l’ip de votre serveur en interne)

Port : Si elles tentent de passer 51820

Protocol autorisé : TCP/UDP

Revenez sous SSH

Ajoutez maintenant la commande

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

Changez uniquement l’ip 10.8.0.0 par l’ip de votre wg0 (c’est la vlan créée par Wireguard).

En gros, cela va ajouter dans votre table de routage une règle comme quoi les ip entrantes par 10 8 0 0 vont être envoyées vers le eth0 qui lui possède un accès internet – selon toute logique

Sans cette commande vous n’aurez pas l’accès aux Internets.

Notre premier client

Ajoutons maintenant un premier client sur notre serveur VPN

Avec la commande :

# pivpn add

Ce qui va permettre de configurer rapidement et facilement votre utilisateur.

Alors cet outil fantastique va vous créer un fichier qu’il faudra aller rechercher.
Regardez donc où se il se trouve et retenez son nom (c’est le nom de l’user.conf) et théoriquement il doit être dans /home/pi/configs/USER.CONF

Connecter le client à notre serveur

Vous allez maintenant à titre d’exemple connecter un Windows à votre serveur. Ainsi, en naviguant sur internet vous serez en VPN.

Ouvrez votre invite de commande : [la loupe] + cmd

scp pi@[IP DE VOTRE SERVEUR]:/CHEMIN/VERS/VOTRE/USERS.CONF /CHEMIN/VERS/LENDROIT/DE/DESTINATION

Je vous ai placé un screen de test pour voir plus clair

Maintenant nous voilà en possession du certificat sur notre Windows client.

On va installer ceci :

https://www.wireguard.com/install/

Importer le fichier dans le software et activer la connexion et cela doit fonctionner.

Première remarque

La première est que je vous invite vivement à installer DUC venant de chez NOIP sur votre serveur (Raspberry) car il va mettre à jour régulièrement votre IP Dynamic … Sans cela vous risquez des down.

Voici un lien avec un tuto youtube …

Seconde remarque

Voici la liste des commandes de pivpn que vous pourriez obtenir en calant un pivpn –help

pivpn -a : Ajouter un client

pivpn -c : pour obtenir la liste des utilisateurs actuellement connectés ;

pivpn -l : pour obtenir la liste des certificats valides ou révoqués ;

pivpn -r : pour révoquer un certificat ;
pivpn -d : debug

pivpn -u : pour désinstaller le serveur VPN.

Vous pouvez maintenant vous prendre pour un anonymous.

Attention qu’une connexion VPN ne signifie en aucun cas anonymat total. La connexion sortante de votre modem vers internet va nécessiter une première connexion claire vers votre FAI en claire.

Ensuite toutes vos connexions passeront inévitablement par chez ce FAI qui a le droit légal de conserver (en Belgique) six mois TOUT VOS LOGS.

By Dnl5