OpenVPN ee Docker ma furi karo /dev/net/tun: waxa maqan
Qanjirka TUN iyo awoodda shabakadda waa laba oggolaansho oo gaar ah. Fur labadaba, ka dibna akhri khaladka xiga sida uu isagu qabo halkii aad ku celcelin lahayd isla hagaajinta.
Sawirrada weelka waxay qaadan karaan dhammaan OpenVPN binary iyo faylasha habaynta ee ay u baahan yihiin oo wali ku guuldareystaan wicitaanka shabakadda ee ugu horreeya. Khaladku wuxuu magacaabaa /dev/net/tun sababtoo ah codsigu wuxuu kernelka ka codsaday interface TUN oo weelku ma lahayn qanjirka qalabka ama awoodda uu ku abuuro mid. Kuwani waa laba oggolaansho oo gaar ah, oo mid hagaajintu kan kale ayuu si sax ah ugu reebaa meeshuu joogay.
In la kala saaro waxay u baahan tahay hal amar mid kasta. Fariinta khaladka ee ka dib waxay kuu sheegaysaa xadka aad dhab ahaantii taagnayd.
Qanjirka qalabka iyo awooddu waa laba albaab
Qanjirka qalabku waa shay nidaamka faylka, sidaas darteed weelku waa inuu ku arko meeshiisa magaca mount. Awooddu waa oggolaansho, sidaas darteed hawshu waxay u baahan tahay CAP_NET_ADMIN meesha magaca halkaas oo interface-ka la abuurayo. Qalabka gudbinta iyada oo aan lahayn awoodda waxay ku siinaysaa qanjir furma iyo ioctl guuldareysta. Awoodda siinta iyada oo aan qalabka lahayn waxay codsiga ka dhigtaa mid aan furi karin waxba, taasina waa sababta labaduba inta badan ay wada muuqdaan tusaalooyinka.
Habaynta devices ee Docker waxay qalabka martigeliyaha u beddelayaa weelka, halka cap_add uu hagaajinayo qaybta awoodaha. Bind mount isla dariiqaas waxay faylka u dhigtaa aragtida iyada oo aan lagu dabaqin macnaha gelitaanka qalabka.
Ku soo saar tan bannaanka faylka Compose
Ka hor inta aanad tafatirin adeegga, hubi in martigeliyaha uu hayo qalabka iyo in weel qaawan uu abuuri karo interface. Amarka hoose si ula kac ah ayaa u yar, oo ujeeddadiisa kaliya waa in dhibaatada martigeliyaha laga sooco dhibaatada compose. Haddii uu guuldareysto, wax beddelaad compose ah ma caawin doono.
ls -l /dev/net/tun
docker run --rm --cap-add NET_ADMIN --device /dev/net/tun:/dev/net/tun alpine sh -c 'apk add -q iproute2 && ip tuntap add dev tun9 mode tun && ip link show tun9'
Qanjirka maqan ee martigeliyaha waxay la macno tahay module-ka tun lama heli karo, taas oo ah hagaajin dhinaca martigeliyaha ee ma aha weelka. Qanjir jira laakiin aan laga furi karin weelka dhexdiisa waxay tilmaamaysaa gelitaanka qalabka, fariintuna waxay odhan doontaa permission denied halkii no such file. Nidaamka labadan guuldareysi waa dhammaan ogaanshaha. Qor midkaad aragtay ka hor inta aanad beddelin calan.
Khaladaadka TUN ka dib waa dhibaatooyin kaladuwan
Isla marka interface-ku soo baxo, guuldareysta xigta waxay leedahay milkiile kale. Khaladaadka xaqiijinta waxay la macno yihiin in tunnel-ku gaaray server-ka iyo aqoonsiga la diiday, sidaas darteed beddelaadda awoodda ma caawin doonto. Tunnel-ka dhisma inta codsiyadu wali guuldareystaan waxay tilmaamaysaa waddooyinka, gudbinta, xallinta DNS gudaha weelka ama habaynta shabakadda weelka laftiisa. Mid kasta oo ka mid ah waa su'aal shabakadeed caadi ah oo oggolaanshaha TUN aanu ka jawaabi karin. Ku celcelinta imtixaanka asalka ah ka dib isbeddel kasta waxay ka hortagtaa in guuldareysiyadu isku dhex milmaan hal aragti.
Koobiga dejinta kasta oo laga soo qaato tusaale shaqeeya ayaa ah dariiqa hagaajin yar uu u noqdo qeexitaan adeeg aan la akhriyi karin. Soo qaado kaliya kuwa diritaankan u baahan yahay oo qor sababta mid kastaa uu halkaas u joogo.
Xaqiiji interface-ka gudaha weelka
Hubi interface-ka iyo qaybta awoodaha gudaha weelka socda ee ma aha martigeliyaha. Amarrada hoose waxay muujinayaan qanjirka qalabka, liiska awoodaha iyo in interface la abuuri karo haba yaraatee. Ku ordi isla weelka ordiya macmiilka, oo rakib qalabka haddii sawirku yar yahay.
ls -l /dev/net/tun
capsh --print | grep -i net_admin
ip link add dev tun9 type tun && ip link show tun9
Awood ku jirta bounding set laakiin ka maqan effective set waxay u dhaqanto si ka duwan tan aan waligeed la siin, capsh-na labadaba wuu muujinayaa. Haddii qanjirku jiro oo awoodduna jirto halka abuurista wali guuldareysto, runtime-ku waxa uu dhaqan gelinayaa wax kale, sida profile seccomp ama siyaasad AppArmor oo xaddidaysa hawsha. Taasi waa xad saddexaad, oo ay diiwaangeliso runtime halkii codsiga.
Qor calammada weelka, sawirka iyo khaladka saxda ah ee isku day kasta. Qofka xiga ee akhriya qoraalkaas wuxuu sheegi karaa albaabka xirnaa isagoo aan ku celcelin baaritaanka oo dhan.