8.11. Configuration d'un client WireGuard à l'aide de nmcli
Vous pouvez configurer un client WireGuard en créant un profil de connexion dans NetworkManager. Utilisez cette méthode pour laisser NetworkManager gérer la connexion WireGuard.
Cette procédure suppose les paramètres suivants :
Client :
-
Clé privée :
aPUcp5vHz8yMLrzk8SsDyYnV33IhE/k20e52iKJFV0A=
-
Adresse IPv4 du tunnel :
192.0.2.2/24
-
Adresse IPv6 du tunnel :
2001:db8:1::2/32
-
Clé privée :
Serveur :
-
Clé publique :
UtjqCJ57DeAscYKRfp7cFGiQqdONRn69u249Fa4O6BE=
-
Adresse IPv4 du tunnel :
192.0.2.1/24
-
Adresse IPv6 du tunnel :
2001:db8:1::1/32
-
Clé publique :
Conditions préalables
- Vous avez généré les clés publique et privée pour le serveur et le client.
Vous connaissez les informations suivantes :
- La clé privée du client
- Les adresses IP du tunnel statique et les masques de sous-réseau du client
- La clé publique du serveur
- Les adresses IP du tunnel statique et les masques de sous-réseau du serveur
Procédure
Ajouter un profil de connexion NetworkManager WireGuard :
# nmcli connection add type wireguard con-name client-wg0 ifname wg0 autoconnect no
Cette commande crée un profil nommé
client-wg0
et lui affecte l'interface virtuellewg0
. Pour éviter que la connexion ne démarre automatiquement après l'avoir ajoutée sans finaliser la configuration, désactivez le paramètreautoconnect
.Optionnel : Configurez NetworkManager pour qu'il ne démarre pas automatiquement la connexion
client-wg
:# nmcli connection modify client-wg0 autoconnect no
Définissez l'adresse IPv4 du tunnel et le masque de sous-réseau du client :
# nmcli connection modify client-wg0 ipv4.method manual ipv4.addresses 192.0.2.2/24
Définissez l'adresse IPv6 du tunnel et le masque de sous-réseau du client :
# nmcli connection modify client-wg0 ipv6.method manual ipv6.addresses 2001:db8:1::2/32
Si vous souhaitez acheminer l'ensemble du trafic via le tunnel, définissez les adresses IP du tunnel du serveur comme passerelle par défaut :
# nmcli connection modify client-wg0 ipv4.gateway 192.0.2.1 ipv6.gateway 2001:db8:1::1
L'acheminement de tout le trafic à travers le tunnel nécessite que vous définissiez, dans une étape ultérieure, la valeur
allowed-ips
sur ce client à0.0.0.0/0;::/0
.Notez que l'acheminement de tout le trafic via le tunnel peut avoir un impact sur la connectivité avec d'autres hôtes en fonction du routage du serveur et de la configuration du pare-feu.
Ajouter la clé privée du serveur au profil de connexion :
# nmcli connection modify client-wg0 wireguard.private-key "aPUcp5vHz8yMLrzk8SsDyYnV33IhE/k20e52iKJFV0A="
Modifiez le fichier
/etc/NetworkManager/system-connections/client-wg0.nmconnection
et ajouter :[wireguard-peer.UtjqCJ57DeAscYKRfp7cFGiQqdONRn69u249Fa4O6BE=] endpoint=server.example.com:51820 allowed-ips=192.0.2.1;2001:db8:1::1; persistent-keepalive=20
-
L'entrée
[wireguard-peer.<public_key_of_the_server>]
définit la section homologue du serveur, et le nom de la section contient la clé publique du serveur. -
Le paramètre
endpoint
définit le nom d'hôte ou l'adresse IP et le port du serveur. Le client utilise ces informations pour établir la connexion. Le paramètre
allowed-ips
définit une liste d'adresses IP qui peuvent envoyer des données à ce client. Par exemple, définissez le paramètre comme suit :- Les adresses IP du tunnel du serveur pour permettre uniquement au serveur de communiquer avec ce client. La valeur indiquée dans l'exemple ci-dessus configure ce scénario.
-
0.0.0.0/0;::/0;
pour permettre à n'importe quelle adresse IPv4 et IPv6 distante de communiquer avec ce client. Utilisez ce paramètre pour acheminer tout le trafic à travers le tunnel et utiliser le serveur WireGuard comme passerelle par défaut.
-
Le paramètre optionnel
persistent-keepalive
définit un intervalle en secondes dans lequel WireGuard envoie un paquet de maintien en vie au serveur. Définissez ce paramètre si vous utilisez le client dans un réseau avec traduction d'adresse réseau (NAT) ou si un pare-feu ferme la connexion UDP après un certain temps d'inactivité.
-
L'entrée
Recharger le profil de connexion
client-wg0
:# nmcli connection load /etc/NetworkManager/system-connections/client-wg0.nmconnection
Réactiver la connexion
client-wg0
:# nmcli connection up client-wg0
Vérification
Effectuer un sondage (ping) des adresses IP du serveur :
# ping 192.0.2.1 # ping6 2001:db8:1::1
Affichez la configuration de l'interface de l'appareil
wg0
:# wg show wg0 interface: wg0 public key: bnwfQcC8/g2i4vvEqcRUM2e6Hi3Nskk6G9t4r26nFVM= private key: (hidden) listening port: 51820 peer: UtjqCJ57DeAscYKRfp7cFGiQqdONRn69u249Fa4O6BE= endpoint: server.example.com:51820 allowed ips: 192.0.2.1/32, 2001:db8:1::1/128 latest handshake: 1 minute, 41 seconds ago transfer: 824 B received, 1.01 KiB sent persistent keepalive: every 20 seconds
Pour afficher la clé privée dans la sortie, utilisez la commande
WG_HIDE_KEYS=never wg show wg0
pour afficher la clé privée dans la sortie.Notez que la sortie ne contient que les entrées
latest handshake
ettransfer
si vous avez déjà envoyé du trafic via le tunnel VPN.Affichez la configuration IP de l'appareil
wg0
:# ip address show wg0 10: wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000 link/none inet 192.0.2.2/24 brd 192.0.2.255 scope global noprefixroute wg0 valid_lft forever preferred_lft forever inet6 2001:db8:1::2/32 scope global noprefixroute valid_lft forever preferred_lft forever inet6 fe80::73d9:6f51:ea6f:863e/64 scope link noprefixroute valid_lft forever preferred_lft forever
Ressources supplémentaires
-
La page de manuel
wg(8)
-
La section
WireGuard setting
dans la page de manuelnm-settings(5)