diff --git a/HowtoWireGuard.md b/HowtoWireGuard.md index b33bb66b..37a14a91 100644 --- a/HowtoWireGuard.md +++ b/HowtoWireGuard.md @@ -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= +# 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 = :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 :