OpenVPN wuu istaagaa isagoo cabanaya errno 2 ku saabsan /dev/net/tun halka lsmod uu si xasilloon u liisgaraynayo qaybta tun. Labada xaqiiqo waa run isku mar. Qaybta waxay bixisaa darawal, wadada uu macmiilku furayo waa qanjir qalab oo ay tahay in wax kale abuuro. Labadaba hal shay u qaadashada waa sababta ay tahay in hagaajinta muuqata ee dib u raridda qaybta aysan waxba beddelin.

Laba shay, laba milkiile oo kala duwan

Qaybta kernelka iyo qanjirka qalabku waa shayyo madax-bannaan oo leh wareegyo nololeed madax-bannaan. Raridda qaybta waxay diiwaangalisaa darawal, iyo nidaam leh devtmpfs kernelku wuxuu codsadaa in qanjirka u dhigma la abuuro. Nidaam aan devtmpfs lahayn waxba ma abuuro, darawalkuna halkaas ayuu fadhiyaa isagoo aan lahayn wado tilmaamaysa. Qaybta waxay isku mar noqon kartaa mid la raray, caafimaad qaba oo gebi ahaanba aan laga gaari karin nidaamka faylka.

Taasi waa sababta qoraalka khaladka iyo liiska qaybaha aysan iskhilaafin. Macmiilku wuxuu furayaa wado, wadadu ma jirto, kernelkuna wuxuu soo celiyaa ENOENT ka hor inta aan darawalka tun la weydiin. Dib u raridda qaybta ma hagaajin karto wado maqan, abuurista wadaduna ma hagaajin karto darawal maqan.

lsmod | grep -w tun
stat -c "%F %t:%T" /dev/net/tun
grep " /dev " /proc/mounts

devtmpfs iyo mknod cad

Caadi ahaan laba hab ayaa abuura qanjirkaas, oo garashada kee baa mas'uul ah ayaa kuu sheegta waxa la hagaajinayo. devtmpfs wuxuu u oggolaadaa kernelka inuu abuuro qanjirro qalab gudaha nuqul la dhejiyay, udevna wuxuu ku darayaa lahaansho iyo ogolaansho. mknod cad waa wadada gacanta loo maro sawirrada iyo boosaska magacyada halka aysan midkoodna ka shaqaynayn bilowga.

Isbarbar dhig natiijooyinka halkii aad isbarbar dhigi lahayd niyadda. Haddii devtmpfs lagu dhejiyay /dev qanjirkuna weli maqan yahay, darawalku maaha kii aad u malaynaysid, ama wax baa qanjirka ka saaray bilowga ka dib. Haddii /dev uu yahay galka caadiga ah gudaha rootfs la furay, ma jiro hab otomaatig ah oo qofka sawirka dhisaa waa inuu abuuraa qanjirka.

stat -c "%F major=%t minor=%T" /dev/net/tun
# expect: character special file major=a minor=c8

Meesha aysan labada hab midkoodna ka shaqaynayn, qanjirka waa in gacanta lagu sameeyaa, oo nidaamku waa muhiim. Marka hore abuur galka waalidka, sababtoo ah mknod ma abuuri karo, ka dib qalabka xarafka, ka dib qaab uu uga tago mid la qori karo root oo keliya. Dib u rar qaybta ka hor inta aadan abuurin qanjirka, oo wadada jirta ka saar kaliya ka dib marka ls uu muujiyay inuu yahay gal, ma aha qalab.

sudo modprobe tun
sudo mkdir -p /dev/net
sudo mknod /dev/net/tun c 10 200
sudo chmod 600 /dev/net/tun
ls -l /dev/net/tun

Kala-soocidda ugu degdega ah waa nooca ay sheegto stat , galkuna wadadaas ku yaal waa yaabka ugu badan sawirrada yar. mkdir oo niyad wanaag leh ku qoran Dockerfile wuxuu ka tagaasaa sidaas, oo wax badan oo qaybo la raray ma beddelaan gal qalab xaraf. Major 10 iyo minor 200 waa lammaanaha diiwaangashan ee tun, oo lagu muujiyay hexadecimal ahaan a iyo c8.

Afar raad, afar sabab

Afar sabab ayaa sharraxaya ku dhowaad kiis kasta, mid kastaana wuxuu ka tagaasaa raad kale diiwaannada. Ka bilow deegaanka bilowga. Sawirrada aan disk lahayn, looxyada lagu dhex daray iyo heerarka initramfs inta badan ma dhejiyaan devtmpfs ama /devuu udev maamulo, sidaas darteed ma jiro habsocod waligiis qora qanjirka. Kadib akhri xulashooyinka dhejinta waxa /devmartigeliyo, sababtoo ah nodev wuxuu u oggolaadaa wadada inay jirto isagoo diidaya inuu furo, dhejinta bind laga soo qaatay martigeliyaha adag waxay qaadataa calanka iyada oo aan isku dhawaaqin. Dhejinta akhris-kaliya waxay fashilataa goor hore iyo cod sare: mknod halkaas ayuu ku soo celiyaa EROFS, halka EPERM uu ka dhigan yahay in habsocodka uu ka maqan yahay awood, ma aha in nidaamka faylku is difaacayo. Ugu dambayntii, runtime konteenar oo leh /dev tmpfs u gaar ah wuxuu u baahan yahay in qanjirka lagu duraa booskiisa magac, oo cgroup qalabkiisu waa inuu oggolaadaa lammaanaha major iyo minor.

Hubi lakabka siyaasadda ka hor inta aadan mar kale beddelin ogolaanshaha. SELinux iyo AppArmor waxay diidi karaan furid ay oggolaadaan dhammaan sifooyinka faylka, diidmadaasna waxay ka muuqataa diiwaanka hantida ma aha soosaarka macmiilka. Beddelka ogolaanshaha oo aan waligiis ka muuqan diidmo waa waqti lagu qaatay lakab gabi ahaanba khaldan.

sudo journalctl -k -n 20 --no-pager
sudo ausearch -m AVC -ts recent | tail -5

Ku caddee interface, ma aha liis

Liis guul leh waxay caddaynaysaa in wado jirto iyo wax kale ma aha. Fur qanjir tun caafimaad qaba akhris, oo wicitaanku wuxuu ku soo noqdaa khalad, sababtoo ah qalabku ma laha macne akhris oo ma aha fayl caadi ah. Khaladkaas ayaa halkan calaamada guusha, oo aqoonsigiisu wuxuu ka ilaaliyaa inaad uga daba gasho cillad ahaan.

head -c 1 /dev/net/tun
head: error reading '/dev/net/tun': File descriptor in bad state

Imtixaanka go'aanka leh wuxuu abuuraa interface, sababtoo ah wuxuu hal tallaabo ku tijaabiyaa darawalka, qanjirka iyo mudnaantaada. Haddii ku daristu guulaysato oo xiriirku muuqdo, saddexdu way shaqeeyaan. Marka uu fashilmo, errno wuxuu kala soocaa sababaha: ENOENT waxay ka dhigan tahay in aan qanjir la isticmaali karo jirin, EPERM waxay tilmaamaysaa awood, calammo dhejin ama siyaasad, EBUSY-na waxay ka dhigan tahay in habsocod kale uu hore u leeyahay interface.

sudo ip tuntap add dev tun7 mode tun
ip -brief link show tun7
sudo ip tuntap del dev tun7 mode tun

Ku socodsii imtixaankaas macnaha dhab ahaan fashilma, sababtoo ah unug adeeg, konteenar ama shaqo la qorsheeyay waxay qaadi karaan awoodo ka duwan shell-kaaga gelitaanka. Imtixaan ku gudba macne khaldan waxba ma caddeeyo ku saabsan kan fashilma.

Marka qalabku aanu ahayn dhibaatada

Haddii imtixaanka interface guulaysato oo macmiilku weli fashilmo, dhibaatada hadhay waa profile, macne adeeg ama wado, qalabkuna wuu fiican yahay. Taasi waa daqiiqada aad joojiso tafatirka qanjirrada qalabka, sababtoo ah isbeddello dheeraad ah waxay kaliya kordhiyaan masaafada nidaam shaqeeya.

Mar kasta socodsii shanta hubin ee la mid ah halkii aad hindiso mid cusub: qaybta ma la raray iyada oo aan qayb tartan lahayn, wadadu ma tahay qalab xaraf leh major iyo minor sax ah, xulashooyinka dhejintu ma nadiif yihiin, macnaha habsocodku ma qaadaa awoodda, iyo diidmo siyaasad ma jirtaa waqtiga fashilka. Cillad ka badbaadda shanta oo dhan maaha dhibaato qalab, wax kasta oo fariintu sheegto.

Maqaallo la xiriira