OpenVPN na VPS: ni naprave /dev/net/tun za odpiranje
Konfiguracija je običajno v redu: gost ne vidi naprave tun. Ločite VM od vsebnika z deljenim jedrom in nato popravite plast, ki ima jedro.
Prvi zagon spodleti s sporočilom o /dev/net/tun ali napravi TUN/TAP, ki je ni mogoče odpreti. Potrdila še niso bila prebrana, zato v profilu ni nič krivo. Demon prosi jedro za objekt, ki ga ta gost nima.
Ta objekt je znakovna naprava, ki jo zagotavlja modul tun. Ali jo lahko ustvarite, je odvisno od tega, kdo ima jedro.
Kaj demon prosi jedro
OpenVPN odpre /dev/net/tun in od gonilnika zahteva vmesnik. Gonilnik je modul tun, vozlišče naprave pa je ročaj, s katerim uporabniški prostor doseže do njega. Če modul ni naložen, vozlišče lahko manjka ali odpiranje lahko spodleti. Nobenega stanja ne popravi urejanje server.conf.
To napako najprej berite kot vprašanje o platformi. Napaka v konfiguraciji se pojavi po tem, ko se naprava odpre, ne prej.
VM ali gost z deljenim jedrom
Na KVM, Xen ali drugem polnem virtualnem stroju jedro nadzorujete vi. Naložite lahko module in ustvarite vozlišče. Na OpenVZ, Virtuozzo ali v vsebniku v slogu LXC gost deli jedro gostitelja, zato root v njem ne more naložiti modula, ki ga gostitelj ni naložil.
Ista napaka ima torej dva zelo različna lastnika. V prvem primeru jo lahko popravite od znotraj instance. V drugem od gostitelja ali ponudnika zahtevate, da nekaj izpostavi.
Preden se odločite, v katerem primeru ste, zaženite ls -l /dev/net/tun, lsmod | grep tun in ip -brief link show.
Na VM naložite modul ob zagonu
Na virtualnem stroju modprobe tun običajno ustvari vozlišče naprave. Preverite, ali se je pojavilo, nato pa nalaganje trajno uredite prek konfiguracije modulov distribucije, namesto da bi se zanašali na ukaz, vpisan enkrat. Vozlišče, ki po ponovnem zagonu izgine, postane naslednji mesec ista zahteva.
Preverite tudi, ali jedro, ki ste ga zagnali, modul sploh ima. Okrnjeno jedro ponudnika ga lahko nima.
Če vozlišče obstaja, odpiranje pa še vedno spodleti, sta naslednja sumljiva dovoljenja in številki major/minor naprave. To so lokalni popravki, ne zahteve ponudniku.
V vsebniku naprava pripada gostitelju
V vsebniku sta naprava in zmožnost dve ločeni zahtevi. Izvajalno okolje mora spustiti /dev/net/tun skozi, vsebnik pa potrebuje omrežno zmožnost za ustvarjanje vmesnika. Rootless izvajalno okolje, ki ne da nobenega od obeh, bo še naprej ustvarjalo isto napako odpiranja, ne glede na to, kako je profil napisan. Mnogi gostitelji OpenVZ v uporabniški plošči ponujajo stikalo TUN/TAP, njegov vklop skupaj s ponovnim zagonom pa je pogosto cela rešitev.
Ponudniku zastavite dve natančni vprašanji: ali je modul tun naložen na gostitelju in ali je naprava na voljo znotraj te instance? Nejasna zahteva dobi nejasen odgovor.
Zakaj ponovna gradnja modula redko pomaga
Gradnja modula znotraj gosta redko pomaga. Prevajanje potrebuje konfiguracijo natanko tistega jedra, ki teče, /proc/config.gz pa je neobvezen in na minimalnih slikah pogosto manjka. Tudi delujočega modula ni mogoče vstaviti v jedro, ki ga vsebnik ne poseduje.
Ko se naprava pojavi, znova zaženite storitev in pred preizkušanjem prometa potrdite vmesnik. Pogled na tun0 pokaže, da je demon odprl napravo. O posredovanju, pravilnikih požarnega zidu ali poteh, ki jih prejmejo odjemalci, to še ne pove ničesar.
To so ločena vprašanja z ločenimi dokazi. Manjkajoča naprava je neuspeh predpogoja; tunel, ki obstaja, a ničesar ne prenaša, je neuspeh politike.