Wireguard - Mise en place
Configuration serveur Wireguard
Documentation de mise en place et configuration du VPN wireguard
Installation
Sous debian 12, wireguard est déjà installé dans les packages de base. S’il n’est pas installé :
apt update && apt install wireguard
Configuration Serveur
Génération de fichier contenant la clé publique du serveur, ainsi que la clé privée :
root@wireguard:~# wg genkey |sudo tee /etc/wireguard/wg-srv-private.key | wg pubkey | sudo tee /etc/wireguard/wg-srv-public.key
Cela va générer 2 fichiers :
- wg-srv-private.key → Clé privée pour le serveur
- wg-srv-public.key → Clé publique, commune aux clients, à renseigner sur les configurations des clients
Ensuite, on va créer le fichier de configuration, contenant les paramètres du serveur, ainsi que la configuration des clients autorisés à se connecter dessus.
On va donc créer le fichier /etc/wireguard/wg0.conf :
root@wireguard:~# vi /etc/wireguard/wg0.conf
[Interface]
Address = 10.8.8.0/24
SaveConfig = true
ListenPort = 51820
PrivateKey = mIfuF3/hSHJVvkRwlxWCBcEIbQs36SZqp882YMgMHkk=
Détail des options :
- Address : Adresse IP du serveur, utilisée pour la communication entre les clients et le serveur
- SaveConfig : Pour conserver la config quand le VPN est actif, protégeant la config après arrêt du tunnel
- ListenPort : port d’écoute de Wiregard
- PrivateKey : clé privée du serveur, pour le chiffrement des échanges
Ensuite on démarre notre tunnel wireguard :
sudo wg-quick up wg0
Après ça, on devrait voir apparaitre notre tunnel, via la commande « ip -a » :
root@wireguard:~# ip a show dev wg0
13: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
link/none
inet 10.8.8.254/24 scope global wg0
valid_lft forever preferred_lft forever
Et aussi avec la commande « wg show », pour voir les interfaces de wireguard actives :
root@wireguard:~# wg show
interface: wg0
public key: snWqZfuc54sEVrWBghBkxi1LkO1X4W1t0sjtJD5S9n8=
private key: (hidden)
listening port: 41820
Pour que notre configuration soit persistante et active après redémarrage du serveur, on créer un service associé :
sudo systemctl enable wg-quick@wg0.service
Pour que les paquets soient routées d’une interface à une autre, il faut activer l’IP Forwarding :
Dans le fichier /etc/sysctl.conf, décommenter la ligne suivante et modifier la valeur :
net.ipv4.ip_forward=1
Il faut aussi activer l’IP masquerade, pour mettre en place le NAT sur la machine.
Configuration du parefeu nftable :
root@wireguard:~# cat /yziact/scripts/nft.fw
table inet filter {
chain input {
type filter hook input priority filter; policy accept;
ip saddr 10.8.8.0/24 accept
udp dport 41820 accept
ct state vmap { invalid : drop, established : accept, related : accept }
drop
}
chain output {
type filter hook output priority filter; policy accept;
ct state invalid drop
}
chain prerouting {
type nat hook prerouting priority filter; policy accept;
}
chain postrouting {
type nat hook postrouting priority filter; policy accept;
ip saddr 10.8.8.0/24 oif "ens256" snat ip to 192.168.1.1
ip saddr 10.8.8.0/24 masquerade
}
}
Ajout d'un client
Après avoir créer un couple de clé privée / publique sur le client, via wireguard sous windows, il faut ajouter le client sur le serveur.
Arret du service wgà:
systemctl stop wg-quick@wg0.service
Ajout du client dans le fichier /etc/wireguard.wg0.conf:
# Config VPN Exemple
[Peer]
PublicKey = 4eLau52rcERa1CTCbISUs3ysCnkpjqb1j0K2fhuKBTE=
AllowedIPs = 10.8.8.1/32
On relance le service de wireguard:
systemctl start wg-quick@wg0.service
On peut aussi utiliser la commande suivante sur le serveur, pour ajouter le client (évitant de redémarrer le service):
sudo wg set wg0 peer 4eLau52rcERa1CTCbISUs3ysCnkpjqb1j0K2fhuKBTE= allowed-ips 10.8.8.1/32
la configuration côté client, doit être la suivante:
[Interface]
PrivateKey = client_priv_key
Address = 10.8.8.1/24
[Peer]
PublicKey = server_pub_key
AllowedIPs = 10.8.8.0/24
Endpoint = ip_publique_serverur_wg:41820
Si tout est fonctionnel, notre client doit pouvoir pinguer le serveur.
Docs supplémentaires
→ Digital Ocean: wireguard
→ IT-Connect: Mise en place wireguard debian 11