Rechercher

8.11. Configuration d'un client WireGuard à l'aide de nmcli

download PDF

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
  • Serveur :

    • Clé publique : UtjqCJ57DeAscYKRfp7cFGiQqdONRn69u249Fa4O6BE=
    • Adresse IPv4 du tunnel : 192.0.2.1/24
    • Adresse IPv6 du tunnel : 2001:db8:1::1/32

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

  1. 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 virtuelle wg0. Pour éviter que la connexion ne démarre automatiquement après l'avoir ajoutée sans finaliser la configuration, désactivez le paramètre autoconnect.

  2. Optionnel : Configurez NetworkManager pour qu'il ne démarre pas automatiquement la connexion client-wg:

    # nmcli connection modify client-wg0 autoconnect no
  3. 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
  4. 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
  5. 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.

  6. Ajouter la clé privée du serveur au profil de connexion :

    # nmcli connection modify client-wg0 wireguard.private-key "aPUcp5vHz8yMLrzk8SsDyYnV33IhE/k20e52iKJFV0A="
    1. 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é.
    2. Recharger le profil de connexion client-wg0:

      # nmcli connection load /etc/NetworkManager/system-connections/client-wg0.nmconnection
  7. Réactiver la connexion client-wg0:

    # nmcli connection up client-wg0

Vérification

  1. Effectuer un sondage (ping) des adresses IP du serveur :

    # ping 192.0.2.1
    # ping6 2001:db8:1::1
  2. 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 et transfer si vous avez déjà envoyé du trafic via le tunnel VPN.

  3. 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 manuel nm-settings(5)
Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.