LXD edukiontziak ezin du /dev/net/tun ireki? Egiaztatu unix-char sarrera
LXDk ostalariaren TUN gailua edukiontzira pasa behar du VPN bezero batek erabili ahal izateko. Ikusi zer gehitzen duen unix-char sarrerak, zer ez, eta nola egiaztatu.
LXDk ostalariaren karaktere-gailu bat edukiontzi bati erakusten dio gailu-nodo bat gehituta, ez bisitaria bat sortzen irakatsita. Edukiontzian /dev/net/tun ez badago, gailua ostalarian egon daiteke eta bisitariak hala ere ezin du ireki. unix-char sarrera bide horren kudeatzailearen aldeko erdia da, eta nahita estuagoa da edukiontzi pribilegiatu bat baino. Horregatik ostalariaren nodoak eta edukiontziaren nodoak bereizitako egiaztapenak merezi dituzte.
Mekanismoa nahikoa labur da begi-bistan edukitzeko: LXDk ostalariaren bide bat ebazten du, instantziaren barruan dagokion nodoa sortzen du eta gailua edukiontziaren gailu-cgroup-era gehitzen du. Ondoren bisitariaren prozesuak bere baimena eta gaitasuna behar ditu nodoa edozertarako erabiltzeko.
Zer aldatzen du benetan unix-char sarrerak
unix-char gailu batek LXDri esaten dio ostalariaren karaktere-gailu bat erakusteko edukiontziaren barruan aukeratutako bide batean. Sarrerak hiru zati garrantzitsu ditu: kudeatzaileak erabiltzen duen gailu-etiketa, ostalarian source bidea eta bisitariak ikusten duen path. Azken biak soilik deskribatzen dute gailua bera. Horietako batean akats bat eginez gero, bezeroak inoiz irekitzen ez duen lekuan nodo bat sortzen da.
Ostalarian gailua normalean /dev/net/tun izaten da. Edukiontziaren barruan bide bera mantendu dezakezu edo beste bat aukeratu, baina bideak VPN bezeroak espero duenarekin bat egin behar du. /dev/net/tun mantentzeak bigarren konfigurazio arazo bat saihesten du, bezero gehienek bide hori galdetu gabe irekitzen dutelako.
Kudeatzaileak sarrera aplikatzen du instantzia abiatzen denean edo gailua beroan konektatzen denean. Ez du kontrolatzailerik bisitarira kopiatzen eta ez du tunel interfazerik sortzen. Nodoa ikusgai egiten du eta edukiontziaren gailu-kontrol taldearen bidez sarbidea baimentzen du.
Adierazi gailua instantzian, ez bisitariaren barruan
Gehitu sarrera LXDren administrazio-testuingurutik, instantzia eta geroago ezagutuko duzun etiketa bat izendatuta. vpnbox izeneko edukiontzi baterako komandoa hau da:
lxc config device add vpnbox tun unix-char source=/dev/net/tun path=/dev/net/tun
lxc config device show vpnbox
Etiketa tun instantziaren konfigurazioaren tokikoa da. Ez da interfaze-izen bat eta ez du bisitarian ezerrekin bat egin behar. Profil batek gailu bera ematen badu, bigarren sarrera bat gehitzeak gatazka sortzen du, ez soberakina, beraz aztertu lehenengo konfigurazio eraginkorra.
Edukiontziaren barruko fitxategiak editatzea geruza okerra da. Abiarazte-script bateko mknod edukiontzi pribilegiatu batean funtzionatzen ari dela eman dezake, eta gero birsortzean desagertu edo gutxiago pribilegiatu batean huts egin. Kudeatzailea da instantziaren gailu-multzoaren jabea; utz iezaiozu nodoa ere.
Egokitu jabetza eta modua bisitariaren prozesura
unix-char sarrerak uid, gid eta mode ezar ditzake edukiontziaren barruko nodoarentzat. Erabili itzazu VPN bezeroa exekutatzen duen kontuarekin bat egiteko, gailua erabiltzaile guztiei ireki edo edukiontzia modu pribilegiatura aldatu ordez.
Ikusgaitasuna ez da baimenaren berdina. rooten jabetzako eta 600 moduko nodo bat pribilegiorik gabeko erabiltzaile gisa exekutatzen ari den zerbitzuarentzat ikusgai dago, eta hala ere ezin du hark ireki. Egiaztatu lehenengo bisitariaren kontua, gero ezarri jabetza kontu horri, eta eutsi modua bezeroak behar duena baino zabalagoa ez dena.
Prozesuak tunel interfaze bat konfiguratzeko gaitasuna ere behar du, normalean edukiontziaren sare-izenen espazioan CAP_NET_ADMIN. Gailua pasatzeak ez dio gaitasun hori ematen, eta gaitasuna emateak ez du gailua hornitzen; baldintza independenteak dira.
Jakizu zer ez duen ematen sarrerak
Nodo ikusgai bat ez da funtzionatzen duen VPN bat. Bezeroaren paketea instalatu behar da oraindik, profilak baliozkoa izan behar du oraindik, eta zerbitzuak abiatu behar du oraindik. Autentifikazioa, ibilbideak eta DNS bezeroaren lana izaten jarraitzen dute, eta horko hutsegitea ez da gailu-sarrera okerra den froga.
systemd-k beste murrizketa bat gehi dezake. DeviceAllow duen edo gailu-politika gogortua duen unitate batek edukiontzi kudeatzaileak eman duen nodo baterako sarbidea ukatu dezake. Egiaztatu unitatearen gailu-politika nodoa badagoen baina zerbitzuak baimen-errore bat salatzen duenean, eta aldatu politika hori edukiontzia zabaldu ordez.
Konexio beroa hautazkoa eta espresua da. required=false duen sarrera batek iturburu-bide bat behar du eta ager edo desager daiteke ostalariaren gailua aldatzean. Bizitza-ziklo hori etorri eta joan egiten den hardwareari dagokio; VPNak abiaraztean behar duen TUN gailu batentzat, sarrera hautazko batek zerbitzua bere aurrebaldintza existitu aurretik abiatzen utz dezake.
Egiaztatu ikusgaitasuna, irekitzea eta interfazea hurrenkera horretan
Lehenengo berretsi nodoa aurreikusitako edukiontziaren barruan. Bideak, zenbaki nagusiak eta txikiak eta jabetzak ostalariaren gailuarekin eta gehitu duzun sarrerarekin bat egin behar dute. Nodo bat falta bada, kudeatzaileak ez zuen sarrera aplikatu, edo beste instantzia bati aplikatu zion.
lxc exec vpnbox -- ls -l /dev/net/tun
lxc exec vpnbox -- sh -c 'test -c /dev/net/tun && echo char-device-ok'
Ondoren berretsi zerbitzu-kontuak ireki dezakeela. Kontu horrekin egindako proba labur batek jabetza-arazoa zerbitzu-arazotik bereizten du. Azkenik, abiarazi bezeroa eta berretsi tunel interfaze bat agertzen dela; hirugarren urrats horrek soilik frogatzen du bide osoa, lehenengo biak gaindi daitezkeelako bezeroaren profila edo gaitasuna oraindik okerrak diren bitartean.
Idatz ezazu instantzia, gailu-etiketa, ostalariaren iturburua, bisitariaren bidea eta jabe den kontua aldaketa onartzen denean. Bost balio horiek dira geroagoko birsortze, migrazio edo profil-aldaketa batek gorde behar duena, eta testuingururik gabeko baimen-errore bat baino askoz errazago alderatzen dira.