Wireguard
Wireguard est une solution de VPN libre à source ouverte se voulant plus simple et sécurisée qu'OpenVPN.
INFORMATION
Wireguard n'est actuellement (14/04/19) disponible que dans la branche Sid de Debian. Il est toutefois possible de l'obtenir via un dépôt dédié avec les commandes suivantes:echo "deb http://deb.debian.org/debian/ unstable main" > /etc/apt/sources.list.d/unstable.list
printf 'Package: *\nPin: release a=unstable\nPin-Priority: 90\n' > /etc/apt/preferences.d/limit-unstable
apt update
apt install wireguard
Nous utiliserons une Debian Sid pour cette documentation.
Partie serveur
Installation
apt install wireguard
Génération des clés
wg genkey | tee /etc/wireguard/clé_privée_serveur | wg pubkey > /etc/wireguard/clé_publique_serveur
Afficher vos clés
cat /etc/wireguard/clé_privée_serveur /etc/wireguard/clé_publique_serveur
Le résultat vous sera utile pour remplir les fichiers de configuration serveur et client.
Configuration du serveur
vim /etc/wireguard/wg0.conf
[Interface]
Address = 10.100.100.1/24
SaveConfig = true
PrivateKey = INSÉRER_LA_CLÉ_PRIVÉE_DU_SERVEUR
ListenPort = 51820
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
[Peer]
PublicKey = INSÉRER_LA_CLÉ_PUBLIQUE_DU_CLIENT
AllowedIPs = 10.100.100.2/32
Activer le routage
sed -i '/net.ipv4.ip_forward/s/^#//g' /etc/sysctl.conf sysctl -p
Appliquer les bons droits
chown -v root:root /etc/wireguard/wg0.conf chmod -v 600 /etc/wireguard/wg0.conf
Démarrer le tunnel
wg-quick up wg0
Une interface wg0 est créée avec l'adresse IP fournie dans le fichier de configuration.
Arrêter le tunnel
wg-quick down wg0
Activer le tunnel au démarrage
Il existe un service Systemd pré-installé mais désactivé par défaut. Il suffit de l'activer pour lancer automatiquement Wireguard au démarrage du système.
systemctl enable wg-quick@wg0.service
Partie cliente
installation
apt install wireguard
Génération des clés
wg genkey | tee /etc/wireguard/clé_privée_client | wg pubkey > /etc/wireguard/clé_publique_client
Afficher vos clés
cat /etc/wireguard/clé_privée_serveur /etc/wireguard/clé_publique_serveur
Configuration du client
[Interface]
Address = 10.100.100.2/32
PrivateKey = 8BOBheDTB8I0FpYfX4MM0OVRcchfPMPw1epH+rTaEm0=
[Peer]
PublicKey = sX3l46346afcqNeCUgXOY7dxfGat0/pO7O2g75vtGhU=
Endpoint = wg.toto.fr:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 25
Démarrer le tunnel
wg-quick up wg0-client
Arrêter le tunnel
wg-quick down wg0-client
Faire passer la route par défaut dans le tunnel
Il faudra trouver comment le faire automatiquement mais pour le moment on ce contentera de le faire via la méthode traditionnelle.
Ajout de la route statique pour joindre le serveur
ip r a IP_SERVEUR via IP_PASSERELLE
Suppression de la route par défaut
ip r d default
Ajout de la route par défaut via le tunnel
ip r a default via 10.100.100.1
Après extinction du tunnel, il suffit de remettre la route par défaut via la passerelle
ip r a default via IP_PASSERELLE