WireGuard no pot crear la seva interfície: nucli o permisos?
La creació de la interfície falla abans de qualsevol intercanvi amb un parell. Llegeix l’error per distingir un mòdul absent d’una frontera de privilegis o d’un propietari existent de la interfície.
WireGuard no aconsegueix crear la seva interfície, així que no hi ha cap dispositiu per configurar, cap clau per intercanviar i cap intercanvi de salutació per depurar. La fallada es queda tota a la màquina local, i el text de l’error diu quina part de la pila local ha refusat. Llegir-lo correctament és més ràpid que reinstal·lar la configuració del parell. Les capes es poden separar, i el missatge nomena la que ha refusat.
L’error passa abans que cap parell parli
Crear una interfície és una sola petició netlink al nucli que demana un dispositiu de tipus wireguard. El nucli o té un controlador que entén aquest tipus o no en té, i la resposta torna de seguida. Cap paquet surt de la màquina durant aquest pas, i per això les adreces dels extrems i les claus del servidor no poden ser la causa.
Aquest ordre importa per al diagnòstic. Si l’ordre no ha creat mai cap dispositiu, el problema no pot ser una clau pública equivocada ni un port UDP bloquejat. Arregla primer el camí local de creació i només després mira cap enfora.
Quina implementació ha de posseir el dispositiu
Dues implementacions poden respondre a aquesta petició. El mòdul dins del nucli registra el tipus de dispositiu wireguard, i una implementació en espai d’usuari com wireguard-go ofereix la mateixa interfície per un mecanisme diferent. Si el mòdul no hi és, el nucli rebutja la petició amb un error de dispositiu no suportat, i la solució és o carregar el mòdul o apuntar les eines a la implementació en espai d’usuari.
Comprova què hi ha realment abans de triar entre les dues. La primera ordre mostra si el mòdul està carregat i la segona pregunta al nucli directament:
lsmod | grep wireguard
ip link add wgtest0 type wireguard
La segona ordre és la reproducció més petita possible: demana un dispositiu i res més. Si falla amb un missatge de tipus no suportat, la peça que falta és la implementació i no el teu fitxer de configuració.
| Error text | What refused | Next step |
|---|---|---|
| Unknown device type or operation not supported | The kernel has no wireguard driver | Load the module or use the userspace implementation |
| Operation not permitted | Missing privilege | Use the service context or grant the capability |
| File exists | The name is already in use | Inspect the owner before touching it |
| No such device in a container | No tunnel device or capability | Add the device and NET_ADMIN to the container |
Privilegis i fronteres del contenidor
Crear i configurar un dispositiu de xarxa requereix privilegis, ja sigui com a root o amb la capacitat d’administrar la xarxa. Una sessió d’usuari normal no ho pot fer, i aquesta restricció és el disseny i no un obstacle que calgui esquivar executant un instal·lador que no has revisat.
Dins d’un contenidor la frontera es duplica. El contenidor necessita accés al dispositiu de túnel i la capacitat de configurar-lo, i els indicadors que ho concedeixen són els mateixos que fa servir un contenidor de VPN a Linux. Un hoste restringit que pot navegar per la web normalment encara no pot crear una interfície, perquè navegar no necessita aquesta capacitat. Concedeix la capacitat al servei que la necessita i no a cada sessió de l’amfitrió.
Resol el conflicte de noms i torna-ho a provar
Una interfície que ja existeix no és automàticament una resta. Un altre gestor pot posseir el nom i fer-lo servir ara mateix, així que inspecciona’l abans d’esborrar res:
ip link show wg0
sudo wg show wg0
Si el propietari és un servei actiu, configura aquest servei en lloc de crear un segon dispositiu. Si realment és obsolet, elimina’l amb l’eina que el va crear i després aixeca la interfície amb el client o la unitat documentats perquè la configuració i el dispositiu es mantinguin alineats.
Un cop la creació té èxit, la propera fallada pertany a una etapa posterior, i una unitat que informa d’una fallada després que el dispositiu existeixi és un problema diferent d’un dispositiu que mai s’ha creat. Separa les dues coses abans de tornar a canviar permisos.