WireGuard ne more ustvariti svojega vmesnika: jedro ali dovoljenja?
Ustvarjanje vmesnika spodleti še pred prvim rokovanjem z nasprotnikom. Preberite napako, da ločite manjkajoči modul od meje dovoljenj ali od obstoječega lastnika vmesnika.
WireGuard ne uspe ustvariti svojega vmesnika, zato ni naprave za konfiguriranje, ni ključa za izmenjavo in ni rokovanja za razhroščevanje. Napaka v celoti ostane na lokalnem računalniku, besedilo napake pa pove, kateri del lokalnega sklada je zavrnil. Pravilno branje je hitrejše od ponovne namestitve konfiguracije nasprotnika. Sloje lahko ločimo, sporočilo pa imenuje tistega, ki je zavrnil.
Napaka se zgodi, preden spregovori kateri koli nasprotnik
Ustvarjanje vmesnika je ena zahteva netlink jedru za napravo vrste wireguard. Jedro ima gonilnik, ki to vrsto razume, ali pa ga nima, odgovor pa pride takoj. V tem koraku noben paket ne zapusti računalnika, zato naslovi končnih točk in ključi strežnika ne morejo biti vzrok.
Ta vrstni red je pomemben za diagnozo. Če ukaz nikoli ni ustvaril naprave, težava ne more biti napačen javni ključ ali blokirana vrata UDP. Najprej popravite lokalno pot ustvarjanja in šele nato poglejte navzven.
Katera izvedba naj bi imela napravo v lasti
Na to zahtevo lahko odgovorita dve izvedbi. Modul v jedru registrira vrsto naprave wireguard, izvedba v uporabniškem prostoru, kot je wireguard-go, pa ponuja isti vmesnik z drugim mehanizmom. Če modula ni, jedro zahtevo zavrne z napako o nepodprti napravi, rešitev pa je bodisi naložiti modul bodisi usmeriti orodja na izvedbo v uporabniškem prostoru.
Preden izbirate med njima, preverite, kaj je v resnici prisotno. Prvi ukaz pokaže, ali je modul naložen, drugi pa jedro vpraša neposredno:
lsmod | grep wireguard
ip link add wgtest0 type wireguard
Drugi ukaz je najmanjša možna ponovitev: zahteva napravo in nič drugega. Če spodleti s sporočilom o nepodprti vrsti, je manjkajoči del izvedba in ne vaša konfiguracijska datoteka.
| 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 |
Dovoljenja in meje vsebnika
Ustvarjanje in konfiguriranje omrežne naprave zahteva dovoljenje, bodisi kot root bodisi z zmožnostjo upravljanja omrežja. Običajna uporabniška seja tega ne more, in ta omejitev je zasnova in ne ovira, ki bi jo obšli z zagonom namestitvenega programa, ki ga niste pregledali.
Znotraj vsebnika se meja podvoji. Vsebnik potrebuje dostop do tunelske naprave in zmožnost, da jo konfigurira, zastavice, ki to dajejo, pa so enake tistim, ki jih uporablja vsebnik VPN na Linuxu. Omejen gost, ki običajno lahko brska po spletu, še vedno ne more ustvariti vmesnika, ker brskanje ne potrebuje takšne zmožnosti. Dajte zmožnost storitvi, ki jo potrebuje, in ne vsaki seji na gostitelju.
Rešite spor zaradi imena in poskusite znova
Vmesnik, ki že obstaja, ni samodejno ostanek. Drug upravljavec je lahko lastnik imena in ga prav zdaj uporablja, zato ga preglejte, preden karkoli izbrišete:
ip link show wg0
sudo wg show wg0
Če je lastnik aktivna storitev, konfigurirajte to storitev, namesto da ustvarite drugo napravo. Če je res zastarela, jo odstranite z orodjem, ki jo je ustvarilo, nato pa dvignite vmesnik z dokumentiranim odjemalcem ali enoto, da ostaneta konfiguracija in naprava usklajeni.
Ko ustvarjanje uspe, naslednja napaka pripada poznejši stopnji, in enota, ki poroča o napaki po tem, ko naprava obstaja, je drugačna težava kot naprava, ki ni bila nikoli ustvarjena. Ločite oboje, preden znova spremenite dovoljenja.