LXD birtir tæki hýsilsins fyrir gámi með því að bæta við tækjahnoði, ekki með því að kenna gestinum að búa eitt til. Ef gámurinn hefur ekki /dev/net/tun getur hýsillinn haft tækið og gesturinn engu að síður ekki opnað það. unix-char-færslan er stjórnandamegin helmingur þessarar leiðar, og hún er viljandi þrengri en forréttindaður gámur. Þess vegna eiga hnoð hýsilsins og hnoð gámsins hvor um sig skilda athugun.

Virknin er nógu stutt til að hafa í augsýn: LXD leysir slóð á hýslinum, býr til samsvarandi hnoð inni í tilvikinu og bætir tækinu við tækja-cgroup gámsins. Síðan þarf gestaferlið eigið leyfi og eigin getu til að nota hnoðið í eitthvað.

Hvað unix-char-færslan breytir í raun

unix-char-tæki segir LXD að birta eitt stafatæki hýsilsins á völdum slóð inni í gáminum. Færslan hefur þrjá hluta sem skipta máli: tækjamerkimiðann sem stjórnandinn notar, slóðina source á hýslinum og path sem gesturinn sér. Aðeins þeir tveir síðastnefndu lýsa tækinu sjálfu. Innsláttarvilla í öðrum hvorum býr til hnoð á stað sem biðlarinn opnar aldrei.

Á hýslinum er tækið venjulega /dev/net/tun. Inni í gáminum geturðu haldið sömu slóð eða valið aðra, en slóðin verður að passa við það sem VPN-biðlarinn væntir. Að halda /dev/net/tun kemur í veg fyrir annað stillingarvandamál, því flestir biðlarar opna þá slóð án þess að spyrja.

Stjórnandinn beitir færslunni þegar tilvikið ræsist eða þegar tækinu er heittengt. Hann afritar ekki rekil inn í gestinn og býr ekki til gönguviðmót. Hann gerir hnoðið sýnilegt og heimilar aðgang í gegnum tækjastýringarhóp gámsins.

Lýstu tækinu á tilvikinu, ekki inni í gestinum

Bættu færslunni við úr stjórnunarsamhengi LXD, nefndu tilvikið og merkimiða sem þú þekkir síðar. Fyrir gám sem heitir vpnbox er skipunin:

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

Merkimiðinn tun er staðbundinn við stillingar tilviksins. Hann er ekki viðmótsheiti og þarf ekki að passa við neitt í gestinum. Ef snið útvegar þegar sama tækið býr önnur færsla til árekstur frekar en ofgnótt, svo skoðaðu fyrst virku stillinguna.

Að breyta skrám inni í gáminum er ranga lagið. mknod í ræsingarskripti getur virst virka á forréttinduðum gámi og hverfur þá við endursköpun eða bregst á minna forréttinduðum. Stjórnandinn á tækjasettið í tilvikinu; láttu hann eiga hnoðið líka.

Lagaðu eignarhald og stillingu að gestaferlinu

unix-char-færslan getur sett uid, gid og mode fyrir hnoðið inni í gáminum. Notaðu þau til að passa við reikninginn sem keyrir VPN-biðlarann, í stað þess að opna tækið fyrir alla notendur eða færa gáminn í forréttindaða stillingu.

Sýnileiki er ekki það sama og leyfi. Hnoð í eigu root með stillingu 600 er sýnilegt þjónustunni sem keyrir sem óforréttindaður notandi og er samt ekki opnanlegt af henni. Athugaðu fyrst gestareikninginn, stilltu svo eignarhaldið á þann reikning og haltu stillingunni ekki rýmri en biðlarinn þarf.

Ferlið þarf líka getuna til að stilla gönguviðmót, venjulega CAP_NET_ADMIN í netnafnrými gámsins. Að senda tækið veitir ekki þá getu, og að veita getuna útvegar ekki tækið; þetta eru óháðar kröfur.

Vittu hvað færslan veitir ekki

Sýnilegt hnoð er ekki VPN sem virkar. Enn þarf að setja upp biðlarapakkann, sniðið þarf enn að vera gilt og þjónustan þarf enn að ræsast. Auðkenning, leiðir og DNS eru áfram verk biðlarans, og bilun þar er ekki sönnun þess að tækjafærslan sé röng.

systemd getur bætt við annarri takmörkun. Eining með DeviceAllow eða hertri tækjastefnu getur neitað aðgangi að hnoði sem gámastjórnandinn útvegaði. Athugaðu tækjastefnu einingarinnar þegar hnoðið er til en þjónustan tilkynnir leyfisvillu, og breyttu þeirri stefnu í stað þess að víkka gáminn.

Heittenging er valfrjáls og skýr. Færsla með required=false þarf upprunaslóð og getur birst eða horfið eftir því sem tæki hýsilsins breytist. Sá lífsferill hentar vélbúnaði sem kemur og fer; fyrir TUN-tæki sem VPN þarf við ræsingu getur valfrjáls færsla látið þjónustuna ræsast áður en forsenda hennar er til.

Staðfestu sýnileika, opnun og viðmót í þeirri röð

Staðfestu fyrst hnoðið inni í tilætluðum gámi. Slóðin, aðal- og aukatólan og eignarhaldið eiga að passa við tæki hýsilsins og færsluna sem þú bættir við. Vantar hnoðið þýðir að stjórnandinn beitti færslunni ekki, eða beitti henni á annað tilvik.

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

Staðfestu næst að þjónustureikningurinn geti opnað það. Stutt próf sem sá reikningur aðskilur eignarhaldsvandamál frá þjónustuvandamáli. Að lokum skaltu ræsa biðlarann og staðfesta að gönguviðmót birtist; aðeins það þriðja skref sannar alla leiðina, því fyrstu tvö geta gengið þótt snið eða geta biðlarans sé enn röng.

Skráðu tilvikið, tækjamerkimiðann, uppruna á hýslinum, slóðina í gestinum og eignarreikninginn þegar breytingin er samþykkt. Þessi fimm gildi eru það sem síðari endursköpun, flutningur eða sniðsbreyting verður að varðveita, og miklu auðveldara er að bera þau saman en leyfisvillu án samhengis.

Tengdir greinar