Transparence affiliation - Cet article contient des liens affiliés Contabo. Si vous prenez un VPS via ces liens, nous touchons une commission sans surcoût pour vous.
Vous lancez wg-quick up wg0 et la commande s'arrête sur une seule ligne :
Unable to access interface: Operation not permitted
La première réponse que vous trouverez, c'est d'ajouter sudo. Très souvent, sudo est déjà là, et la commande échoue quand même : c'est là que la plupart des gens restent bloqués.
Ce que le message rapporte
Operation not permitted, c'est EPERM, renvoyé par le noyau quand wg tente de configurer l'interface via netlink. On a demandé au noyau, et le noyau a dit non. C'est une affirmation plus étroite qu'il n'y paraît, et il vaut la peine de la distinguer de deux erreurs avec lesquelles on la confond :
- No such device signifie que l'interface n'existe pas. Autre problème.
- Command not found ou une erreur de module signifie que l'outil ou le module noyau est absent. Autre problème aussi.
Ici, l'outil s'est exécuté, l'appel a été fait, et la permission a été refusée au niveau du noyau. La question n'est donc pas « suis-je root », mais « qu'est-ce qui d'autre bloque cet appel ».
Cause 1 : vous n'êtes réellement pas root
À éliminer en une commande, puisque ça ne coûte rien :
id -u
Si le résultat n'est pas 0 et que vous n'avez pas utilisé sudo, vous avez votre réponse. S'il affiche 0, passez à la suite. Notez que sudo wg-quick up wg0 et sudo -E wg-quick up wg0 ne traitent pas l'environnement de la même façon, mais aucun des deux ne change la question des capabilities ci-dessous.
Cause 2 : un conteneur sans CAP_NET_ADMIN
C'est le cas le plus courant, et sudo ne peut rien y faire. Dans un conteneur, vous pouvez être uid 0 et quand même ne pas avoir la capability qui autorise l'administration réseau. Root dans un conteneur n'est pas root sur l'hôte.
Vérifiez ce que vous détenez réellement :
capsh --print | grep -i net_admin
Pas de cap_net_admin dans l'ensemble effectif, et le noyau refusera, à chaque fois, sudo ou pas. Pour Docker :
docker run --cap-add NET_ADMIN --device /dev/net/tun ...
Pour un conteneur LXC non privilégié, la capability seule ne suffit généralement pas, car le périphérique tun n'est pas exposé ; il faut le faire passer dans la configuration du conteneur. C'est la même chose quand le « serveur » que vous louez est lui-même un conteneur : sur les offres VPS basées sur OpenVZ ou LXC, c'est le noyau de l'hébergeur qui décide de ce que vous avez le droit de faire, et aucun sudo de votre côté n'ajoutera NET_ADMIN. La solution, dans ce cas, c'est une instance KVM, abordée à la fin de cet article. Si votre WireGuard tourne dans un conteneur par choix, la configuration conteneurisée est traitée à part dans faire tourner WireGuard dans Docker.

Si vous préférez partir d'une définition de conteneur qui porte déjà les bonnes capabilities, le modèle docker-compose de notre WireGuard Self-Hosting Kit (9 USD, PDF + Markdown + fichiers .conf prêts à l'emploi) déclare cap_add: NET_ADMIN, SYS_MODULE et le sysctl net.ipv4.ip_forward=1, avec l'interface web liée uniquement à l'adresse du tunnel. Le kit contient aussi une checklist de 12 causes pour un tunnel qui monte mais ne fait passer aucun trafic. Tout ce qui figure sur cette page reste gratuit. Voir le kit sur Gumroad.
Cause 3 : le fichier de config que l'outil refuse de lire
wg-quick lit /etc/wireguard/wg0.conf avant de toucher à l'interface. Deux problèmes au niveau du fichier surviennent autour de cette étape :
ls -l /etc/wireguard/wg0.conf
Le mode doit être 600 et le propriétaire root. Une config lisible par tous qui contient une clé privée est un vrai problème en soi, et wg-quick vous le signalera. Un fichier que l'utilisateur appelant ne peut pas lire provoque un échec plus tôt dans l'exécution, avant tout appel netlink : lisez donc toute la sortie, pas seulement la dernière ligne.
chmod 600 /etc/wireguard/wg0.conf
chown root:root /etc/wireguard/wg0.conf
Cause 4 : quelque chose au-dessus du noyau dit non
Si vous êtes root, que vous détenez NET_ADMIN et que le fichier est propre, regardez ce qui d'autre peut renvoyer EPERM sur un appel netlink :
- Un module de sécurité. SELinux ou AppArmor en mode enforcing peut refuser l'opération. Un
dmesg | tailjuste après la commande en échec est le moyen le plus rapide de voir un refus, car ces modules journalisent là où la commande reste muette. - Un
/sysen lecture seule ou restreint. Certains environnements durcis ou minimaux le montent d'une façon qui bloque la mise en place de l'interface. - Un filtre d'appels système. Un profil seccomp qui bloque les appels concernés produit le même errno, sans aucun autre indice.
dmesg | tail -20
Si rien n'apparaît dans dmesg, la cause 4 est peu probable, et la réponse est presque certainement la cause 2.
L'ordre à suivre
id -u: confirmez que vous êtes à 0.capsh --print | grep net_admin: confirmez la capability.ls -l /etc/wireguard/wg0.conf: confirmez le mode 600 et le propriétaire root.dmesg | tail -20juste après l'échec : cherchez un refus.
Quatre commandes, qui éliminent les causes dans l'ordre de leur fréquence réelle.
Une fois l'interface montée
Un wg-quick up réussi n'est pas la même chose qu'un tunnel fonctionnel. Si l'interface existe maintenant mais que rien ne passe, vous êtes passé à une question de routage ou de handshake, plus de permissions : le côté handshake est traité dans le dépannage du handshake WireGuard, et les erreurs d'adresse qui apparaissent juste après dans l'erreur bad address.
Pour héberger tout ça sur un VPS, root et NET_ADMIN sont fournis d'office avec une instance KVM, ce qui est une raison de la préférer aux offres moins chères basées sur des conteneurs, où ce problème précis est intégré d'origine. Un invité KVM fait tourner son propre noyau, donc wg-quick up s'adresse à un noyau que vous contrôlez, pas à celui de l'hébergeur. La gamme Cloud VPS de Contabo est virtualisée en KVM (indiqué sur contabo.com, vérifié le 18 octobre 2026) et c'est celle que nous utilisons pour nos propres guides ; nos notes sur les alternatives sont dans le VPS le moins cher pour un VPN WireGuard.
★ Datacenter Nuremberg GDPR · ✓ IPv4 dédiée incluse · port 200 Mbit/s
Un VPS KVM où root est vraiment root → Contabo Cloud VPS 45,50 €/mois (vérifié le 18 octobre 2026, 24 premiers mois) · KVM, noyau propre, NET_ADMIN inclus · 4 vCPU, 8 Go de RAM, IPv4 publique→★ Datacenter Nuremberg GDPR · ✓ IPv4 dédiée incluse · port 200 Mbit/s
Héberge ton VPN sur ton propre VPS → ContaboAccès root complet · IPv4 publique · choisis ta région→


