Je vais expliquer ici comment installer un serveur VPN WireGuard sur Debian et l’utiliser depuis un iPad.
1. Serveur Debian
Sur le serveur, on installe WireGuard avec apt install wireguard -y
.
2. Générer la clé privée et publique du serveur
Pour cela, on va faire :
sudo wg genkey | sudo tee /etc/wireguard/server_private.key sudo cat /etc/wireguard/server_private.key | sudo wg pubkey | sudo tee /etc/wireguard/server_public.key
On retrouvera nos clés dans les fichiers /etc/wireguard/server_private.key
et /etc/wireguard/server_public.key
3. Générer la clé privée et publique du client
Sur le serveur Debian, on va générer des clés pour le client :
wg genkey | tee client_private.key cat client_private.key | wg pubkey | tee client_public.key
On retrouvera nos clés dans les fichiers ./client_private.key
et ./client_public.key
4. Configuration du serveur
On va entrer la configuration suivante dans le fichier /etc/wireguard/wg0.conf
:
[Interface] Address = 10.0.0.1/24 PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE ListenPort = 51820 PrivateKey = PRIVATE_KEY_DU_SERVEUR [Peer] PublicKey = PUBLIC_KEY_DU_CLIENT AllowedIPs = 10.0.0.2/32 PersistentKeepalive = 25
5. Activer le transfert IP sur le serveur
Éditer le fichier /etc/sysctl.conf
afin d’avoir :
net.ipv4.ip_forward=1 net.ipv6.conf.all.forwarding=1
Et on applique les changements avec la commande sudo sysctl -p
6. Démarrage de WireGuard
Pour démarrer le serveur VPN on tape sudo systemctl start wg-quick@wg0
On peut voir le statut avec la commande sudo systemctl status wg-quick@wg0
7. Configuration du client
Sur notre client (ici un iPad), on installe l’application WireGuard depuis le App Store.
Ensuite, sur notre serveur, on va créer le fichier de configuration client.conf
qui sera utilisé par le client, avec le contenu suivant :
[Interface] PrivateKey = PRIVATE_KEY_DU_CLIENT Address = 10.0.0.2/32 DNS = 8.8.8.8, 8.8.4.4 # on utilise les DNS de Google [Peer] PublicKey = PUBLIC_KEY_DU_SERVEUR Endpoint = mon_serveur.debian.home:51820 # on indique l'IP/hostname de notre serveur VPN AllowedIPs = 0.0.0.0/0, ::/0 PersistentKeepalive = 25
Afin de transmettre cette configuration à l’iPad, on peut générer un QR code. Pour cela on installe ce qu’il faut : sudo apt install qrencode
, puis on génère avec qrencode -t ansiutf8 < client.conf
Sur l'iPad, on ouvre l'application WireGuard puis on ajoute un client en utilisant le QR Code généré.
8. Vérification
En activant le VPN sur l'iPad, on peut tester si tout fonctionne comme prévu en vérifiant l'adresse IP de l'iPad.
Sur le serveur, on peut utiliser la commande wg show
pour voir un peu ce qu'il se passe.