GNU/Linux >> Tutoriels Linux >  >> Panels >> Docker

Installer le serveur VPN Wireguard avec Docker

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…


Docker
  1. Installer ModSecurity avec Apache dans un conteneur Docker

  2. Surveiller le serveur MySQL avec Nagios 3.4

  3. Comment installer et héberger un serveur OpenVPN avec Docker

  4. Comment installer Jenkins avec Docker

  5. Comment installer Nextcloud avec Docker sur votre serveur Linux

Comment installer Sentry avec Docker sur Ubuntu 20.04

Comment installer Mailtrain sur Ubuntu 18.04 avec Docker

Installer Portainer avec Docker sur Ubuntu

Installer Portainer avec Docker sur Centos8

Comment installer Wireguard sur CentOS 8

Installer WordPress avec Docker sur Ubuntu 20.04