WireGuard ne može stvoriti svoj interfejs: kernel ili dozvole?
Stvaranje interfejsa pada prije prve razmjene s peerom. Pročitajte grešku da razlikujete modul koji nedostaje od granice privilegija ili od postojećeg vlasnika interfejsa.
WireGuard ne uspijeva stvoriti svoj interfejs, pa nema uređaja za konfiguraciju, nema ključa za razmjenu i nema handshakea za otklanjanje grešaka. Kvar u potpunosti ostaje na lokalnoj mašini, a tekst greške kaže koji je dio lokalnog steka odbio zahtjev. Ispravno čitanje je brže od ponovne instalacije konfiguracije peera. Slojevi se mogu razdvojiti, a poruka imenuje onaj koji je odbio.
Greška se javlja prije nego se bilo koji peer oglasi
Stvaranje interfejsa je jedan netlink zahtjev kernelu za uređaj tipa wireguard. Kernel ili ima drajver koji razumije taj tip ili ga nema, a odgovor se vraća odmah. Nijedan paket ne napušta mašinu tokom ovog koraka, zato adrese krajnjih tačaka i serverski ključevi ne mogu biti uzrok.
Taj redoslijed je važan za dijagnostiku. Ako komanda nikada nije stvorila uređaj, problem ne može biti pogrešan javni ključ ni blokiran UDP port. Prvo popravite lokalni put stvaranja i tek onda gledajte prema van.
Koja implementacija treba posjedovati uređaj
Dvije implementacije mogu odgovoriti na taj zahtjev. Modul u kernelu registruje tip uređaja wireguard, a implementacija u korisničkom prostoru poput wireguard-go pruža isti interfejs kroz drugačiji mehanizam. Ako modul nedostaje, kernel odbija zahtjev s greškom o nepodržanom uređaju, a rješenje je ili učitati modul ili usmjeriti alate na implementaciju u korisničkom prostoru.
Provjerite šta je zaista prisutno prije nego birate između njih. Prva komanda pokazuje je li modul učitan, a druga pita kernel direktno:
lsmod | grep wireguard
ip link add wgtest0 type wireguard
Druga komanda je najmanja moguća reprodukcija: traži uređaj i ništa drugo. Ako padne s porukom o nepodržanom tipu, dio koji nedostaje je implementacija, a 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 |
Privilegije i granice kontejnera
Stvaranje i konfiguracija mrežnog uređaja zahtijeva privilegiju, bilo kao root ili s mogućnošću administracije mreže. Normalna korisnička sesija to ne može, i to ograničenje je dizajn, a ne prepreka koju treba zaobići pokretanjem instalatera koji niste pregledali.
Unutar kontejnera granica se udvostručuje. Kontejneru treba pristup tunelskom uređaju i mogućnost da ga konfiguriše, a zastavice koje to daju iste su one koje koristi Linux VPN kontejner. Ograničeni gost koji normalno može pregledavati web još uvijek ne može stvoriti interfejs, jer pregledanje ne zahtijeva takvu mogućnost. Dajte mogućnost servisu kojem treba, a ne svakoj sesiji na hostu.
Riješite sukob imena, pa pokušajte ponovo
Interfejs koji već postoji nije automatski ostatak. Drugi upravljač može posjedovati ime i koristiti ga upravo sada, zato ga pregledajte prije nego bilo šta obrišete:
ip link show wg0
sudo wg show wg0
Ako je vlasnik aktivni servis, konfigurišite taj servis umjesto da stvarate drugi uređaj. Ako je zaista zastario, uklonite ga alatom koji ga je stvorio, pa podignite interfejs dokumentovanim klijentom ili unitom kako bi konfiguracija i uređaj ostali usklađeni.
Kada stvaranje uspije, sljedeći kvar pripada kasnijoj fazi, a unit koji prijavi kvar nakon što uređaj postoji drugi je problem od uređaja koji nikada nije stvoren. Razdvojite to dvoje prije nego ponovo mijenjate dozvole.