Kako script bat tunelaren beste aldera irits daitekeen hiru baldintzaren araberakoa da: zein gertaerari lotuta dagoen, OpenVPN oraindik bere abio-sekuentziaren barruan dagoen script-a exekutatzen denean, eta lana sekuentzia horretatik bereizi den ala ez. Script gehienek hirugarrenean huts egiten dute. Itxaronaldi bat gehitzeak bizitza-zikloaren arazoa denbora-arazo gisa tratatzen du, eta engainatzeko adina aldiz funtzionatzen du.

Erabaki gertaera lehenengo, gero lana atzeratzeko mekanismoa, gero atzeratutako lana exekutatzen den lekua. Hiru erabaki horiek independenteak dira, eta horiek nahastea da bi lerroko kakoa arratsalde oso bat bihurtzeko modua.

Zergatik itxaroten du kakoak haren zain dagoen tunel baten

OpenVPN bere kakoak sinkronikoki deitzen ditu, paketeak mugitzen dituen prozesu beraren barruan. up tun edo tap gailua existitzen denean abiarazten da, baina edozein bide gehitu aurretik, eta route-up bideen ondoren; une horietako batek ere ez du promesten pare batek erantzungo duenik. Edozein kakotako script bat exekutatzen ari den bitartean, daemonak ez du birbidaltzen, beraz trafikoak tunela zeharkatzea espero duen komando bat komandoaren zain dagoen tunel baten zain geratzen da. Itxarote zirkular hori da eskuzko exekuzio bat ondo irteten den eta kakoak denbora-muga jotzen duen arrazoia.

Adabaki nabarmena, segundo batzuk lo egitea, batzuetan funtzionatzen du urruneko muturrak bere kabuz altxatu zuelako, ez loak ezer konpondu zuelako. Prestutasuna aztertzen duen laguntzaile bat beste erantzun bat da: kakoa itzuli egiten da, birbidaltzea hasten da, eta laguntzaileak behar duena lortzen du hori benetan dagoenean.

Aukeratu kakua gertaeraren arabera, ez erosotasunaren arabera

Lotu up gailua soilik behar duen lanari, route-up bideak behar dituen lanari, eta gorde client-connect eta client-disconnect zerbitzari aldean bezero bakoitzeko zereginetarako. Deskonektatzean garbiketak bi aldiz exekutatzea onartu behar du, interfaze iraunkor baten bidezko berrerkonexioek berrabiarazte osoaren sekuentzia bera ez baitute jarraitzen. Zerbitzarian, client-connect bezeroa autentifikatzen denean abiarazten da, ez daemona hasten denean, eta hori merezi du egiaztatzea logika hara eraman aurretik. Lana zerbitzuaren bizitza-zikloarena bada eta ez konexio bakarrarena, systemd unitate bat etxe hobea da edozein kako baino.

Kako komandoak daemonak zuzenean exekutatzen ditu, tartean shellik gabe, beraz up lerro bateko ifconfig_remote testu literal gisa iristen da. Bildu komandoa shell esplizitu batean, edo eduki logika ingurunea irakurtzen duen script batean. ipchange bere argumentuak gehitzen dituen direktiba bat da: helbidea eta portua komandoari ematen dizkio, beraz inorentzat idatzitako script batek ustekabeko bi ikusten ditu.

Lana bereizteko hiru modu

Lehen aukera laguntzailea kakotik bertatik atzeko planora bidaltzea da: hasi setsid edo systemd-run --scope erabiliz, itxi heredatutako deskriptoreak eta irten berehala zerorekin. Bigarrena kakoak egoera-fitxategi txiki bat idaztea eta systemd tenporizadore edo bide-unitate batek harekin jardutea da, horrek kakoa hutsala mantentzen du eta berriz saiatzeko politika logak dauden tokian jartzen du. Hirugarrena kakua erabat baztertzea eta lana VPN zerbitzuaren ondoren ordenatutako unitate batera mugitzea da, hau da erantzun zuzena lana inolaz ere konexio bakoitzekoa ez denean. Hirurek arau bat partekatzen dute: kakoak itzuli behar du tunela behar izan aurretik.

Aukera dezakezuna aukera dezakezula, egin laguntzailea idempotente eta behatzeko modukoa. Bi deialdi gainjarrik ez lukete ekintza irrebertsible bera bi aldiz exekutatu behar, eta huts egiten duen laguntzaile batek gizaki batek irakur dezakeena utzi behar du.

Bereizi sandbox hutsegiteak bizitza-ziklo hutsegiteetatik

Script bat root gonbidapenetik exekutatzen denean eta zerbitzu gisa huts egiten duenean, arrazoia normalean sandbox bat izaten da, ez sarea. ProtectHome murriztaile batek, irakurtzeko soilik den ProtectSystem batek edo existitzen ez den lan-direktorio batek script-a edo bere datuak eskuraezin utz ditzakete, eta SELinux ostalari batean fitxategiak exekuzioa baimetzen duen testuinguru bat ere behar du. Irakurri unitatea systemctl cat openvpn-server@server erabiliz eta erregistroa journalctl -u openvpn-server@server -n 80 erabiliz, gero bilatu baimen edo testuinguru errore bat konexio-denboraren ordez. Sandboxa desgaitzea azken mugimendua izan beharko litzateke, ez lehenengoa.

Bizitza-ziklo hutsegite batek itxura desberdina du: kakoa hasten da, laguntzailea exekutatzen da, eta socket-a besterik ez dago oraindik. Idatzi denbora-marka duen lerro bat kakotik bertatik, deskonektatu eta berrerkonektatu, eta irakurri gertaerak ordenan. Laguntzaileak tunela benetan behar duenean, utzi prestutasuna aztertzen denbora finko batean lo egitearen ordez.

Hiru eremuk dute hurrengo txostena erabilgarri egiten: zein kakok exekutatu zuen, zein kontu erabili zuen eta non gelditu zen. Horiek gabe, ondorengo ikerketa bakoitza hutsetik hasten da.

Erlazionatutako artikuluak