Un VPN sur odroid M1 avec Wireguard

Gros plan sur des câbles électroniques noirs sur une surface également sombre. Parmi eux se trouvent de petites figurines du SWAT à tenue bleu marine et casque jaune. Équipements électroniques en fond
L’équipe a sécurisé le réseau, je répète, l’équipe a sécurisé le réseau.

J’ai configuré un serveur de VPN Wireguard sur mon Odroid M1 (alternative du Raspberry Pi). Cela me permet me connecter à Internet avec mon téléphone de manière sécurisée et confidentielle quand je suis sur un Wi-Fi auquel je n’ai pas confiance. Voici la configuration (j’espère ne pas avoir oublié d’étape).

Mon réseau local est en 192.168.x.x. Donc j’ai choisi 172.16.0.x comme réseau dédié à Wireguard. Je n’ai pas/plus d’IPV6 (les facéties de mon modem/routeur).

J’ai plus ou moins suivi ce guide, avec de petites différences. Les commandes sont à exécuter en root (sudo su -).

  • Sur le téléphone:
    • Installation du client Wireguard pour Android (via le magasin d’applications libres f-droid pour moi).
    • Dans l’app, je crée un tunnel à partir de zéro.
    • J’appuie sur le bouton à côté du champ « Clé privée » pour en créer une.
    • Je copie la valeur du champ « Clé publique » (comme j’ai Kde Connect sur mon téléphone et mon PC, la valeur est automatiquement mise dans le presse-papier de mon PC), pour la mettre plus tard dans un fichier de config du serveur.
    • Je remplis le champ « Interface / Addresses » avec « 172.16.0.2 ».
    • «Interface / Port d’écoute » : 51820
    • « Pair / Clé publique » : le contenu du fichier de clé publique du serveur.
    • « Point de terminaison » : l’adresse IP publique et le port sur lequel le serveur de VPN écoute (ex: 1.2.3.4:51820)
    • « Adresses IP autorisées » : 0.0.0.0/0
  • Sur le serveur:
    • apt install wireguard
    • wg genkey | sudo tee /etc/wireguard/private.key
    • chmod go= /etc/wireguard/private.key
    • cat /etc/wireguard/private.key | wg pubkey | sudo tee /etc/wireguard/public.key
    • nano /etc/sysctl.conf
    • mettre « net.ipv4.ip_forward=1 » dedans et sauver.
    • sysctl -p
    • ufw allow 51820/udp
    • ufw disable;ufw enable
    • dans « /etc/wireguard/wg0.conf »
[Interface]
Address = 172.16.0.1/24
SaveConfig = true
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE; ufw route allow in on %i to any
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE; ufw route delete allow in on %i to any
ListenPort = 51820
PrivateKey = CLÉ_PRIVÉE_DU_SERVEUR_VPN_ICI
Table = off

[Peer]
PublicKey = CLÉ_PUBLIQUE_DU_CLIENT_ANDROID
AllowedIPs = 0.0.0.0/0
Endpoint = IP_PUBLIQUE_DE_MON_MODEM_ROUTEUR:51820
  • systemctl enable wg-quick@wg0.service

Si votre réseau local est en NAT derrière un modem-routeur, vous aurez besoin de rediriger le trafic arrivant sur votre routeur sur le port 51820 vers le serveur de VPN.

Par rapport au guide de DigitalOcean, j’ai dû mettre « Table = off », sinon plus aucune connexion sortante du odroid ne marchait une fois Wireguard (que ce soit un « curl » vers l’extérieur, ou bien des pages web ouvertes depuis mon téléphone). Par contre j’arrivais à accéder au réseau local depuis mon téléphone en 4G.

Avec un peu de chance, vous pouvez activer sur votre téléphone le nouveau tunnel. Pour tester, on peut se mettre en 4G et:

  • constater en cherchant « my ip » dans duckduckgo que ça affiche l’IP publique de l’accès Internet fixe.
  • accéder aux machines du réseau privé.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *