Wireguard

WireGuard est un VPN extrêmement simple mais rapide et moderne qui utilise une cryptographie de pointe. Il se veut plus rapide, plus simple, plus léger et plus utile qu’IPSec, tout en évitant les maux de tête massifs. Il a l’intention d’être beaucoup plus performant qu’ OpenVPN. WireGuard est conçu comme un VPN polyvalent pour fonctionner sur des interfaces embarquées et des superordinateurs, adapté à différentes circonstances. Initialement publié pour le noyau Linux, il est maintenant multiplate-forme et largement déployable. Il est actuellement en plein développement, mais il pourrait déjà être considéré comme la solution VPN la plus sûre, la plus facile à utiliser et la plus simple de l’industrie.

Installation

echo "deb http://deb.debian.org/debian/ unstable main" | tee /etc/apt/sources.list.d/unstable.list
echo -e "Package: *\nPin: release a=unstable\nPin-Priority: 150\n" | tee /etc/apt/preferences.d/limit-unstable
apt update
apt install wireguard

Génération des clés

wg genkey | tee serveur-private.key | wg pubkey > serveur-public.key
wg genkey | tee client1-private.key | wg pubkey > client1-public.key
wg genkey | tee client2-private.key | wg pubkey > client2-public.key

Configuration du serveur

[Interface]
Address = 10.9.9.254/24
ListenPort = PORT
PrivateKey = < CLÉ PRIVÉE DU SERVEUR >
SaveConfig = false
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

# Déclaration du client 1
[Peer]
PublicKey = < CLÉ PUBLIQUE DU CLIENT 1 >
AllowedIPs = 10.9.9.10/32

# Déclaration du client 2
[Peer]
PublicKey = < CLÉ PUBLIQUE DU CLIENT 2 >
AllowedIPs = 10.9.9.11/32

# Déclaration du client 3
[Peer]
PublicKey = < CLÉ PUBLIQUE DU CLIENT 3 >
AllowedIPs = 10.9.9.12/32

Configuration d’un client

[Interface]
Address = 10.9.9.10/24
ListenPort = PORT
PrivateKey = < CLÉ PRIVÉE DU CLIENT 1 >

[Peer]
PublicKey = < CLÉ PUBLIQUE DU SERVEUR >
Endpoint = @IP_SERVEUR:PORT
PersistentKeepalive = 25

# Split Tunneling, seul les réseaux spécifiés sont routés dans le vpn
AllowedIPs = 10.9.9.254/32, 10.0.0.0/24, 172.16.0.5/16

# Full Tunnelling, tout le traffic est routé dans le vpn
AllowedIPs = 0.0.0.0/0

Qrcode de la configuration Client

qrencode -t ansiutf8 < client.conf