OpenVPN илмек окуялары: эмнеге ат жана убакыт белгиси ачкыч эмес
Ажыратуу илмеги туташуу убактысын билдирет, ажыратуу убактысын эмес. Колдонуучу аты менен жупташканда ал туура эмес сессияны жабышы мүмкүн; анын ордуна инсандыкка ээ болуңуз.
Ошол эле ат менен экинчи туташуу башталып кеткенден кийин ажыратуу жазуусу келет, жана ошол колдонуучунун эң жаңы сабын жаңырткан иштетүүчү туура эмес сессияны жабат. Ката убакыт белгилерин салыштырууда эмес. Ката ат менен бир бүтүн секунд бир сессияны аныктайт деген божомолдо. Илмек окуялары туташууларды сүрөттөйт, ал эми туташууга өзүнө гана таандык ачкыч керек.
Ажыратуу өзгөрмөлөрү чындыгында эмнени билдиреринен баштаңыз. Ошондо гана идентификаторду тандоо маанилүү болот.
Ажыратуу илмеги чындыгында эмнени алып жүрөт
Community OpenVPN 2.6 ичинде илмек шилтемеси time_unix кардар туташкан учур катары аныктайт; ал туташуу илмеги иштегенге чейин коюлат жана ажыратуу илмеги кийин иштегенде кайра аныкталбайт. time_duration ошол сессиянын узактыгын секунд менен берет, ошондуктан аягы болжол менен туташуу убактысы кошуу узактык. Экөө тең бүтүн секунд, жана экөө тең сиздин маалымат базаңыз окуяны иштеп чыккан учур эмес. Ушул үч убакытты өзүнчө кармоо корреляциянын сыноо учурунда гана туура көрүнүүсүнө эмес, чындап турушуна алып келет.
Бул арифметика жазылууга татыктуу, анткени бул илмектин өзү сунуш кылган жалгыз аяктоо убактысы. Иштетүү кечигүүсү жана хосттордун ортосундагы саат айырмачылыктары дагы деле анын сыртында калат.
Эмнеге ачык жуп уникалдуу эмес
Атты туташуу убактысы менен жупташтыруу издөөнү тарайтат жана дагы эле сессияны аныктабайт. Кардар ошол эле секунддун ичинде кайра туташа алат, ошондуктан эки сессия эки маанини тең бөлүшө алат. Эки демон нускасы же ошол эле конфигурацияны сактаган сервер алмаштыруу бул жупту ар башка процесстерден жаратышы мүмкүн. Туннел дареги да ошол эле себептен кайра иштетилет, бул аларды сессиянын атрибуттары кылат, анын идентификаторлору эмес.
Иштебей калуу режими тынч. Биринчи сессия үчүн кечиккен ажыратуу эң жаңы сапка дал келип, экинчи сессия дагы колдонуп жаткан бөлүштүрүүнү токтотот, ошондуктан колдонуучу өзү себеп болбогон кокустан кирүү жоготуусун баштан кечирет. Кийин туура көрүнгөн саптардын саны маселени байкоону кыйындатат.
Туруктуу инсандык кайдан келет
Башкаруу интерфейси ар бир кардарга кардар нускасынын идентификаторун берет, жана бул идентификатор аны берген демон нускасы менен чектелет. Иштөөгө жарактуу тышкы ачкыч туруктуу сервер идентификаторун, демон башталганда өзгөрүүчү доорду жана ошол кардар IDсин бириктирет. Доор маанилүү, анткени идентификаторлор процесс менен кайра башталат, ал эми жылаңач процесс IDсин кийин байланышы жок нерсе кайра колдонушу мүмкүн.
Бала туташуу скриптинин ичинде коюлган чөйрө өзгөрмөлөрү ата-эне демондун кийинки ажыратуу скриптине өтпөйт, анткени бул скрипттер өз чөйрөлөрү менен өзүнчө процесстер катары иштейт. Ошондуктан туташуу убагында UUID жаратуу жарым чечим. Ажыратуу тарабы ошол эле UUIDни атай алышы керек, башкача айтканда инсандык эки окуя тең жете ала турган жерде жашоосу керек.
Бошотууну шарттуу жана идемпотенттүү кылыңыз
Сессия ээси боюнча бошотуңуз, колдонуучу боюнча эмес. Атка тиешелүү болгон ар кандай бөлүштүрүүнү өчүргөн иштетүүчү акыры туура эмесин өчүрөт, жана жалгыз коргоо — өчүрүлүп жаткан жазуу ушул окуя сүрөттөгөн жазуу экенин текшерүү.
Башкаруу интерфейси бир убакта бир туташкан башкаруу кардарын кабыл алат, ошондуктан ошол эле сокет үчүн атаандашкан экинчи байкоочуну тиркөөнүн ордуна аны мурун ээлеген тарап менен интеграциялашыңыз.
Кайталанган окуяларды натыйжаны эки жолу өзгөртпөстөн иштетиңиз, жана жупташпаган окуяларды ыргытуунун ордуна жарашуу үчүн сактаңыз. Ажыратуу кайтарым чакыруусунун документтелген жашоо цикл шарттары бар жана кыйроодон же катуу токтотуудан кийин эч качан келбеши мүмкүн, ошондуктан долбоорго аяктоо окуясы жок сессияны көрсөтүү жолу керек.
Ыңгайсыз учурларды атайын сынап көрүңүз: бир секунддун ичинде эки кайра туташуу, эки демон нускасы, иштетүүсү ийгиликсиз болгон туташуу жана сессиянын ортосунда демонду кайра баштоо. Төртөөнө тең чыдаган ачкыч гана ишенимге татыктуу.