WireGuard ei voi luoda liittymäänsä: ydin vai oikeudet?
Liittymän luonti epäonnistuu ennen kuin yksikään vastapuoli lähettää kättelyn. Lue virhe, jotta erotat puuttuvan moduulin oikeusrajasta tai liittymän olemassa olevasta omistajasta.
WireGuard ei onnistu luomaan liittymäänsä, joten ei ole laitetta määritettäväksi, ei avainta vaihdettavaksi eikä kättelyä selvitettäväksi. Virhe jää kokonaan paikalliselle koneelle, ja virheteksti kertoo, mikä paikallisen pinon osa kieltäytyi. Sen oikein lukeminen on nopeampaa kuin vastapuolen kokoonpanon uudelleenasentaminen. Kerrokset ovat erotettavissa, ja viesti nimeää sen, joka kieltäytyi.
Virhe tapahtuu ennen kuin mikään vastapuoli puhuu
Liittymän luominen on yksi netlink-pyyntö ytimelle laitteesta, jonka tyyppi on wireguard. Ytimellä joko on tyypin ymmärtävä ajuri tai ei ole, ja vastaus tulee heti. Tässä vaiheessa koneesta ei lähde yhtään pakettia, minkä vuoksi päätepisteiden osoitteet ja palvelimen avaimet eivät voi olla syy.
Tällä järjestyksellä on merkitystä diagnoosille. Jos komento ei koskaan luonut laitetta, ongelma ei voi olla väärä julkinen avain eikä estetty UDP-portti. Korjaa ensin paikallinen luontipolku ja katso ulospäin vasta sen jälkeen.
Minkä toteutuksen pitäisi omistaa laite
Kaksi toteutusta voi vastata tuohon pyyntöön. Ytimen sisäinen moduuli rekisteröi laitetyypin wireguard, ja käyttäjäavaruuden toteutus kuten wireguard-go tarjoaa saman liittymän toisella mekanismilla. Jos moduuli puuttuu, ydin hylkää pyynnön virheellä tukemattomasta laitteesta, ja ratkaisu on joko ladata moduuli tai ohjata työkalut käyttäjäavaruuden toteutukseen.
Tarkista, mitä todella on paikalla, ennen kuin valitset niiden välillä. Ensimmäinen komento näyttää, onko moduuli ladattu, ja toinen kysyy ytimeltä suoraan:
lsmod | grep wireguard
ip link add wgtest0 type wireguard
Toinen komento on pienin mahdollinen toisto: se pyytää laitetta eikä mitään muuta. Jos se epäonnistuu viestillä tukemattomasta tyypistä, puuttuva osa on toteutus eikä asetustiedostosi.
| 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 |
Oikeudet ja kontin rajat
Verkkolaitteen luominen ja määrittäminen vaatii oikeuden, joko rootina tai verkon hallinnan kyvyllä. Tavallinen käyttäjäistunto ei voi tehdä sitä, ja tämä rajoitus on suunnittelua eikä este, joka kierretään ajamalla asentaja, jota et ole tarkistanut.
Kontin sisällä raja kaksinkertaistuu. Kontti tarvitsee pääsyn tunnelilaitteeseen ja kyvyn määrittää se, ja liput, jotka sen antavat, ovat samat, joita Linuxin VPN-kontti käyttää. Rajoitettu vieras, joka voi tavallisesti selata verkkoa, ei silti voi luoda liittymää, koska selaaminen ei vaadi sellaista kykyä. Anna kyky palvelulle, joka sitä tarvitsee, älä jokaiselle istunnolle isännässä.
Ratkaise nimiriita ja yritä uudelleen
Jo olemassa oleva liittymä ei ole automaattisesti jäänne. Toinen hallintaohjelma voi omistaa nimen ja käyttää sitä juuri nyt, joten tarkista se ennen kuin poistat mitään:
ip link show wg0
sudo wg show wg0
Jos omistaja on aktiivinen palvelu, määritä se palvelu sen sijaan, että loisit toisen laitteen. Jos se on todella vanhentunut, poista se työkalulla, joka sen loi, ja nosta liittymä sitten dokumentoidulla asiakasohjelmalla tai yksiköllä, jotta asetukset ja laite pysyvät tahdissa.
Kun luonti onnistuu, seuraava virhe kuuluu myöhempään vaiheeseen, ja yksikkö, joka ilmoittaa virheestä laitteen olemassaolon jälkeen, on eri ongelma kuin laite, jota ei koskaan luotu. Erota nämä kaksi ennen kuin muutat oikeuksia uudelleen.