Pirmas paleidimas nepavyksta su pranešimu apie /dev/net/tun arba TUN/TAP įrenginį, kurio negalima atidaryti. Sertifikatai dar neperskaityti, todėl profilyje nieko kaltinti negalima. Diegonas prašo branduolio objekto, kurio šis svečias neturi.

Tas objektas yra simbolinis įrenginys, kurį palaiko tun modulis. Ar galite jį sukurti, priklauso nuo to, kam priklauso branduolys.

Ko diegonas prašo branduolio

OpenVPN atidaro /dev/net/tun ir prašo tvarkyklės sąsajos. Tvarkyklė yra tun modulis, o įrenginio mazgas yra rankena, kuria vartotojo erdvė jį pasiekia. Jei modulis neįkeltas, mazgo gali nebūti arba atidarymas gali nepavykti. Nė vienos būsenos nepataiso server.conf redagavimas.

Pirmiausia skaitykite šią klaidą kaip platformos klausimą. Konfigūracijos klaida pasirodo po to, kai įrenginys atidaromas, o ne prieš tai.

VM arba bendrą branduolį naudojantis svečias

KVM, Xen ar kitoje pilnoje virtualioje mašinoje branduolį valdote jūs. Galite įkelti modulius ir sukurti mazgą. OpenVZ, Virtuozzo ar LXC stiliaus konteineryje svečias dalijasi pagrindinės mašinos branduoliu, todėl root jo viduje negali įkelti modulio, kurio pagrindinė mašina neįkėlė.

Todėl ta pati klaida turi du labai skirtingus šeimininkus. Pirmuoju atveju galite ją ištaisyti instancijos viduje. Antruoju prašote pagrindinės mašinos arba tiekėjo ką nors atskleisti.

Prieš nuspręsdami, kuriuo atveju esate, paleiskite ls -l /dev/net/tun, lsmod | grep tun ir ip -brief link show.

VM: įkelkite modulį paleidimo metu

Virtualioje mašinoje modprobe tun paprastai sukuria įrenginio mazgą. Patikrinkite, ar jis atsirado, tada įtvirtinkite įkėlimą per distribucijos modulių konfigūraciją, o ne pasikliaukite vieną kartą įvesta komanda. Mazgas, kuris dingsta po perkrovimo, kitą mėnesį taps tuo pačiu bilietu.

Taip pat patikrinkite, ar įkeltame branduolyje tas modulis apskritai yra. Nukirptame tiekėjo branduolyje jo gali nebūti.

Jei mazgas egzistuoja, bet atidarymas vis tiek nepavyksta, kiti įtariamieji yra teisės ir įrenginio major/minor numeriai. Tai vietiniai pataisymai, o ne prašymai tiekėjui.

Konteinerio atveju įrenginys priklauso pagrindinei mašinai

Konteineryje įrenginys ir galimybė yra du atskiri reikalavimai. Vykdymo aplinka turi praleisti /dev/net/tun, o konteineriui reikia tinklo galimybės sąsajai sukurti. Rootless vykdymo aplinka, kuri nesuteikia nė vieno, ir toliau gamins tą pačią atidarymo klaidą, kad ir kaip būtų parašytas profilis. Daugelis OpenVZ pagrindinių mašinų klientų panelėje siūlo TUN/TAP jungiklį, o jo įjungimas kartu su perkrovimu dažnai yra visas sprendimas.

Užduokite tiekėjui du tikslius klausimus: ar tun modulis įkeltas pagrindinėje mašinoje ir ar įrenginys prieinamas šios instancijos viduje? Neaiškus bilietas sulaukia neaiškaus atsakymo.

Kodėl modulio perkompiliavimas retai padeda

Modulio kūrimas svečio viduje retai padeda. Kompiliavimui reikia tiksliai veikiančio branduolio konfigūracijos, o /proc/config.gz yra pasirenkamas ir minimaliuose atvaizdžiuose dažnai jo nėra. Net veikiantis modulis negali būti įterptas į branduolį, kuriam konteineris nepriklauso.

Kai įrenginys atsiranda, paleiskite paslaugą iš naujo ir patvirtinkite sąsają prieš tikrindami srautą. tun0 matymas rodo, kad diegonas atidarė įrenginį. Tai dar nieko nesako apie persiuntimą, ugniasienės taisykles ar maršrutus, kuriuos gauna klientai.

Tai atskiri klausimai su atskirais įrodymais. Trūkstamas įrenginys yra būtinos sąlygos klaida; tunelis, kuris egzistuoja, bet nieko neperduoda, yra politikos klaida.

Susiję straipsniai