Jekk skript hook jilħaqx in-naħa l-oħra tat-tunnel jiddependi fuq tliet kundizzjonijiet: liema avveniment huwa marbut miegħu, jekk OpenVPN għadux fil-kju tal-bidu tiegħu meta jgħaddi l-iskript, u jekk ix-xogħol inqatax minn dak il-kju. Il-biċċa l-kbira tal-iskripts ifallu fit-tielet. Iż-żieda ta’ reqda tittratta problema taċ-ċiklu tal-ħajja bħala problema ta’ ħin, u taħdem spiss biżżejjed biex tqarraq.

Iddeċiedi l-avveniment l-ewwel, imbagħad il-mekkaniżmu biex ix-xogħol jitqiegħed lura, imbagħad il-post fejn jgħaddi x-xogħol imqiegħed lura. Dawn it-tliet deċiżjonijiet huma indipendenti, u li tħallathom huwa kif hook ta’ żewġ linji jsir wara nofsinhar sħiħ.

Għaliex il-hook jistenna tunnel li jistenna lilu

OpenVPN isejjaħ il-hooks tiegħu b’mod sinkroniku, ġewwa l-istess proċess li jċaqlaq il-pakketti. up jintlaqat meta l-apparat tun jew tap ikun jeżisti imma qabel ma jiżdied xi rotta, u route-up jintlaqat wara r-rotot; l-ebda wieħed minn dawk il-mumenti ma jwiegħed li l-parti l-oħra twieġeb. Sakemm skript minn xi hook għadu għaddej, id-daemon mhux qed jgħaddi ’l quddiem, għalhekk kmand li jistenna li t-traffiku jaqsam it-tunnel jistenna tunnel li jistenna l-kmand. Dan l-istennija ċirkolari huwa r-raġuni għaliex tlaq għaddej manwali jgħaddi u l-hook jaqa’ fi timeout.

It-tiswija ovvja, reqda ta’ ftit sekondi, xi drabi taħdem għax it-tarf imbiegħed tela’ waħdu, mhux għax ir-reqda sewwiet xi ħaġa. Assistent li jistaqsi dwar il-preparazzjoni hija tweġiba oħra: il-hook jerġa’ lura, it-trasferiment jibda, u l-assistent jikseb dak li jeħtieġ meta dak ikun tassew hemm.

Agħżel il-hook skont l-avveniment, mhux skont il-konvenjenza

Qabbad up ma’ xogħol li jeħtieġ biss l-apparat, route-up ma’ xogħol li jeħtieġ rotot, u żżomm client-connect u client-disconnect għal kompiti għal kull klijent fuq in-naħa tas-server. It-tindif meta tinqata’ l-konnessjoni għandu jiflaħ li jgħaddi darbtejn, għax konnessjonijiet mill-ġdid fuq interface persistenti ma jsegwux l-istess sekwenza ta’ tqegħid mill-ġdid sħiħ. Fuq is-server, client-connect jintlaqat meta l-klijent jawtentika ruħu, mhux meta jibda d-daemon, li jisħaq li jiġi kkonfermat qabel ma l-loġika tiġi mċaqalqa hemmhekk. Jekk ix-xogħol jappartjeni għaċ-ċiklu tal-ħajja tas-servizz u mhux għal konnessjoni waħda, unità systemd hija dar aħjar minn kwalunkwe hook.

Il-kmandi tal-hook jiġu esegwiti direttament mid-daemon, mingħajr shell bejniethom, għalhekk ifconfig_remote f’linja up jaslilna bħala test litterali. Dawwar il-kmand fi shell espliċita, jew żomm il-loġika fi skript li jaqra l-ambjent. ipchange hija direttiva waħda li żżid l-argumenti tagħha stess: tgħaddi l-indirizz u l-port lill-kmand, għalhekk skript miktub għal ħadd jara tnejn mhux mistennija.

Tliet modi kif taqla’ x-xogħol

L-ewwel għażla hija li tibgħat l-assistent fl-isfond minn ġewwa l-hook: ibdieh b’setsid jew systemd-run --scope, agħlaq id-deskritturi li ntirtu, u oħroġ mill-ewwel biż-żero. It-tieni hija li l-hook jikteb fajl żgħir tal-istat u timer ta’ systemd jew unità tal-passa jieħdu azzjoni fuqu, li żżomm il-hook trivjali u tqiegħed il-politika tat-tentattivi mill-ġdid fejn hemm il-logs. It-tielet hija li tħalli l-hook għal kollox u ċċaqlaq ix-xogħol għal unità ordnata wara s-servizz VPN, li hija t-tweġiba t-tajba meta x-xogħol mhuwiex għal kull konnessjoni xejn. It-tlieta jaqsmu regola waħda: il-hook irid jerġa’ lura qabel ma jkollu bżonn it-tunnel.

X’tistaqsi x’tagħżel, agħmel l-assistent idempotenti u osservabbli. Żewġ sejħiet li jikkoinċidu m’għandhomx iwettqu l-istess azzjoni irreversibbli darbtejn, u assistent li jfalli jrid iħalli xi ħaġa li bniedem jista’ jaqra.

Issepara l-fallimenti tas-sandbox mill-fallimenti taċ-ċiklu tal-ħajja

Meta skript jgħaddi minn prompt root u jfalli bħala servizz, il-kawża normalment hija sandbox u mhux in-netwerk. ProtectHome restrittiv, ProtectSystem biss-qari, jew direttorju tax-xogħol li ma jeżistix jistgħu jħallu l-iskript jew id-dejta tiegħu ma jintlaħqux, u fuq host SELinux il-fajl jeħtieġ ukoll kuntest li jippermetti l-eżekuzzjoni. Aqra l-unità b’systemctl cat openvpn-server@server u l-ġurnal b’journalctl -u openvpn-server@server -n 80, imbagħad fittex żball ta’ permess jew ta’ kuntest minflok timeout tal-konnessjoni. L-iżattivar tas-sandbox għandu jkun l-aħħar pass, mhux l-ewwel.

Falliment taċ-ċiklu tal-ħajja jidher differenti: il-hook jibda, l-assistent jgħaddi, u s-socket sempliċement għadux hemm. Ikteb linja bit-timbru tal-ħin mill-hook stess, aqta’ u erġa’ qabbad, u aqra l-avvenimenti fl-ordni. Meta l-assistent verament jeħtieġ it-tunnel, ħallih jistaqsi dwar il-preparazzjoni minflok torqod għal żmien fiss.

Tliet oqsma jagħmlu r-rapport li jmiss utli: liema hook għadda, liema kont uża, u fejn waqaf. Mingħajrhom kull investigazzjoni aktar tard tibda mill-bidu.

Artikli relatati