LXD waxa uu qalabka xarafka ee martigeliyaha u soo bandhigaa konteynarka isaga oo ku daraya nood qalab, ma aha in uu martida baro in ay mid samayso. Haddii konteynarku aanu lahayn /dev/net/tun, qalabku wuu ku jiri karaa martigeliyaha welina martidu ma furi karto. Gelitaanka unix-char waa qaybta maamulaha ee jidkan, oo si ulfilaneed ayuu uga cidhiidhsan yahay konteynar mudnaan leh. Sidaa darteed noodka martigeliyaha iyo noodka konteynarka wax bay u qalmaan hubinno gaar ah.

Habka aad buu u gaaban yahay oo indhaha lagu hayn karaa: LXD waxa uu xalliyaa jidka martigeliyaha, waxa uu gudaha tijaabada ku abuuraa nood u dhigma, oo waxa uu qalabka ku daraa cgroup qalabka konteynarka. Kadib hawsha martidu waxay u baahan tahay fasaxkeeda iyo awooddeeda si ay nooda wax ugu isticmaasho.

Waxa gelitaanka unix-char dhab ahaan beddelo

Qalabka unix-char waxa uu LXD ku yidhaahdaa in uu soo bandhigo hal qalab xaraf oo martigeliyaha ah oo ku yaal jid la doortay gudaha konteynarka. Gelitaanku waxa uu leeyahay saddex qaybood oo muhiim ah: calaamadda qalabka ee maamulahu isticmaalo, jidka source ee martigeliyaha iyo path ee martidu aragto. Labada dambe oo keliya ayaa qalabka qudhiisa sharraxaya. Qalad teeb aan ku yimaado midkood waxa uu abuuraa nood meel aan macmiilku waligiis furin.

Martigeliyaha qalabku caadi ahaan waa /dev/net/tun. Gudaha konteynarka waxaad hayn kartaa isla jidkaas ama waxaad dooran kartaa mid kale, laakiin jidku waa in uu la jaanqaadaa waxa macmiilka VPN filayo. Haynta /dev/net/tun waxa ay ka hortagtaa dhibaatada labaad ee habaynta, sababtoo ah macmiillada badankoodu jidkaas way furaan iyaga oo aan weydiin.

Maamuluhu waxa uu gelitaanka ku dabaqaa marka tijaabadu bilowdo ama marka qalabka si kulul loo xidho. Ma nuqul karo darawal gudaha martida mana abuuro interface tunnel. Waxa uu nooda ka dhigaa mid muuqda oo waxa uu fasaxaa gelitaanka iyada oo loo marayo kooxda xakamaynta qalabka konteynarka.

Ku dhawaaq qalabka tijaabada, ma aha gudaha martida

Ku dar gelitaanka from habka maamulka LXD, adigoo magacaabaya tijaabada iyo calaamad aad mar dambe aqoonsan karto. Konteynar magaciisu yahay vpnbox amarku waa:

lxc config device add vpnbox tun unix-char source=/dev/net/tun path=/dev/net/tun
lxc config device show vpnbox

Calaamadda tun waxa ay deegaan u tahay habaynta tijaabada. Ma aha magac interface mana aha in ay wax la jaanqaaddo gudaha martida. Haddii profile hore u bixiyo isla qalabkaas, gelitaan labaad waxa uu abuuraa isku dhac halkii ay ahaan lahayd badnaan, sidaa darteed marka hore eeg habaynta shaqaysa.

Wax ka beddelka faylalka gudaha konteynarka waa lakab khaldan. mknod ku jira qoraal bilow ah waxa uu u ekaan karaa mid ka shaqeeya konteynar mudnaan leh, kadibna uu lunto marka dib loo abuuro ama ku guuldareysto mid mudnaan yar. Maamuluhu waxa uu leeyahay xogta qalabka tijaabada; ha u oggolaado in uu nooda sidoo kale leeyahay.

La jaanqaad lahaanshaha iyo habka hawsha martida

Gelitaanka unix-char waxa uu dejin karaa uid, gid iyo mode nooda gudaha konteynarka. U isticmaal si ay ula jaanqaadaan akoonka socodsiiya macmiilka VPN, halkii aad qalabka u furi lahayd isticmaalayaasha oo dhan ama konteynarka u beddeli lahayd hab mudnaan leh.

Muuqnaanta ma aha isla fasaxa. Nood uu root leeyahay oo hab 600 leh waxa uu u muuqdaa adeegga ku socda isticmaale aan mudnaan lahayn welina ma furan karo. Marka hore hubi akoonka martida, kadib u dhig lahaanshaha akoonkaas, oo ha uga dhigin habka mid ka ballaadhan wixii macmiilku u baahan yahay.

Hawshu waxa ay sidoo kale u baahan tahay awoodda habaynta interface tunnel, caadi ahaan CAP_NET_ADMIN gudaha meesha magacyada shabakada ee konteynarka. Gudbinta qalabka ma bixiso awooddaas, bixinta awoodduna ma bixiso qalabka; waa shuruudo madax-bannaan.

Ogow waxa gelitaanku aanu bixin

Nood muuqda ma aha VPN shaqaynaya. Xirmada macmiilka wali waa in la rakibo, profile-ku wali waa in uu ansax noqdaa, adeegguna wali waa in uu bilaabmaa. Xaqiijinta, jidadka iyo DNS waxa ay ahaanayaan shaqada macmiilka, guuldarrada halkaasina ma aha caddayn in gelitaanka qalabku khaldan yahay.

systemd waxa uu ku dari karaa xaddidaad kale. Unug leh DeviceAllow ama siyaasad qalab adag waxa uu diidi karaa gelitaanka nood uu bixiyay maamulaha konteynerada. Hubi siyaasadda qalabka unugga marka noodu jiro laakiin adeeggu soo sheegayo khalad fasax, oo beddel siyaasaddaas halkii aad konteynarka ballaadin lahayd.

Xidhitaanka kulul waa ikhtiyaari oo cad. Gelitaan leh required=false waxa uu u baahan yahay jid isha oo waxa uu u muuqan karaa ama luntaa marka qalabka martigeliyaha beddelmo. Wareegga noloshaas waxa uu ku habboon yahay qalab soo baxa oo taga; qalabka TUN ee VPN u baahan yahay marka la bilaabayo, gelitaan ikhtiyaari ah waxa uu u oggolaan karaa adeegga in uu bilaabmo ka hor inta shardiga uu jiro.

Hubi muuqnaanta, furitaanka iyo interface-ka isla nidaamkaas

Marka hore xaqiiji nooda gudaha konteynarka loogu talagalay. Jidka, lambarrada weyn iyo yar iyo lahaanshaha waa in ay la jaanqaadaan qalabka martigeliyaha iyo gelitaanka aad ku dartay. Nood maqan waxa uu ka dhigan yahay in maamuluhu aanu gelitaanka dabaqin, ama uu ku dabaqay tijaabo kale.

lxc exec vpnbox -- ls -l /dev/net/tun
lxc exec vpnbox -- sh -c 'test -c /dev/net/tun && echo char-device-ok'

Kadib xaqiiji in akoonka adeeggu uu furi karo. Tijaabo gaaban oo akoonkaas ah waxa ay kala saartaa dhibaatada lahaanshaha iyo dhibaatada adeegga. Ugu dambayntii, bilaab macmiilka oo xaqiiji in interface tunnel uu soo muuqdo; tallaabadaas saddexaad oo keliya ayaa caddaynaysa jidka oo dhan, sababtoo ah labada hore way gudbi karaan iyada oo profile-ka ama awoodda macmiilku wali khaldan yahay.

Diiwaangeli tijaabada, calaamadda qalabka, isha martigeliyaha, jidka martida iyo akoonka mulkiilaha marka isbeddelka la ansaxiyo. Shantaas qiyam ayaa ah waxa dib u abuur, guur ama isbeddel profile dambe ay tahay in ay ilaaliyaan, oo aad bay uga fudud yihiin in la barbardhigo khalad fasax oo aan macne lahayn.

Maqaallo la xiriira