P07 - Les VPN : WireGuard, IPsec, OpenVPN


1. Principe

Un VPN (Virtual Private Network) crée un tunnel chiffré à travers un réseau non sûr (Internet).

flowchart LR
  subgraph S2S["Site à site"]
    A["LAN Nantes<br/>192.168.10.0/24"] --- FA{{"Pare-feu A"}}
    FA ===|"tunnel IPsec / WireGuard"| FB{{"Pare-feu B"}}
    FB --- B["LAN Rennes<br/>192.168.20.0/24"]
  end
  subgraph NOM["Nomade (road warrior)"]
    L["💻 Portable en télétravail"] ===|"tunnel"| FC{{"Pare-feu de l'entreprise"}}
    FC --- C["LAN entreprise"]
  end
ProtocolePoints fortsPoints faiblesPort
IPsec (IKEv2)Standard, interopérable (tous constructeurs)Configuration complexe (phases 1 et 2)UDP 500/4500
OpenVPNTrès flexible, passe partout (TCP 443 possible), certificatsPlus lent, logiciel clientUDP 1194
WireGuardTrès simple, rapide, code minimal, dans le noyau LinuxMoins de fonctions d’entreprise nativesUDP 51820

2. WireGuard entre deux machines Linux

sudo apt install wireguard          # Arch : sudo pacman -S wireguard-tools
wg genkey | tee prive.key | wg pubkey > public.key     # sur CHAQUE machine
chmod 600 prive.key

/etc/wireguard/wg0.conf sur le serveur (IP publique ou joignable) :

[Interface]
Address = 10.200.0.1/24
ListenPort = 51820
PrivateKey = <clé privée du serveur>
 
[Peer]
PublicKey = <clé publique du client>
AllowedIPs = 10.200.0.2/32

/etc/wireguard/wg0.conf sur le client :

[Interface]
Address = 10.200.0.2/24
PrivateKey = <clé privée du client>
 
[Peer]
PublicKey = <clé publique du serveur>
Endpoint = serveur.exemple.fr:51820
AllowedIPs = 10.200.0.0/24
PersistentKeepalive = 25
sudo wg-quick up wg0                 # démarrer
sudo systemctl enable wg-quick@wg0   # au démarrage
sudo wg show                         # état, dernier « handshake »
ping 10.200.0.1

AllowedIPs = quels réseaux passent dans le tunnel (0.0.0.0/0 = tout le trafic Internet).

3. Sur pfSense

OpenVPN (assistant + export client), IPsec (phases 1/2), WireGuard (paquet) → S02 - pfSense. Tailscale = WireGuard « automatique » en maillage → O08 - Tailscale.

Voir aussi