LXD ṣafihan ẹrọ lẹta ti olupese fun kontena nipa fifi ipade ẹrọ kun, kii ṣe nipa kikọ alejo lati ṣẹda ọkan. Ti kontena ko ba ni /dev/net/tun, ẹrọ naa le wa lori olupese ati pe alejo ko le ṣii. Titẹsi unix-char ni idaji ọna naa ni ẹgbẹ oluṣakoso, ati pe o mọọmọ dín ju kontena ti o ni ẹtọ lọ. Nitorinaa ipade olupese ati ipade kontena tọsi ayẹwo lọtọ.

Ilana naa kuru to lati tọju rẹ ni oju: LXD yanju ipa ọna olupese, ṣẹda ipade ibaramu ninu apẹẹrẹ ati fi ẹrọ naa kun cgroup ẹrọ ti kontena. Lẹhinna ilana alejo nilo igbanilaaye ati agbara tirẹ lati lo ipade naa fun ohunkohun.

Ohun ti titẹsi unix-char n yipada nitootọ

Ẹrọ unix-char sọ fun LXD lati fi ẹrọ lẹta kan ti olupese han ni ipa ọna ti a yan ninu kontena. Titẹsi naa ni awọn ẹya mẹta pataki: aami ẹrọ ti oluṣakoso n lo, ipa ọna source lori olupese ati path ti alejo ri. Awọn meji ti o kẹhin nikan ni o ṣalaye ẹrọ naa funrararẹ. Aṣiṣe titẹ ninu ọkan ninu wọn yoo ṣẹda ipade ni ibi ti alabara ko ti ṣii rara.

Lori olupese ẹrọ naa maa n jẹ /dev/net/tun. Ninu kontena o le tọju ipa ọna kanna tabi yan ọkan miiran, ṣugbọn ipa ọna naa gbọdọ ba ohun ti alabara VPN reti mu. Titọju /dev/net/tun yago fun iṣoro iṣeto keji, nitori ọpọlọpọ awọn alabara n ṣii ipa ọna yẹn lai beere.

Oluṣakoso n lo titẹsi naa nigbati apẹẹrẹ bẹrẹ tabi nigbati ẹrọ naa ba so pọ gbona. Ko daakọ awakọ sinu alejo ati ko ṣẹda wiwo oju eefin. O jẹ ki ipade naa han ati pe o gba iwọle laaye nipasẹ ẹgbẹ iṣakoso ẹrọ ti kontena.

Kede ẹrọ naa lori apẹẹrẹ, kii ṣe ninu alejo

Fi titẹsi naa kun lati ipo iṣakoso LXD, n darukọ apẹẹrẹ ati aami ti iwọ yoo da mọ nigbamii. Fun kontena ti a n pe ni vpnbox, aṣẹ naa ni:

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

Aami tun jẹ ti agbegbe fun iṣeto apẹẹrẹ. Kii ṣe orukọ wiwo ati pe ko nilo lati ba ohunkohun mu ninu alejo. Ti profaili ba ti pese ẹrọ kanna, fifi titẹsi keji kun n ṣẹda ijakadi kii ṣe apọju, nitorinaa wo iṣeto ti n ṣiṣẹ ni akọkọ.

Ṣiṣatunṣe awọn faili ninu kontena jẹ ipele ti ko tọ. mknod ninu iwe afọwọkọ ibẹrẹ le dabi ẹni pe o n ṣiṣẹ lori kontena ti o ni ẹtọ, lẹhinna parẹ nigbati a tun ṣẹda tabi kuna lori ọkan ti ko ni ẹtọ to. Oluṣakoso ni o ni akojọ ẹrọ ti apẹẹrẹ; jẹ ki o tun ni ipade naa.

Ba ẹtọ ati ipo mu pẹlu ilana alejo

Titẹsi unix-char le ṣeto uid, gid ati mode fun ipade inu kontena. Lo wọn lati ba akọọlẹ ti n ṣiṣẹ alabara VPN mu, dipo ṣiṣii ẹrọ fun gbogbo olumulo tabi yiyi kontena pada si ipo ẹtọ.

Wiwo kii ṣe ohun kanna bi igbanilaaye. Ipade ti root ni ati ti o ni ipo 600 jẹ han fun iṣẹ ti n ṣiṣẹ bi olumulo ti ko ni ẹtọ ati pe ko tun le ṣii nipasẹ rẹ. Ṣayẹwo akọọlẹ alejo ni akọkọ, lẹhinna ṣeto ẹtọ si akọọlẹ naa, ki o ma ṣe jẹ ki ipo naa gbooro ju ohun ti alabara nilo lọ.

Ilana naa tun nilo agbara lati ṣeto wiwo oju eefin, nigbagbogbo CAP_NET_ADMIN ni aaye orukọ nẹtiwọọki ti kontena. Fifun ẹrọ naa ko funni ni agbara yẹn, ati fifun agbara ko pese ẹrọ naa; awọn ibeere ominira ni wọn.

Mọ ohun ti titẹsi ko funni

Ipade ti o han kii ṣe VPN ti n ṣiṣẹ. A tun gbọdọ fi package alabara sori ẹrọ, profaili gbọdọ tun wulo, ati iṣẹ gbọdọ tun bẹrẹ. Ijẹrisi, awọn ipa ọna ati DNS wa ni iṣẹ alabara, ati ikuna nibẹ kii ṣe ẹri pe titẹsi ẹrọ naa jẹ aṣiṣe.

systemd le fi ihamọ miiran kun. Ẹyọ ti o ni DeviceAllow tabi ilana ẹrọ ti o le le kọ iwọle si ipade ti oluṣakoso kontena ti pese. Ṣayẹwo ilana ẹrọ ti ẹyọ naa nigbati ipade ba wa ṣugbọn iṣẹ n royin aṣiṣe igbanilaaye, ki o yipada ilana yẹn dipo ki o gbooro kontena naa.

Isopọ gbona jẹ aṣayan ati kedere. Titẹsi ti o ni required=false nilo ipa ọna orisun ati pe o le farahan tabi parẹ bi ẹrọ olupese ṣe n yipada. Iru igbesi aye bẹẹ ba ohun elo ti n bọ ti n lọ, ṣugbọn fun ẹrọ TUN ti VPN nilo nigba ibẹrẹ, titẹsi aṣayan le jẹ ki iṣẹ bẹrẹ ṣaaju ki ipo iwaju rẹ wa.

Ṣayẹwo wiwo, ṣiṣii ati wiwo oju ni ọna yẹn

Ni akọkọ jẹrisi ipade inu kontena ti a pinnu. Ipa ọna, awọn nọmba pataki ati kekere ati ẹtọ gbọdọ ba ẹrọ olupese ati titẹsi ti o fi kun mu. Ipade ti o nsọnu tumọ si pe oluṣakoso ko lo titẹsi naa, tabi o lo o lori apẹẹrẹ miiran.

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

Lẹhinna jẹrisi pe akọọlẹ iṣẹ le ṣii. Idanwo kukuru bi akọọlẹ yẹn yapa iṣoro ẹtọ kuro ninu iṣoro iṣẹ. Nikẹhin, bẹrẹ alabara ki o jẹrisi pe wiwo oju eefin farahan; igbese kẹta yẹn nikan ni o fi gbogbo ọna han, nitori awọn meji akọkọ le kọja nigba ti profaili tabi agbara alabara tun jẹ aṣiṣe.

Kọ apẹẹrẹ, aami ẹrọ, orisun olupese, ipa ọna alejo ati akọọlẹ oniwun silẹ nigbati a ba fọwọsi iyipada naa. Awọn iye marun yẹn ni ohun ti atunṣẹda, gbigbe tabi iyipada profaili nigbamii gbọdọ tọju, ati pe o rọrun pupọ lati fi wọn wé ju aṣiṣe igbanilaaye ti ko ni aaye lọ.

Àwọn àpilẹ̀kọ tó jọra