VPNSmith
self-host-vpnINFO

WireGuard sur macOS : les deux installations, et le nom d'interface qui casse les tutoriels Linux

L'app du Mac App Store et brew install wireguard-tools ne sont pas le même produit. Lequel choisir, comment importer un .conf, et pourquoi wg0 échoue sur macOS alors que utun fonctionne.

Par Eric Gerard · Fondateur · VPNSmith - Spécialiste self-host VPN & VPS GDPR4 min de lecturePhoto via Pixabay

Installer WireGuard sur un Mac paraît trivial, jusqu'à ce que le tutoriel suivi ait été écrit pour Linux. Deux choses font trébucher : il existe deux produits WireGuard différents pour macOS, et le nom d'interface que tout le monde emploie dans les exemples, wg0, ne peut pas exister sur un Mac.

Les deux installations, d'après la page officielle

La page d'installation de WireGuard les liste toutes les deux, et ce sont réellement des logiciels distincts :

L'application du Mac App Store. Un client graphique avec un élément dans la barre de menus, l'import de tunnels et l'activation à la demande. C'est ce que veulent la plupart des gens.

Les outils en ligne de commande.

brew install wireguard-tools
# ou, avec MacPorts
port install wireguard-tools

Vous obtenez wg et wg-quick, les mêmes commandes que sur un serveur. En dessous tourne l'implémentation Go en espace utilisateur plutôt qu'un module noyau, car macOS n'a pas de WireGuard dans le noyau.

Ils ne partagent pas leur liste de tunnels. Un tunnel importé dans l'application n'apparaîtra pas dans wg show, et réciproquement. Choisissez-en un par machine, sauf raison précise d'avoir les deux.

Gros plan d'un écran de terminal affichant un listing de répertoires Unix en vert et bleu
Gros plan d'un écran de terminal affichant un listing de répertoires Unix en vert et bleu

Ce qui casse les tutoriels Linux : wg0 n'existe pas ici

C'est l'échec le plus fréquent, et le message d'erreur l'explique rarement.

Sous Linux, vous créez wg0 et vous passez à la suite. Sur macOS, les tunnels passent par le pilote utun, et la documentation multiplateforme de WireGuard énonce la contrainte sans ambiguïté : le pilote utun ne peut pas avoir de noms d'interface arbitraires. Il faut utiliser utun suivi d'un chiffre, par exemple utun0, ou simplement utun pour laisser le noyau choisir.

# echoue sur macOS
sudo wg-quick up wg0

# fonctionne
sudo wg-quick up utun

Si vous avez copié un guide qui dit wg0, renommez le fichier de configuration et toute commande qui s'y réfère. Les clés, AllowedIPs, Endpoint et DNS ne sont pas concernés : seul le nom d'interface dépend de la plateforme.

Savoir quel utun vous avez obtenu. Si vous laissez le noyau choisir, il faut un moyen de connaître le résultat. Définissez WG_TUN_NAME_FILE avant de monter le tunnel, et le nom retenu y est écrit :

export WG_TUN_NAME_FILE=/tmp/wg-name
sudo -E wg-quick up utun
cat /tmp/wg-name    # par exemple utun4

Sans cela, vous lisez la sortie d'ifconfig en devinant quel utun est le vôtre : acceptable une fois, pénible dans un script.

Importer une configuration existante

Si vous avez généré une configuration client sur votre serveur, elle se transfère telle quelle. Dans l'application, utilisez l'option d'import et sélectionnez le fichier .conf : le tunnel apparaît dans la liste, prêt à être activé. En ligne de commande, placez-le dans /opt/homebrew/etc/wireguard/utun.conf (Apple Silicon) ou /usr/local/etc/wireguard/utun.conf (Intel), en nommant le fichier d'après l'interface, puis lancez wg-quick up utun.

Une configuration générée pour un téléphone fonctionne aussi sur un Mac. C'est une définition de pair, pas un artefact propre à l'appareil, à condition que chaque appareil ait sa propre paire de clés et non une paire partagée.

Vérifier que cela fonctionne vraiment

Montez le tunnel, puis confirmez deux choses plutôt que de les supposer.

sudo wg show

Un pair en bonne santé affiche un latest handshake de moins de deux minutes et des compteurs transfer non nuls dans les deux sens. Envoyé mais rien reçu est la signature d'un chemin de retour bloqué. Si la poignée de main n'aboutit jamais, notre guide de dépannage du handshake parcourt les causes par ordre de probabilité.

Confirmez ensuite que le trafic passe réellement par le tunnel, et pas seulement que l'interface existe : vérifiez votre IP publique depuis le navigateur, et si vous routez le DNS par le tunnel, contrôlez l'absence de fuite. Notre note sur la prévention des fuites DNS avec WireGuard couvre les réglages qui comptent.

En bref

Deux produits : l'application de l'App Store pour un client graphique, wireguard-tools via Homebrew ou MacPorts pour la même ligne de commande que votre serveur. Ils ne partagent pas leurs tunnels. Et sur macOS, l'interface doit s'appeler utun ou utunN, jamais wg0, parce que le pilote utun n'accepte pas de noms arbitraires. Cette seule ligne explique la plupart des installations Mac ratées à partir de guides Linux.

★ Datacenter Nuremberg GDPR · ✓ IPv4 dédiée incluse · 200+ Mbps garantis

Votre Mac est le client. Le tunnel a besoin d'un serveur → VPS ContaboUn VPS Linux fait tourner le côté WireGuard auquel votre Mac se connecte, avec une implémentation noyau plutôt qu'en espace utilisateur. Accès root, tarif prévisible, datacenters européens.

★ Datacenter Nuremberg GDPR · ✓ IPv4 dédiée incluse · 200+ Mbps garantis

Héberge ton VPN sur ton propre VPS → ContaboAccès root complet · IPv4 publique · choisis ta région

Questions fréquentes

Comment installer WireGuard sur macOS ?
La page d'installation officielle liste deux voies. L'application graphique vient du Mac App Store. Les outils en ligne de commande viennent d'un gestionnaire de paquets : `brew install wireguard-tools` avec Homebrew, ou `port install wireguard-tools` avec MacPorts. Ce ne sont pas le même produit et ils ne partagent pas leur liste de tunnels : choisissez-en un et tenez-vous-y, sauf si vous voulez précisément les deux.
Pourquoi wg0 ne fonctionne-t-il pas sur macOS ?
Parce que macOS n'a pas de module WireGuard dans le noyau : les tunnels passent par l'implémentation en espace utilisateur, sur le pilote utun, et ce pilote n'accepte pas de noms d'interface arbitraires. La documentation multiplateforme de WireGuard est explicite : il faut utiliser utun suivi d'un chiffre, ou simplement utun pour laisser le noyau en choisir un. Un tutoriel Linux qui vous dit de créer wg0 échouera donc sur un Mac, et le message d'erreur explique rarement pourquoi.
Comment savoir quelle interface utun le noyau a choisie ?
Définissez la variable d'environnement WG_TUN_NAME_FILE avant de monter le tunnel. Quand le nom d'interface reste utun, le nom réellement retenu par le noyau est écrit dans le fichier que vous avez indiqué. Sans cela, il vous reste à lire la sortie d'`ifconfig` et à deviner quel utun est le vôtre.
Application du Mac App Store ou outils Homebrew : lequel choisir ?
L'application si vous voulez une expérience macOS normale : bascule depuis la barre de menus, import de tunnel par glisser-déposer, activation à la demande. Les wireguard-tools si vous scriptez, administrez la machine en SSH, ou voulez les mêmes commandes wg et wg-quick que sur votre serveur. L'application est en bac à sable et se met à jour via l'App Store ; la ligne de commande se met à jour via votre gestionnaire de paquets.
Puis-je réutiliser le fichier .conf de mon serveur Linux ?
Oui, côté client. Une configuration de pair est du texte brut et donc portable : les blocs [Interface] et [Peer] générés pour un portable fonctionnent tels quels. La seule chose qui ne se transfère pas est le nom d'interface : renommez-le en utun ou utunN si le fichier ou vos commandes mentionnent wg0. Clés, AllowedIPs, Endpoint et DNS se transposent sans changement.