Skip to main content

Mise en place de Wireguard Serveur

WireGuard® est un VPN extrêmement simple, rapide et moderne qui utilise une cryptographie de pointe. Il se veut considérablement plus performant qu'OpenVPN.

WireGuard est conçu comme un VPN à usage général fonctionnant aussi bien sur des interfaces embarquées que sur des superordinateurs, adapté à 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. Il fait actuellement l'objet d'un développement intensif, mais il peut déjà être considéré comme la solution VPN la plus sûre, la plus facile à utiliser et la plus simple du secteur.

image docker : https://github.com/linuxserver/docker-wireguard


Utilisation de l'image docker pour un serveur

docker-compose : 

version: "2.1"

services:

  wireguard:
    image: lscr.io/linuxserver/wireguard:latest
    container_name: wireguard
    cap_add:
      - NET_ADMIN
      - SYS_MODULE # optional
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Etc/UTC
      - SERVERURL=wireguard.domain.com # optional
      - SERVERPORT=51820 # optional
      - PEERS=1 # Number of connection
      - PEERDNS=auto # optional
      - INTERNAL_SUBNET=10.13.13.0 # optional
      - ALLOWEDIPS=0.0.0.0/0 # optional
      - PERSISTENTKEEPALIVE_PEERS= # optional
      - LOG_CONFS=true # optional
    volumes:
      - /path/to/appdata/config:/config
      - /lib/modules:/lib/modules #optional
    ports:
      - 51820:51820/udp
    sysctls:
      - net.ipv4.conf.all.src_valid_mark=1
    restart: unless-stopped

Paramètres 

Les images des conteneurs sont configurées à l'aide de paramètres transmis au moment de l'exécution (tels que ceux indiqués ci-dessus). Ces paramètres sont séparés par deux points et indiquent <external>:<internal> respectivement.

Par exemple, -p 8080:80 expose le port 80 à l'intérieur du conteneur pour qu'il soit accessible à partir de l'IP de l'hôte sur le port 8080 à l'extérieur du conteneur.

Parameter Function
51820/udp wireguard port
PUID=1000 for UserID - see below for explanation
PGID=1000 for GroupID - see below for explanation
TZ=Etc/UTC specify a timezone to use, see this list.
SERVERURL=wireguard.domain.com IP externe ou nom de domaine de l'hôte docker. Utilisé en mode serveur. Si la valeur est auto, le conteneur essaiera de déterminer et de définir l'IP externe automatiquement.
SERVERPORT=51820 Port externe pour l'hôte Docker. Utilisé en mode serveur.
PEERS=1 Nombre de pairs pour lesquels créer des confs. Requis pour le mode serveur. Peut également être une liste de noms : myPC,myPhone,myTablet (alphanumérique uniquement).
PEERDNS=auto Serveur DNS défini dans les configurations homologue/client (peut être défini comme 8.8.8.8). Utilisé en mode serveur. La valeur par défaut est auto, ce qui utilise le DNS de l'hôte wireguard docker via la redirection CoreDNS incluse.
INTERNAL_SUBNET=10.13.13.0 Sous-réseau interne pour le wireguard, le serveur et les pairs (à ne modifier qu'en cas de conflit). Utilisé en mode serveur.
ALLOWEDIPS=0.0.0.0/0 Les IP/plages que les homologues pourront atteindre en utilisant la connexion VPN. Si elle n'est pas spécifiée, la valeur par défaut est : '0.0.0.0/0, ::0/0' Tout le trafic transitera par le VPN. Si vous souhaitez un tunnel divisé, réglez cette valeur sur les IP que vous souhaitez utiliser dans le tunnel ET sur l'IP du WG du serveur, par exemple 10.13.13.1.
PERSISTENTKEEPALIVE_PEERS= Réglé sur tous ou sur une liste de pairs séparés par des virgules (par exemple 1,4,laptop) pour que le serveur wireguard envoie des paquets keepalive aux pairs listés toutes les 25 secondes. Utile si le serveur est accessible via un nom de domaine et possède une IP dynamique. Utilisé uniquement en mode serveur.
LOG_CONFS=true Les codes QR générés seront affichés dans le journal du docker. Mettez false pour ignorer la sortie du journal.
/config Contains all relevant configuration files.
/lib/modules Host kernel modules for situations where they're not already loaded.
--sysctl= Required for client mode.