Digwyddiadau bachyn OpenVPN: pam nad yw enw a chyfrasiad amser yn allwedd
Mae bachyn datgysylltu yn adrodd amser y cysylltiad, nid amser y datgysylltiad. Gyda’r enw defnyddiwr gall ddirwyn y sesiwn anghywir i ben; meddiannwch hunaniaeth yn lle hynny.
Mae cofnod datgysylltu yn cyrraedd ar ôl i ail gysylltiad o dan yr un enw fod eisoes wedi dechrau, ac mae triniwr sy’n diweddaru’r rhes ddiweddaraf ar gyfer y defnyddiwr hwnnw yn cau’r sesiwn anghywir. Nid y gymhariaeth cyfrasiad amser yw’r camgymeriad. Y camgymeriad yw’r dybiaeth bod enw ynghyd ag un eiliad gyfan yn nodi un sesiwn. Mae digwyddiadau bachyn yn disgrifio cysylltiadau, ac mae cysylltiad angen allwedd sy’n perthyn iddo ef yn unig.
Dechreuwch gyda’r hyn y mae’r newidynnau datgysylltu yn ei olygu mewn gwirionedd. Dim ond wedyn y mae dewis y dynodwr yn gwneud synnwyr.
Yr hyn y mae’r bachyn datgysylltu yn ei gario mewn gwirionedd
Yn Community OpenVPN 2.6, mae’r cyfeirlyfr bachyn time_unix yn diffinio fel y foment y cysylltodd y cleient; fe’i gosodir cyn i’r bachyn cysylltu redeg, ac ni chaiff ei ailddiffinio pan fydd y bachyn datgysylltu yn tanio yn nes ymlaen. time_duration yn rhoi hyd y sesiwn honno mewn eiliadau, felly mae’r diwedd yn fras yn amser y cysylltiad ynghyd â’r hyd. Mae’r ddau yn eiliadau cyfan, ac nid yw’r naill na’r llall yn foment pan brosesodd eich cronfa ddata’r digwyddiad. Cadw’r tri amser hynny ar wahân sy’n gwneud i gydberthynas ddal, yn hytrach na dim ond edrych yn iawn yn ystod profion.
Mae’r rhifyddeg hon yn haeddu cael ei hysgrifennu, oherwydd dyma’r unig amser diwedd y mae’r bachyn ei hun yn ei gynnig. Mae oedi prosesu a gwahaniaethau cloc rhwng gwesteiwyr yn dal y tu allan iddo.
Pam nad yw’r pâr amlwg yn unigryw
Mae paru’r enw â’r amser cysylltu yn culhau’r chwiliad ac yn dal i beidio â nodi sesiwn. Gall cleient ailgysylltu o fewn yr un eiliad, felly gall dwy sesiwn rannu’r ddau werth. Gall dwy enghraifft o ddemôn, neu amnewidiad gweinydd sy’n cadw’r un ffurfweddiad, gynhyrchu’r pâr hwnnw o brosesau gwahanol. Mae cyfeiriadau twnnel yn cael eu hailgylchu am yr un rheswm, sy’n eu gwneud yn briodoleddau sesiwn yn hytrach nag yn ddynodwyr ar ei chyfer.
Mae’r dull methu yn dawel. Mae datgysylltiad hwyr ar gyfer y sesiwn gyntaf yn cyfateb i’r rhes ddiweddaraf ac yn dod â dyraniad y mae’r ail sesiwn yn dal i’w ddefnyddio i ben, felly mae’r defnyddiwr yn profi colled mynediad ar hap na wnaeth unrhyw beth i’w hachosi. Mae cyfrif rhesi sy’n edrych yn gywir wedyn yn gwneud y broblem yn anoddach ei gweld.
O ble y daw hunaniaeth sefydlog
Mae’r rhyngwyneb rheoli yn rhoi dynodwr enghraifft cleient i bob cleient, ac mae’r dynodwr hwnnw wedi’i gwmpasu i’r enghraifft ddemôn a’i cyhoeddodd. Mae allwedd allanol ymarferol yn cyfuno dynodwr gweinydd sefydlog, epoc sy’n newid pan fydd y demôn yn dechrau, a’r ID cleient hwnnw. Mae’r epoc yn bwysig oherwydd bod dynodwyr yn ailgychwyn gyda’r broses, a gall ID proses noeth gael ei ailddefnyddio yn ddiweddarach gan rywbeth di-gysylltiad.
Nid yw newidynnau amgylchedd a osodir y tu mewn i sgript cysylltu plentyn yn teithio i sgript datgysylltu hwyrach y demôn rhiant, oherwydd bod y sgriptiau hynny’n rhedeg fel prosesau ar wahân â’u hamgylcheddau eu hunain. Felly mae cynhyrchu UUID ar amser cysylltu yn hanner datrysiad. Mae’n rhaid i’r ochr ddatgysylltu allu enwi’r un UUID, sy’n golygu bod yn rhaid i’r hunaniaeth fyw yn rhywle y gall y ddau ddigwyddiad ei gyrraedd.
Gwnewch ddirwyn i ben yn amodol ac yn idempotent
Dirwynwch i ben yn ôl perchennog y sesiwn, nid yn ôl y defnyddiwr. Bydd triniwr sy’n dileu unrhyw ddyraniad sydd ar hyn o bryd yn perthyn i enw yn y pen draw yn dileu’r un anghywir, a’r unig amddiffyniad yw gwirio mai’r cofnod sy’n cael ei dynnu yw’r cofnod y mae’r digwyddiad hwn yn ei ddisgrifio.
Mae’r rhyngwyneb rheoli yn derbyn un cleient rheoli cysylltiedig ar y tro, felly integreuwch â’r sawl sy’n ei feddu’n barod yn lle atodi ail arsylwydd sy’n cystadlu am yr un soced.
Trafodwch ddigwyddiadau ailadroddus heb newid y canlyniad ddwywaith, a chadwch ddigwyddiadau heb eu paru ar gyfer cymodi yn lle eu taflu i ffwrdd. Mae gan alwad yn ôl datgysylltu amodau cylch bywyd wedi’u dogfennu ac efallai na fydd byth yn cyrraedd ar ôl damwain neu stop caled, felly mae angen ffordd ar y dyluniad i gynrychioli sesiwn y mae ei digwyddiad gorffen ar goll.
Profwch yr achosion lletchwith yn fwriadol: dau ailgysylltiad o fewn un eiliad, dwy enghraifft ddemôn, cysylltiad y methodd ei brosesu, ac ailgychwyn demôn yng nghanol sesiwn. Mae allwedd sy’n goroesi pob un o’r pedwar yn allwedd sy’n werth ei hymddiried.