WireGuard nepavyksta sukurti savo sąsajos, todėl nėra įrenginio, kurį būtų galima konfigūruoti, nėra rakto, kurį būtų galima apsikeisti, ir nėra rankos paspaudimo, kurį būtų galima derinti. Gedimas visiškai lieka vietinėje mašinoje, o klaidos tekstas pasako, kuri vietinio kamino dalis atsisakė. Teisingai jį perskaičius greičiau nei perdiegti partnerio konfigūraciją. Sluoksniai yra atskiriami, o pranešimas įvardija tą, kuris atsisakė.

Klaida įvyksta dar prieš tai, kai kuris nors partneris prakalba

Sąsajos kūrimas yra viena netlink užklausa branduoliui dėl wireguard tipo įrenginio. Branduolys turi to tipo tvarkyklę arba ne, o atsakymas grįžta iš karto. Šiame žingsnyje joks paketas nepalieka mašinos, todėl galinių taškų adresai ir serverio raktai negali būti priežastis.

Ši tvarka svarbi diagnozei. Jei komanda niekada nesukūrė įrenginio, problema negali būti neteisingas viešasis raktas ar užblokuotas UDP prievadas. Pirmiausia pataisykite vietinį kūrimo kelią ir tik tada žiūrėkite į išorę.

Kuri implementacija turėtų valdyti įrenginį

Į šią užklausą gali atsakyti dvi implementacijos. Branduolio viduje esantis modulis registruoja wireguard įrenginio tipą, o vartotojo erdvėje veikianti implementacija, pavyzdžiui wireguard-go, teikia tą pačią sąsają kitu mechanizmu. Jei modulio nėra, branduolys atmeta užklausą su nepalaikomo įrenginio klaida, o sprendimas yra arba įkelti modulį, arba nukreipti įrankius į vartotojo erdvės implementaciją.

Prieš pasirinkdami vieną iš jų patikrinkite, kas iš tikrųjų yra. Pirmoji komanda parodo, ar modulis įkeltas, o antroji klausia branduolio tiesiogiai:

lsmod | grep wireguard
ip link add wgtest0 type wireguard

Antroji komanda yra mažiausias įmanomas atkūrimas: ji prašo įrenginio ir nieko daugiau. Jei ji nepavyksta su nepalaikomo tipo pranešimu, trūkstama dalis yra implementacija, o ne jūsų konfigūracijos failas.

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

Teisės ir konteinerio ribos

Kurti ir konfigūruoti tinklo įrenginį reikia teisių: arba kaip root, arba su galimybe administruoti tinklą. Įprasta vartotojo sesija to negali, ir šis apribojimas yra pati konstrukcija, o ne kliūtis, kurią reikia apeiti paleidus jūsų nepatikrintą diegimo programą.

Konteinerio viduje riba padvigubėja. Konteineriui reikia prieigos prie tunelio įrenginio ir galimybės jį konfigūruoti, o vėliavėlės, kurios tai suteikia, yra tos pačios, kurias naudoja Linux VPN konteineris. Apribotas svečias, kuris paprastai gali naršyti žiniatinklyje, vis tiek negali sukurti sąsajos, nes naršymui tokios galimybės nereikia. Suteikite galimybę tai paslaugai, kuriai jos reikia, o ne kiekvienai sesijai pagrindinėje mašinoje.

Išspręskite vardų konfliktą ir bandykite dar kartą

Jau egzistuojanti sąsaja nėra automatiškai likutis. Kitą valdytoją gali priklausyti vardas ir naudoti jį šiuo metu, todėl apžiūrėkite ją prieš ką nors šalindami:

ip link show wg0
sudo wg show wg0

Jei savininkas yra aktyvi paslauga, konfigūruokite tą paslaugą, o ne kurkite antrą įrenginį. Jei ji tikrai pasenusi, pašalinkite ją įrankiu, kuris ją sukūrė, o tada pakelkite sąsają dokumentuotu klientu ar unitu, kad konfigūracija ir įrenginys išliktų suderinti.

Kai kūrimas pavyksta, kitas gedimas priklauso vėlesniam etapui, o unit, kuris praneša apie gedimą po to, kai įrenginys egzistuoja, yra kita problema nei įrenginys, kuris niekada nebuvo sukurtas. Atskirkite abu prieš vėl keisdami teises.

Susiję straipsniai