Avvenimenti tal-ganċ ta’ OpenVPN: għaliex l-isem u t-timbru tal-ħin mhumiex muftieħ
Ganċ ta’ skonnessjoni jirrapporta l-ħin tal-konnessjoni, mhux il-ħin tas-skonnessjoni. Flimkien mal-isem tal-utent jista’ jtemm is-sessjoni ħażina; ippossiedi identità minflok.
Rekord ta’ skonnessjoni jasal wara li tkun diġà bdiet it-tieni konnessjoni bl-istess isem, u handler li jaġġorna l-aħħar ringiela għal dak l-utent jagħlaq is-sessjoni ħażina. L-iżball mhuwiex il-paragun tat-timbri tal-ħin. Huwa l-assunzjoni li isem flimkien ma’ sekonda sħiħa jidentifikaw sessjoni waħda. L-avvenimenti tal-ganċ jiddeskrivu konnessjonijiet, u konnessjoni teħtieġ muftieħ li jappartjeni lilha biss.
Ibda b’dak li verament ifissru l-varjabbli tas-skonnessjoni. Biss imbagħad l-għażla tal-identifikatur tagħmel sens.
X’iġġorr verament il-ganċ tas-skonnessjoni
Fi Community OpenVPN 2.6, ir-referenza tal-ganċ time_unix tiddefinixxih bħala l-mument meta l-klijent ikkonnetta; jiġi stabbilit qabel ma jaħdem il-ganċ tal-konnessjoni u ma jiġix definit mill-ġdid meta l-ganċ tas-skonnessjoni jiġi attivat aktar tard. time_duration tagħti t-tul ta’ dik is-sessjoni f’sekondi, għalhekk it-tmiem huwa bejn wieħed u ieħor il-ħin tal-konnessjoni flimkien mat-tul. It-tnejn huma sekondi sħaħ, u l-ebda waħda mhi l-mument meta d-database tiegħek ipproċessat l-avveniment. Iż-żamma ta’ dawn it-tliet ħinijiet separati hija dik li tagħmel korrelazzjoni tinżamm, minflok ma tidher biss korretta waqt l-ittestjar.
Din l-aritmetika jistħoqqilha li tinkiteb, għax huwa l-uniku ħin tat-tmiem li joffri l-ganċ stess. Id-dewmien tal-ipproċessar u d-differenzi fl-arloġġi bejn il-hosts għadhom barra minnu.
Għaliex il-par ovvju mhuwiex uniku
L-iggruppar tal-isem mal-ħin tal-konnessjoni jnaqqas it-tfittxija u għadu ma jidentifikax sessjoni. Klijent jista’ jerġa’ jikkonnettja fl-istess sekonda, għalhekk żewġ sessjonijiet jistgħu jaqsmu ż-żewġ valuri. Żewġ istanzi tad-daemon, jew sostituzzjoni tas-server li żżomm l-istess konfigurazzjoni, jistgħu jipproduċu dak il-par minn proċessi differenti. L-indirizzi tat-tunnel jiġu riċiklati għall-istess raġuni, li tagħmilhom attributi ta’ sessjoni u mhux identifikaturi għaliha.
Il-mod tal-falliment huwa sieket. Skonnessjoni tardiva għall-ewwel sessjoni taqbel mal-aħħar ringiela u ttemm allokazzjoni li t-tieni sessjoni għadha tuża, għalhekk l-utent jesperjenza telf ta’ aċċess każwali li ma kkawżax. Għadd ta’ ringieli li jidher korrett wara jagħmel il-problema aktar diffiċli biex tinstab.
Minn fejn tiġi identità stabbli
L-interface tal-maniġment jassenja lil kull klijent identifikatur tal-istanza tal-klijent, u dak l-identifikatur huwa limitat għall-istanza tad-daemon li ħarġet. Muftieħ estern li jista’ jaħdem jgħaqqad identifikatur stabbli tas-server, epoka li tinbidel meta jibda d-daemon, u dak l-ID tal-klijent. L-epoka hija importanti għax l-identifikaturi jerġgħu jibdew mal-proċess, u ID ta’ proċess vojt jista’ jerġa’ jintuża aktar tard minn xi ħaġa mhux relatata.
Il-varjabbli tal-ambjent stabbiliti ġewwa skript tal-konnessjoni tat-tfal ma jivvjaġġawx lejn l-iskript tas-skonnessjoni aktar tard tad-daemon ġenitur, għax dawk l-iskripts jaħdmu bħala proċessi separati bl-ambjenti tagħhom stess. Għalhekk il-ġenerazzjoni ta’ UUID fil-ħin tal-konnessjoni hija nofs soluzzjoni. In-naħa tas-skonnessjoni trid tkun tista’ ssemmi l-istess UUID, li jfisser li l-identità trid tgħix f’xi post li jistgħu jilħqu ż-żewġ avvenimenti.
Agħmel l-irtirar kundizzjonali u idempotenti
Ittira skont is-sid tas-sessjoni, mhux skont l-utent. Handler li jħassar kwalunkwe allokazzjoni li bħalissa tappartjeni lil isem eventwalment iħassar dik ħażina, u l-unika difiża hija li tiċċekkja li r-rekord li jitneħħa huwa r-rekord li jiddeskrivi dan l-avveniment.
L-interface tal-maniġment taċċetta klijent tal-maniġment wieħed konness fi żmien wieħed, għalhekk integra ma’ min diġà jippossjedih minflok ma ttejjeb it-tieni osservatur li jikkompeti għall-istess socket.
Immaniġġja avvenimenti ripetuti mingħajr ma tbiddel ir-riżultat darbtejn, u żżejjen l-avvenimenti mhux imqabbla għar-rikonċiljazzjoni minflok ma tarmihom. Callback tas-skonnessjoni għandu kundizzjonijiet ta’ ċiklu tal-ħajja dokumentati u jista’ qatt ma jasal wara crash jew waqfien iebes, għalhekk id-disinn jeħtieġ mod kif jirrappreżenta sessjoni li l-avveniment tat-tmiem tagħha jkun nieqes.
Ittestja l-każijiet skomdi apposta: żewġ rikonnessjonijiet f’sekonda waħda, żewġ istanzi tad-daemon, konnessjoni li l-ipproċessar tagħha falla, u restart tad-daemon f’nofs sessjoni. Muftieħ li jiflaħ l-erbgħa kollha huwa muftieħ denju tal-fiduċja.