WireGuard kan ikkje lage grensesnittet sitt: kjerne eller løyve?
Opprettinga av grensesnittet mislukkast før nokon peer har sendt eit handtrykk. Les feilen for å skilje ein manglande modul frå ei privilegiegrense eller frå ein eksisterande eigar av grensesnittet.
WireGuard klarer ikkje å lage grensesnittet sitt, så det finst inga eining å konfigurere, ingen nøkkel å bytte og ingen handtrykk å feilsøkje. Feilen ligg heilt på den lokale maskina, og feilteksten seier kva del av den lokale stakken som avviste. Å lese han rett er snøggare enn å installere konfigurasjonen til peeren på nytt. Laga kan skiljast, og meldinga namngjev laget som avviste.
Feilen skjer før nokon peer talar
Å lage eit grensesnitt er éin netlink-førespurnad til kjernen om ei eining av typen wireguard. Kjernen har anten ein drivar som skjønar den typen eller ikkje, og svaret kjem straks tilbake. Ingen pakkar forlèt maskina i dette steget, og difor kan endepunktadresser og tenarnøklar ikkje vere årsaka.
Den rekkjefølgja har mykje å seie for diagnosen. Viss kommandoen aldri laga ei eining, kan problemet ikkje vere ein feil offentleg nøkkel eller ein blokkert UDP-port. Reparer den lokale opprettingsvegen fyrst og sjå utover fyrst etterpå.
Kva implementasjon som skal eige eininga
To implementasjonar kan svare på den førespurnaden. Modulen i kjernen registrerer einingstypen wireguard, og ein implementasjon i brukarrommet som wireguard-go tilbyr det same grensesnittet gjennom ein annan mekanisme. Viss modulen manglar, avviser kjernen førespurnaden med ein feil om ei eining som ikkje er støtta, og løysinga er anten å laste modulen eller å peike verktøya mot implementasjonen i brukarrommet.
Sjekk kva som faktisk er til stades før du vel mellom dei. Den fyrste kommandoen viser om modulen er lasta, og den andre spør kjernen direkte:
lsmod | grep wireguard
ip link add wgtest0 type wireguard
Den andre kommandoen er den minste moglege attgivinga: han ber om ei eining og ingenting anna. Viss han mislukkast med ei melding om ein type som ikkje er støtta, er den manglande biten implementasjonen og ikkje konfigurasjonsfila di.
| 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 |
Privilegium og grenser i containeren
Å lage og konfigurere ei netteining krev privilegium, anten som root eller med evna til å administrere nettet. Ein vanleg brukarsesjon kan ikkje gjere det, og den avgrensinga er designet og ikkje ein hindring som skal omgåast ved å køyre eit installasjonsprogram du ikkje har gått gjennom.
Inne i ein container blir grensa dobla. Containeren treng tilgang til tunneleininga og evna til å konfigurere henne, og flagga som gjev det er dei same som ein Linux VPN-container brukar. Ein avgrensa gjest som normalt kan surfe på nettet, kan framleis ikkje lage eit grensesnitt, fordi surfing ikkje krev den evna. Gje evna til tenesta som treng henne, og ikkje til kvar sesjon på verten.
Løys namnekonflikten og prøv så igjen
Eit grensesnitt som alt finst er ikkje automatisk ein rest. Ein annan handterar kan eige namnet og bruke det akkurat no, så undersøk det før du slettar noko:
ip link show wg0
sudo wg show wg0
Viss eigaren er ei aktiv teneste, konfigurer den tenesta i staden for å lage ei anna eining. Viss ho verkeleg er utdatert, fjern henne gjennom verktøyet som laga henne, og hent så grensesnittet opp med den dokumenterte klienten eller uniten slik at konfigurasjonen og eininga held fylgje.
Når opprettinga lukkast, høyrer den neste feilen til eit seinare trinn, og ein unit som rapporterer feil etter at eininga finst, er eit anna problem enn ei eining som aldri vart laga. Skil dei to før du endrar løyve igjen.