OpenVPN VPS serverī: nav /dev/net/tun ierīces, ko atvērt
Konfigurācija parasti ir kārtībā: viesis neredz tun ierīci. Nosaki, vai tas ir VM vai kopīgu kodolu izmantojošs konteiners, un pēc tam salabo slāni, kuram pieder kodols.
Pirmā palaišana neizdodas ar ziņojumu par /dev/net/tun vai TUN/TAP ierīci, ko nevar atvērt. Sertifikāti vēl nav nolasīti, tāpēc profilā nekas nav vainojams. Dēmons lūdz kodolam objektu, kura šim viesim nav.
Šis objekts ir rakstzīmju ierīce, ko nodrošina tun modulis. Vai vari to izveidot, ir atkarīgs no tā, kam pieder kodols.
Ko dēmons lūdz kodolam
OpenVPN atver /dev/net/tun un lūdz draiverim saskarni. Draiveris ir tun modulis, un ierīces mezgls ir rokturis, ar ko lietotājtelpa to sasniedz. Ja modulis nav ielādēts, mezgla var nebūt vai atvēršana var neizdoties. Nevienu no stāvokļiem neizlabo server.conf rediģēšana.
Vispirms lasi šo kļūdu kā jautājumu par platformu. Konfigurācijas kļūda parādās pēc tam, kad ierīce ir atvērta, nevis pirms tam.
VM vai viesis ar kopīgu kodolu
KVM, Xen vai citā pilnā virtuālajā mašīnā kodolu kontrolē tu. Vari ielādēt moduļus un izveidot mezglu. OpenVZ, Virtuozzo vai LXC stila konteinerā viesis dala saimnieka kodolu, tāpēc root tajā nevar ielādēt moduli, ko saimnieks nav ielādējis.
Tāpēc vienai un tai pašai kļūdai ir divi ļoti atšķirīgi saimnieki. Pirmajā gadījumā vari to salabot instances iekšpusē. Otrajā tu lūdz saimnieku vai pakalpojumu sniedzēju kaut ko atklāt.
Pirms izlem, kurā gadījumā esi, palaid ls -l /dev/net/tun, lsmod | grep tun un ip -brief link show.
VM: ielādē moduli startēšanas laikā
Virtuālajā mašīnā modprobe tun parasti izveido ierīces mezglu. Pārbaudi, vai tas parādījās, un tad padari ielādi pastāvīgu ar distributīva moduļu konfigurāciju, nevis paļaujies uz vienreiz ierakstītu komandu. Mezgls, kas pazūd pēc pārstartēšanas, nākamajā mēnesī kļūst par to pašu biļeti.
Pārbaudi arī, vai startētajam kodolam šis modulis vispār ir pieejams. Apcirptam ražotāja kodolam tā var nebūt.
Ja mezgls pastāv, bet atvēršana joprojām neizdodas, nākamie aizdomās turamie ir atļaujas un ierīces major/minor numuri. Tie ir lokāli labojumi, nevis pieprasījumi pakalpojumu sniedzējam.
Konteinerā ierīce pieder saimniekam
Konteinerā ierīce un iespēja ir divas atsevišķas prasības. Izpildlaikam ir jālaiž cauri /dev/net/tun, un konteineram vajag tīkla iespēju, lai izveidotu saskarni. Rootless izpildlaiks, kas nedod ne vienu, ne otru, turpinās radīt to pašu atvēršanas kļūdu, lai kā arī būtu uzrakstīts profils. Daudzi OpenVZ saimnieki klienta panelī piedāvā TUN/TAP slēdzi, un tā ieslēgšana kopā ar pārstartēšanu bieži ir viss risinājums.
Uzdod pakalpojumu sniedzējam divus precīzus jautājumus: vai tun modulis ir ielādēts saimniekā un vai ierīce ir pieejama šīs instances iekšpusē? Neizteiksmīga biļete saņem neizteiksmīgu atbildi.
Kāpēc moduļa pārbūve palīdz reti
Moduļa būvēšana viesa iekšpusē palīdz reti. Kompilēšanai vajag tieši darbojošā kodola konfigurāciju, un /proc/config.gz ir neobligāts un minimālos attēlos bieži nav. Pat strādājošu moduli nevar ievietot kodolā, kas konteineram nepieder.
Kad ierīce parādās, pārstartē pakalpojumu un pirms trafika testēšanas apstiprini saskarni. tun0 redzēšana parāda, ka dēmons atvēra ierīci. Tas vēl neko nesaka par pāradresāciju, ugunsmūra noteikumiem vai maršrutiem, ko saņem klienti.
Tie ir atsevišķi jautājumi ar atsevišķiem pierādījumiem. Trūkstoša ierīce ir priekšnosacījuma kļūda; tunelis, kas pastāv, bet neko nepārraida, ir politikas kļūda.