WireGuard no puede crear su interfaz: ¿núcleo o permisos?
La creación de la interfaz falla antes de que ningún par envíe un saludo. Lea el error para distinguir un módulo ausente de un límite de privilegios o de un propietario existente de la interfaz.
WireGuard no logra crear su interfaz, así que no hay dispositivo que configurar, ni clave que intercambiar, ni saludo que depurar. El fallo se queda por completo en la máquina local, y el texto del error dice qué parte de la pila local lo rechazó. Leerlo correctamente es más rápido que reinstalar la configuración del par. Las capas se pueden separar, y el mensaje nombra la que rechazó.
El error ocurre antes de que hable cualquier par
Crear una interfaz es una sola petición netlink al núcleo que pide un dispositivo de tipo wireguard. El núcleo o tiene un controlador que entiende ese tipo o no lo tiene, y la respuesta vuelve de inmediato. Ningún paquete sale de la máquina durante este paso, y por eso las direcciones de los extremos y las claves del servidor no pueden ser la causa.
Ese orden importa para el diagnóstico. Si el comando nunca creó un dispositivo, el problema no puede ser una clave pública equivocada ni un puerto UDP bloqueado. Arregle primero la ruta local de creación y solo después mire hacia fuera.
Qué implementación debe poseer el dispositivo
Dos implementaciones pueden responder a esa petición. El módulo dentro del núcleo registra el tipo de dispositivo wireguard, y una implementación en espacio de usuario como wireguard-go ofrece la misma interfaz mediante un mecanismo distinto. Si el módulo falta, el núcleo rechaza la petición con un error de dispositivo no compatible, y la solución es o cargar el módulo o apuntar las herramientas a la implementación en espacio de usuario.
Compruebe qué hay realmente antes de elegir entre ambas. El primer comando muestra si el módulo está cargado y el segundo pregunta al núcleo directamente:
lsmod | grep wireguard
ip link add wgtest0 type wireguard
El segundo comando es la reproducción más pequeña posible: pide un dispositivo y nada más. Si falla con un mensaje de tipo no compatible, la pieza que falta es la implementación y no su archivo de configuración.
| 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 |
Privilegios y límites del contenedor
Crear y configurar un dispositivo de red requiere privilegios, ya sea como root o con la capacidad de administrar la red. Una sesión de usuario normal no puede hacerlo, y esa restricción es el diseño y no un obstáculo que se deba esquivar ejecutando un instalador que no ha revisado.
Dentro de un contenedor el límite se duplica. El contenedor necesita acceso al dispositivo de túnel y la capacidad de configurarlo, y los indicadores que lo conceden son los mismos que usa un contenedor de VPN en Linux. Un invitado restringido que puede navegar por la web con normalidad sigue sin poder crear una interfaz, porque navegar no necesita esa capacidad. Conceda la capacidad al servicio que la necesita y no a cada sesión del anfitrión.
Resuelva el conflicto de nombres y vuelva a intentarlo
Una interfaz que ya existe no es automáticamente un resto. Otro gestor puede poseer el nombre y estar usándolo ahora mismo, así que inspecciónela antes de borrar cualquier cosa:
ip link show wg0
sudo wg show wg0
Si el propietario es un servicio activo, configure ese servicio en lugar de crear un segundo dispositivo. Si de verdad está obsoleta, elimínela con la herramienta que la creó y luego levante la interfaz con el cliente o la unidad documentados, para que la configuración y el dispositivo sigan sincronizados.
Una vez que la creación tiene éxito, el siguiente fallo pertenece a una etapa posterior, y una unidad que informa de un fallo después de que el dispositivo exista es un problema distinto del de un dispositivo que nunca se creó. Separe ambos antes de volver a cambiar permisos.