WireGuard nie może utworzyć swojego interfejsu: jądro czy uprawnienia?
Tworzenie interfejsu kończy się niepowodzeniem, zanim jakikolwiek peer wyśle uścisk dłoni. Przeczytaj błąd, aby odróżnić brakujący moduł od granicy uprawnień lub od istniejącego właściciela interfejsu.
WireGuard nie potrafi utworzyć swojego interfejsu, więc nie ma urządzenia do skonfigurowania, klucza do wymiany ani uścisku dłoni do debugowania. Awaria pozostaje całkowicie na lokalnej maszynie, a tekst błędu mówi, która część lokalnego stosu odmówiła. Właściwe jego odczytanie jest szybsze niż ponowna instalacja konfiguracji peera. Warstwy można rozdzielić, a komunikat nazywa tę, która odmówiła.
Błąd pojawia się, zanim odezwie się jakikolwiek peer
Utworzenie interfejsu to jedno żądanie netlink do jądra o urządzenie typu wireguard. Jądro albo ma sterownik rozumiejący ten typ, albo go nie ma, a odpowiedź wraca natychmiast. Na tym etapie żaden pakiet nie opuszcza maszyny, dlatego adresy punktów końcowych i klucze serwera nie mogą być przyczyną.
Ta kolejność ma znaczenie dla diagnozy. Jeśli polecenie nigdy nie utworzyło urządzenia, problemem nie może być zły klucz publiczny ani zablokowany port UDP. Najpierw napraw lokalną ścieżkę tworzenia, a dopiero potem patrz na zewnątrz.
Która implementacja powinna posiadać urządzenie
Na to żądanie mogą odpowiedzieć dwie implementacje. Moduł wewnątrz jądra rejestruje typ urządzenia wireguard, a implementacja w przestrzeni użytkownika, taka jak wireguard-go, udostępnia ten sam interfejs innym mechanizmem. Jeśli modułu brakuje, jądro odrzuca żądanie błędem o nieobsługiwanym urządzeniu, a rozwiązaniem jest albo załadowanie modułu, albo skierowanie narzędzi do implementacji w przestrzeni użytkownika.
Zanim wybierzesz między nimi, sprawdź, co jest rzeczywiście obecne. Pierwsze polecenie pokazuje, czy moduł jest załadowany, a drugie pyta jądro bezpośrednio:
lsmod | grep wireguard
ip link add wgtest0 type wireguard
Drugie polecenie to najmniejsza możliwa reprodukcja: prosi o urządzenie i nic więcej. Jeśli kończy się komunikatem o nieobsługiwanym typie, brakującym elementem jest implementacja, a nie twój plik konfiguracyjny.
| 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 |
Uprawnienia i granice kontenera
Utworzenie i skonfigurowanie urządzenia sieciowego wymaga uprawnień, albo jako root, albo z możliwością zarządzania siecią. Zwykła sesja użytkownika nie może tego zrobić, a to ograniczenie jest projektem, a nie przeszkodą, którą trzeba obejść, uruchamiając nieprzejrzany instalator.
Wewnątrz kontenera granica się podwaja. Kontener potrzebuje dostępu do urządzenia tunelowego i możliwości jego skonfigurowania, a flagi, które to dają, są te same, których używa kontener VPN na Linuksie. Ograniczony gość, który normalnie może przeglądać sieć, nadal nie może utworzyć interfejsu, ponieważ przeglądanie nie wymaga takiej możliwości. Przyznaj możliwość usłudze, która jej potrzebuje, a nie każdej sesji na hoście.
Rozwiąż konflikt nazw, a następnie spróbuj ponownie
Istniejący już interfejs nie jest automatycznie pozostałością. Inny menedżer może być właścicielem nazwy i używać jej właśnie teraz, więc obejrzyj go, zanim cokolwiek usuniesz:
ip link show wg0
sudo wg show wg0
Jeśli właścicielem jest aktywna usługa, skonfiguruj tę usługę, zamiast tworzyć drugie urządzenie. Jeśli naprawdę jest przestarzały, usuń go narzędziem, które go utworzyło, a następnie podnieś interfejs udokumentowanym klientem lub jednostką, aby konfiguracja i urządzenie pozostały spójne.
Gdy utworzenie się powiedzie, kolejna awaria należy do późniejszego etapu, a jednostka zgłaszająca awarię po powstaniu urządzenia to inny problem niż urządzenie, które nigdy nie powstało. Oddziel jedno od drugiego, zanim ponownie zmienisz uprawnienia.