Ajout explications d'options et quelques infos

This commit is contained in:
jdubois 2023-10-13 10:42:46 +02:00
parent b290c3c097
commit 15319de9c5

View file

@ -53,7 +53,6 @@ Créer un fichier de configuration `/etc/wireguard/wg0.conf`, pour l'interface `
~~~
[Interface]
Address = 192.0.2.1/24, 2001:db8::1/64
SaveConfig = false
ListenPort = 51820
PrivateKey = ***** # Contenu de /etc/wireguard/keys/serveur_priv
~~~
@ -61,10 +60,16 @@ PrivateKey = ***** # Contenu de /etc/wireguard/keys/serveur_priv
Avec :
* `Address` : l'IP dans le réseau WireGuard attribuée au serveur
* `SaveConfig` : si true, la configuration est mise en mémoire (et protégée) tout le temps que l'interface est active ; signifie que si le fichier de configuration est modifié pendant que le VPN est UP, alors il sera remis comme il était au moment de son démarrage lorsqu'il sera coupé
* `ListenPort` : le port d'écoute de WireGuard, 51820 est celui par défaut
* `PrivateKey` : la valeur de la clé privée du serveur, générée plus tôt
Ces paramètres sont également possibles :
* `DNS` : serveurs DNS à utiliser sur ce tunnel VPN
* `MTU` : MTU à utiliser sur le lien ; automatiquement déterminé si non spécifié
* `PreUp`, `PostUp`, `PreDown`, `PostDown` : commandes ou scripts qui seront exécutés par bash avant ou après avoir activé ou désactivé l'interface VPN
* `SaveConfig` : si true, la configuration est mise en mémoire (et protégée) tout le temps que l'interface est active ; signifie que si le fichier de configuration est modifié pendant que le VPN est UP, alors lorsqu'il sera coupé, la configuration sera remise comme elle était au moment de son démarrage. On est donc obligé de stopper le VPN, faire notre modification, puis le démarrer à nouveau. Valeur par défaut : false.
Il suffit ensuite de démarrer notre VPN avec `wg-quick` :
~~~
@ -94,25 +99,32 @@ Enfin, on peut activer le démarrage automatique de notre interface `wg0` :
Générer une clé privée pour un client et sa clé publique, puis une clé pré-partagée :
~~~
# wg genkey | tee /etc/wireguard/keys/client_priv | wg pubkey > /etc/wireguard/keys/client_pub
# wg genpsk > /etc/wireguard/keys/client_psk
# CLIENT=<nom_client>
# wg genkey | tee /etc/wireguard/keys/${CLIENT}_priv | wg pubkey > /etc/wireguard/keys/${CLIENT}_pub
# wg genpsk > /etc/wireguard/keys/${CLIENT}_psk
~~~
Dans le fichier de configuration `/etc/wireguard/wg0.conf`, sous le bloc `[Interface]`, on crée un bloc `[Peer]` par client :
~~~
[Peer] # Client 1
PublicKey = ***** # Contenu de /etc/wireguard/keys/client_pub
PresharedKey= ***** # Contenu de /etc/wireguard/keys/client_psk
PublicKey = ***** # Contenu de /etc/wireguard/keys/${CLIENT}_pub
PresharedKey= ***** # Contenu de /etc/wireguard/keys/${CLIENT}_psk
AllowedIPs = 192.0.2.0/24, 2001:db8::/64
~~~
Puis on redémarre l'interface `wg0` :
Avec :
* `AllowedIPs` :
* Utilisé comme table de routage en sortie : pour joindre ces réseaux, je passe par ce peer sur le VPN.
* Utilisé comme ACL en entrée : ce peer sera autorisé à me joindre s'il a une de ces IPs sources.
Puis on redémarre l'interface `wg0` :
~~~
# wg-quick down wg0 && wg-quick up wg0
OU
# systemctl restart wg-quick@wg0.service
# systemctl reload wg-quick@wg0.service
~~~
Et on peut vérifier que la déclaration du peer est bonne :
@ -136,16 +148,20 @@ Il faut donner au client les paramètres générés côté serveur :
~~~
[Interface]
PrivateKey = ***** # Contenu de /etc/wireguard/keys/client_priv
PrivateKey = ***** # Contenu de /etc/wireguard/keys/${CLIENT}_priv
Address = 192.0.2.2/24, 2001:db8::2/64
[Peer]
PublicKey = ***** # Contenu de /etc/wireguard/keys/serveur_pub
PresharedKey = ***** # Contenu de /etc/wireguard/keys/client_psk
PresharedKey = ***** # Contenu de /etc/wireguard/keys/${CLIENT}_psk
Endpoint = <server_ip>:51820
AllowedIPs = 0.0.0.0/0, ::/0
~~~
Il peut ensuite utiliser sa configuration de la même façon que le serveur, avec `wg-quick` ou `systemctl`.
Pour avoir un historique et notamment une liste des IP utilisées, il peut être utile de garder la configuration client sur le serveur, par exemple dans `/etc/wireguard/configs/${CLIENT}.conf`.
## Débogage
Sous OpenBSD :