Aperçu
Cet article présentera la procédure d'installation du serveur VPN Wireguard avec Docker. Wireguard est une autre bonne option VPN en plus d'OpenVPN. Wireguard n'a pas encore d'image Docker officielle, nous allons donc utiliser l'image Docker Wireguard de linuxserver.io - Cette image exacte utilisée dans ce post :Docker Hub (et la page Github)
Cette procédure est également couverte par OpenVPN. Vous pouvez le vérifier sur ce post.
Exigences :
- Docker installé et en cours d'exécution.
Pour l'installation de docker, vous pouvez vous référer à cet article ou consulter la documentation officielle.
Si vous exécutez des distributions telles que - Ubuntu, Debian, Raspbian, vous pouvez utiliser le script d'installation rapide officiel de Docker :
curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh
Ajoutez ensuite l'utilisateur au groupe docker, si vous le souhaitez. C'est-à-dire si vous voulez exécuter des commandes docker sans sudo.
sudo usermod -aG docker <username>
Configuration du pare-feu
Si vous avez un pare-feu en cours d'exécution (ce qui est fortement recommandé), il est nécessaire d'avoir des ports ouverts pour Wireguard, sinon vous ne pourrez pas établir la connexion avec le serveur Wireguard.
UFW
sudo ufw allow 51820
IPTABLES
sudo iptables -I INPUT -p tcp -m tcp --dport 51820 -j ACCEPT or sudo iptables -A INPUT -p tcp -m tcp --dport 51820 -j ACCEPT
Installer et exécuter l'image Docker
Ci-dessous est répertoriée la commande Docker avec les variables d'environnement définies (ce sont des exemples et sont également expliqués) :
docker run -d \ --name wireguard \ --cap-add=NET_ADMIN \ --cap-add=SYS_MODULE \ -e PUID=1000 -e PGID=1000 \ -e TZ=Europe/London \ -e SERVERURL=wireguard.yourdomain.com \ -e PEERS=laptop,tablet,phone \ -e PEERDNS=auto \ -p 51820:51820/udp \ -v wireguard_config:/config \ -v /lib/modules:/lib/modules \ --sysctl="net.ipv4.conf.all.src_valid_mark=1" \ --restart=unless-stopped \ linuxserver/wireguard
Variables d'environnement expliquées :
nom wireguard – c'est le nom que nous avons défini pour le conteneur wireguard
cap-add=NET_ADMIN &cap-add=SYS_MODULE - cette variable fournira au conteneur des autorisations élevées sur le serveur hôte et lui permettra de gérer le noyau de l'hôte et d'interagir avec les interfaces réseau de l'hôte (qui sont nécessaires si nous voulons établir la communication avec notre VPN).
e PUID=1000 -e PGID=1000 – variable pour spécifier l'utilisateur et le groupe d'autorisation (le même groupe qu'un utilisateur sudo)
e TZ=Europe/Londres – Fuseau horaire du serveur (Définissez-le en conséquence)
e SERVERURL=vpn.votredomaine.com – Nom de domaine (FQDN) du serveur. Le domaine est facultatif mais au moins l'adresse IP publique du serveur DOIT être définie (Ceci est nécessaire pour que notre appareil client puisse localiser le serveur et communiquer avec lui). Vous pouvez également définir la configuration sur auto.
e PEERS=ordinateur portable,tablette,téléphone – variable pour configurer la connexion client au VPN pour les appareils clients (essentiellement le nombre d'appareils clients)
e PEERDNS=auto – Variable pour configurer le résolveur de domaine
p 51820:51820/udp – port à exposer sur le conteneur et quel port écouter sur le serveur hôte à utiliser pour le trafic VPN.
v wireguard_config:/config &v /lib/modules:/lib/modules – répertoires de volume à monter sur le serveur hôte et à utiliser pour enregistrer la configuration et les fichiers Wireguard
sysctl=”net.ipv4.conf.all.src_valid_mark=1″ – Une autre variable importante. Il s'agit d'activer un paramètre du noyau au niveau du réseau afin que le conteneur puisse communiquer avec des réseaux extérieurs au conteneur. Cela signifie que le conteneur peut accéder à Internet.
restart=unless-stopped – pour redémarrer le conteneur à chaque arrêt
linuxserver/wireguard – Image Docker à utiliser
Version compositeur
Remarque – cela nécessite d'avoir docker-compose installé et en cours d'exécution
version: "2.1" services: wireguard: image: linuxserver/wireguard container_name: wireguard cap_add: - NET_ADMIN - SYS_MODULE environment: - PUID=1000 - PGID=1000 - TZ=Europe/London - SERVERURL=vpn.domain.com # domain optional, public IP is required at least - SERVERPORT=51820 - PEERS=3 # number of peers - PEERDNS=auto #optional volumes: - /lib/config:/config - /lib/modules:/lib/modules ports: - 51820:51820/udp sysctls: - net.ipv4.conf.all.src_valid_mark=1 restart: unless-stopped
Connecter les clients
Examen de la configuration des pairs
Dès que vous démarrez le conteneur Wireguard, Wireguard créera toutes les configurations de connexion client. Vous pouvez revoir la configuration avec la commande :
docker logs wireguard
ou
docker exec -it wireguard /app/show-peer peer-number
Cette sortie imprimera également les codes QR pour une configuration de connexion facile et rapide. Ceci est plus pratique pour les appareils intelligents qui peuvent scanner les codes QR via l'application Wireguard. Ainsi, pour les appareils intelligents, téléchargez simplement l'application Wireguard, scannez le code QR et vous devriez vous connecter immédiatement.
Installation du client Wireguard et obtention de la configuration des pairs
Sur les appareils Linux (PC et ordinateurs portables), la configuration du client est un peu différente. L'installation et la configuration du client se font via un terminal. Commencez par installer Wireguard :
sudo apt install wireguard
Le client Wireguard est également disponible pour d'autres distributions et pour Windows également. Si vous avez besoin d'un client pour d'autres clients, consultez la documentation.
Créez ensuite l'interface Wireguard :
ip link add dev wg0 type wireguard
et revérifiez s'il est présent via la commande :ip -a. Si vous rencontrez des problèmes avec cela, wireguard docs propose également d'autres méthodes et couvre le dépannage.
Cela devrait ressembler à ceci :
Laissez-le tel quel pour le moment et déplacez-vous sur le serveur. Nous devons d'abord acquérir la configuration homologue directement à partir du serveur, copier la configuration et la coller sur notre appareil client Linux.
L'emplacement par défaut de la configuration des pairs est situé à :
/var/lib/docker/volumes/wireguard_config/_data/
Vous pouvez le copier (si nécessaire) pour le sauvegarder ou accéder directement à la configuration du pair :
sudo cp /var/lib/docker/volumes/wireguard_config/_data/peer*/*.conf ~
Cela copiera toutes les configurations homologues dans le répertoire personnel, puis sur le répertoire personnel, imprimera le fichier avec cat :
sudo cat peer_laptop.conf or sudo nano peer_laptop.conf
ou accédez directement à la configuration des pairs :
sudo cat /var/lib/docker/volumes/wireguard_config/_data/peer_laptop/peer_laptop.conf
Si vous obtenez également l'erreur d'autorisation refusée avec la commande sudo, cela signifie que la configuration n'est accessible qu'en tant que root. Si tel est le cas, connectez-vous simplement en tant que root avec - sudo su et exécutez à nouveau l'une des commandes précédentes sans sudo.
Configuration de l'interface client et établissement de la connexion
Après avoir copié la configuration, retournez sur votre appareil Linux, créez le fichier de configuration homologue (juste pour l'exemple, nous allons créer la configuration dans le répertoire personnel) :
sudo nano wireguard-vpn.conf
et collez la configuration du pair, enregistrez et quittez.
Enfin lancez cette commande pour configurer automatiquement l'interface wireguard, pour l'activer et après cela, elle devrait se connecter automatiquement à votre serveur :
sudo wg-quick up wireguard-vpn.conf
Vous pouvez le vérifier avec - ip a et avec ping vers le serveur vpn ou avec un service what's my ip.
Pour vous déconnecter, relancez simplement la même commande mais avec l'argument down :
sudo wg-quick down wireguard-vpn.conf
Résumé
Ce que nous avons couvert dans cet article sont les étapes d'installation du serveur VPN Wireguard avec Docker. Cette méthode est assez rapide à mettre en place et facilement ajustable, si vous souhaitez ajouter ou supprimer des clients. Mais, si vous préférez plutôt la solution avec OpenVPN, il y a la même procédure avec OpenVPN sur ce lien
Merci beaucoup pour votre temps…