WireGuard legt seine Schnittstelle nicht an, also gibt es kein Gerät zum Konfigurieren, keinen Schlüssel zum Austauschen und keinen Handshake zum Debuggen. Der Fehler liegt vollständig auf der lokalen Maschine, und der Fehlertext sagt, welcher Teil des lokalen Stapels die Anfrage abgelehnt hat. Ihn richtig zu lesen ist schneller, als die Konfiguration des Peers neu zu installieren. Die Schichten lassen sich trennen, und die Meldung benennt die Schicht, die abgelehnt hat.

Der Fehler tritt auf, bevor irgendein Peer spricht

Eine Schnittstelle anzulegen ist eine einzige netlink-Anfrage an den Kernel nach einem Gerät vom Typ wireguard. Entweder hat der Kernel einen Treiber, der diesen Typ kennt, oder nicht, und die Antwort kommt sofort zurück. In diesem Schritt verlässt kein Paket die Maschine, deshalb können Endpunktadressen und Serverschlüssel nicht die Ursache sein.

Diese Reihenfolge ist für die Diagnose wichtig. Wenn der Befehl nie ein Gerät angelegt hat, kann das Problem kein falscher öffentlicher Schlüssel und kein blockierter UDP-Port sein. Reparieren Sie zuerst den lokalen Anlegepfad und schauen Sie erst danach nach außen.

Welche Implementierung das Gerät besitzen soll

Zwei Implementierungen können diese Anfrage beantworten. Das Modul im Kernel registriert den Gerätetyp wireguard, und eine Implementierung im Benutzerraum wie wireguard-go bietet dieselbe Schnittstelle über einen anderen Mechanismus. Fehlt das Modul, lehnt der Kernel die Anfrage mit einem Fehler über ein nicht unterstütztes Gerät ab, und die Lösung ist entweder, das Modul zu laden oder die Werkzeuge auf die Implementierung im Benutzerraum zu richten.

Prüfen Sie, was tatsächlich vorhanden ist, bevor Sie zwischen beiden wählen. Der erste Befehl zeigt, ob das Modul geladen ist, und der zweite fragt den Kernel direkt:

lsmod | grep wireguard
ip link add wgtest0 type wireguard

Der zweite Befehl ist die kleinstmögliche Nachstellung: Er fragt nach einem Gerät und sonst nichts. Scheitert er mit einer Meldung über einen nicht unterstützten Typ, fehlt die Implementierung und nicht Ihre Konfigurationsdatei.

Error textWhat refusedNext step
Unknown device type or operation not supportedThe kernel has no wireguard driverLoad the module or use the userspace implementation
Operation not permittedMissing privilegeUse the service context or grant the capability
File existsThe name is already in useInspect the owner before touching it
No such device in a containerNo tunnel device or capabilityAdd the device and NET_ADMIN to the container

Rechte und Grenzen des Containers

Ein Netzwerkgerät anzulegen und zu konfigurieren erfordert Rechte, entweder als root oder mit der Fähigkeit, das Netzwerk zu verwalten. Eine normale Benutzersitzung kann das nicht, und diese Einschränkung ist die Konstruktion und kein Hindernis, das man mit einem Installationsprogramm umgeht, das Sie nicht geprüft haben.

In einem Container verdoppelt sich die Grenze. Der Container braucht Zugriff auf das Tunnelgerät und die Fähigkeit, es zu konfigurieren, und die Flags, die das gewähren, sind dieselben, die ein Linux-VPN-Container verwendet. Ein eingeschränkter Gast, der normal im Web surfen kann, kann trotzdem keine Schnittstelle anlegen, denn Surfen braucht diese Fähigkeit nicht. Geben Sie die Fähigkeit dem Dienst, der sie braucht, und nicht jeder Sitzung auf dem Host.

Lösen Sie den Namenskonflikt und versuchen Sie es erneut

Eine Schnittstelle, die bereits existiert, ist nicht automatisch ein Überbleibsel. Ein anderer Verwalter kann den Namen besitzen und ihn gerade jetzt nutzen, also prüfen Sie sie, bevor Sie etwas löschen:

ip link show wg0
sudo wg show wg0

Ist der Eigentümer ein aktiver Dienst, konfigurieren Sie diesen Dienst, statt ein zweites Gerät anzulegen. Ist sie wirklich veraltet, entfernen Sie sie über das Werkzeug, das sie angelegt hat, und bringen Sie die Schnittstelle dann mit dem dokumentierten Client oder der Unit hoch, damit Konfiguration und Gerät im Gleichschritt bleiben.

Sobald das Anlegen gelingt, gehört der nächste Fehler zu einer späteren Stufe, und eine Unit, die einen Fehler meldet, nachdem das Gerät existiert, ist ein anderes Problem als ein Gerät, das nie angelegt wurde. Trennen Sie beides, bevor Sie erneut Berechtigungen ändern.

Ähnliche Artikel