Wireguard – Serveur VPN sous Docker

Wireguard – Serveur VPN sous Docker

Bonjour à tous, me revoilà de plus belle après un long moment d’absence pour vous montrer comment installer un serveur VPN sous Docker. Dans cet article j’ai choisi de réaliser mon VPN avec Wireguard, pourquoi ? Je vous laisse voir les comparatifs avec OpenVPN sur cette page !

C’est quoi Wireguard ?

WireGuard est un VPN extrêmement simple mais rapide et moderne qui utilise une cryptographie de pointe. Il vise à être plus rapide, plus simple, plus léger et plus utile que IPsec, tout en évitant les énormes maux de tête. Il a l’intention d’être considérablement plus performant que OpenVPN. WireGuard est conçu comme un VPN à usage général pour fonctionner sur des interfaces intégrées et des superordinateurs, adaptés à de nombreuses circonstances différentes. Initialement publié pour le noyau Linux, il est désormais multiplateforme (Windows, macOS, BSD, iOS, Android) et largement déployable. Elle est actuellement en cours de développement, mais elle pourrait déjà être considérée comme la solution VPN la plus sécurisée, la plus simple à utiliser et la plus simple de l’industrie.

Site officiel Wireguard

Prérequis, il vous faut connaître deux ou trois petites choses pour vous permettre d’installer Wireguard facilement. La première c’est votre TZ (TimeZone Name), chez moi par exemple c’est Europe/Paris, vous pouvez trouver votre TZ ici : https://en.wikipedia.org/wiki/List_of_tz_database_time_zones . Ensuite il faut votre ip publique ou nom de domaine que vous allez utiliser pour vous connecter à votre VPN, pour connaître votre ip public : http://www.mon-ip.com/, cette valeur sera saisie à la place de la valeur YOURIP. La valeur PEERS est également connaître, cela représente le nombre d’appareil que vous voulez connecter, moi par exemple cette valeur est mise à 10. Enfin la valeur VOLUME, correspond au dossier du container ou le chemin système désiré.

On reprend donc les valeurs en questions :

TZ = Europe/Paris, YOURIP = VotreIpPublic ou nom de domaine, PEERS = Nombre d’appareils connectés, VOLUME = nom du dossier du container ou le chemin système désiré.

Voici le script qu’il faudra taper dans votre terminal, rassurez vous on va décrypter tout ça.

docker run \
–name=wireguard \
–cap-add=NET_ADMIN \
–cap-add=SYS_MODULE \
-e PUID=1000 \
-e PGID=1000 \
-e TZ=[YOURTZ] \
-e SERVERURL=[YOURIP] \
-e SERVERPORT=51820 \
-e PEERS=[PEERS] \
-e PEERDNS=auto \
-e INTERNAL_SUBNET=10.13.13.0 \
-p 51820:51820/udp \
-v [VOLUME]:/config \
-v /lib/modules:/lib/modules \
–restart unless-stopped \
linuxserver/wireguard

Script docker provenant du site https://codeopolis.com/

Décrivons les variables :

  • –name=wireguard = Nom du container ici ” Wireguard”
  • –cap-add=NET_ADMIN = Permet au conteneur d’effectuer diverses opérations réseau
  • –cap-add=SYS_MODULE = Permet au container d’installer des modules sur le système hôte.
  • -e PUID=1000 = définit l’id utilisateur du processus
  • -e PGID=1000 = définit l’id du groupe de processus
  • -e TZ=[YOURTZ] = définit le fuseau horaire ici Europe/Paris
  • -e SERVERURL=[YOURIP] = définit votre ip public ou votre nom de domaine
  • -e SERVERPORT=51820 = définit le numéro du port utilisé par le serveur
  • -e PEERS=[PEERS] = définit le nombre d’appareils autorisés à se connecter
  • -e PEERDNS=auto = vous pouvez modifier si vous souhaitez définir un DNS spécifique pour les clients VPN
  • -e INTERNAL_SUBNET=10.13.13.0 = sous réseau du container, vérifié que la plage n’est pas en conflit avec la/les votre(s)
  • -p 51820:51820/udp = map le port 51820 de la machine hôte vers le container
  • -v [VOLUME]:/config = emplacement de la configuration de Wireguard sur l’hôte
  • -v /lib/modules:/lib/modules = lie le dossier module de la machine hôte au container
  • –restart unless-stopped = fait en sorte que le container soit toujours en fonctionnement
  • linuxserver/wireguard =image utilisée pour le container présent sur le docker hub

Après le docker run vous allez voir des QRCODE qui s’affichent dans votre terminal, ne fermez pas cette fenêtre. Utilisez l’application Wireguard sur mobile par exemple et scannez le QRCODE pour permettre d’ajouter la configuration du VPN facilement.

Exemple de QRCODE:

Une dernière chose !

Pour permettre le fonctionnement de votre VPN depuis l’extérieur n’oubliez pas de mapper votre port 51820 sur votre serveur docker.

Merci de m’avoir lu n’hésitez pas à commenter et partager l’article ;-).

Alexandre Carbonnier

Laisser un commentaire