Биринчи сессия жеңет: OpenVPN кирүүлөрүн кууп чыгарууга чейин чектөө
Кийинки кирүүнү четке кагуу эскини алмаштыруу менен бирдей эмес. Чечим ушундай эле ат менен кууп чыгарууга чейин кабыл алынышы керек, ал эми слотту текшерүү атомдук болушу керек.
Бир эсепке бир сессияга жол берген саясат экинчи кирүү келгенге чейин чечилгендей көрүнөт. Эки жыйынтык мүмкүн: жаңы келген учурдагы сессияны алмаштырат же учурдагы сессия слотту сактап, жаңы келген четке кагылат. Бир гана экинчиси биринчи сессия жеңет саясаты. Көпчүлүк кайрылган клиент параметри параллелдүүлүктү иштетет, ошондуктан бул жыйынтыкты бербейт.
Бир жөндөөнүн артында эки келишим жашыруун
Параллелдүүлүк өчүк кезде бирдей сертификат атын алып келген экинчи туташуу иштеп жаткан сессияны сүрүп чыгарышы мүмкүн. Параллелдүүлүктү күйгүзүү бир убакта бир нече сессияга жол берет, бул чектөөнүн тескериси. Эки абал тең четке кагуу саясаты эмес, ошондуктан чечимди таптакыр башка жерде кабыл алуу керек.
Бир нерсени ишке ашырардан мурун келишимди жазып коюңуз: ким четке кагылат, кайсы далил учурдагы сессияны аныктайт жана таза ажыроосуз сессия өлсө эмне болот. Эч ким ушундай түрдө айтпаган саясатты кийин текшерүү мүмкүн эмес.
Кууп чыгаруу туташуу илгичинен мурун болот
2.6 сервер кодунун жолунда параллелдүүлүк өчүк кезде жаңы клиенттин эрте даярдыгы ошол эле аттагы бардык нускаларды жок кылат. Бул жок кылуу туташуу иштетүүчүлөрүнүн тизмеги ишке киргенге чейин болот. Ошондуктан кайталоону байкап, ката кайтарган скрипт жаңы келгенди учурдагы сессия мурун эле ыргытылгандан кийин четке кагат - саясаттын алдын алгысы келген натыйжа так ушул. Upstream ишке ашыруусундагы callback тартиби сиздин build үчүн бирден бир ишенимдүү жооп.
| Stage | Who can still refuse | Effect on the incumbent |
|---|---|---|
| Certificate check | Server trust configuration | None |
| Authentication decision | The authentication controller | None, because establishment has not run |
| Connect handler | A profile script | Already evicted in the same-name case |
| Post-establishment | Status tooling, monitoring | Both sessions already exist or one is gone |
Абал файлын суроо да дарбаза эмес. Бирге келген эки аракет экөө тең бош слотту көрө алат, бири бекемдегенге чейин, жана экөө тең улантат.
Чечимди аутентификацияга жылдырыңыз
Башкаруу интерфейси сертификат текшерилгенден кийин аутентификация чечимин өзүнө ала алат. Бул курулушта контроллер байкоочу эмес: ал туташып жаткан ар бир клиент нускасын кабыл алып, ошол нуска уланта алабы деп жооп берет. Жооп орнотуудан мурун келгендиктен, четке кагуу учурдагы сессияны тийбей калтырат. Ошол эле канал ажыроолор тууралуу кабарлайт, ошентип контроллер слот мыйзамдуу бошотулганын билет.
Ар бир жаңы нуска бул дарбазадан өтүшү керек, анын ичинде кайра туташуулар жана суроосуз кайра аутентификацияланган каалаган жол. Айрым нускалар эч качан жетпеген дарбаза эч нерсени коргобойт, жана бул кемчилик бирөө айланып өтүүнү сынап көргөнгө чейин көрүнбөйт.
Токендер дарбазанын жанынан өтө алат
Токен берилгенден кийин сервер аны ички түрдө текшерип, ошол туташуу үчүн тышкы аутентификацияны өткөрүп жибере алат. Башкаруу чакырыгы эч качан болбойт, ошондуктан так ошол жерде гана ишке ашырылган слот текшерүү жаңы нусканы эч качан көрбөйт. Бул жүрүм-турум колдонуучулар үчүн ыңгайлуулук, ал эми параллелдүүлүк саясаты үчүн тешик. Токен менен аутентификацияланган туташууларды барабар ыйгарым укуктуу текшерүүдөн өткөрүңүз же саясат ар бир туташуу боюнча чечим талап кылса, токен жолун өчүрүңүз.
Муну ар бир токенди шартсыз кабыл алуу менен ордун толтурбаңыз. Мөөнөтү өткөн же жараксыз токен баары бир ишке ашпашы керек, жана ал калгандардын баары сыяктуу эле ошол чечим чекити аркылуу ишке ашпашы керек.
Бронду нускага байлаңыз, дарекке эмес
Дарек алсыз инсандык: ошол эле ноутбуктан кайра туташуу башка даректен келиши мүмкүн, ал эми көчүрүлгөн каттоо маалыматтары ошол эле даректен келиши мүмкүн. Бронду сервер дайындаган клиент нускасына байлаңыз, ошондо мурун эле кабыл алынган нусканын кайра аутентификациясы ээси катары таанылат. Жаңы нуска идентификатору ошол эле токенди көрсөтсө да биринчи жеңет чечими аркылуу өз слотун алышы керек.
Ишке ашпаган аракетке таандык бронду гана бошотуңуз. Эски аракеттен кечиктирилген ажыроо окуясы жаңыраак ээнин слотун тазалабашы керек, ошондуктан бошотуу эсепти эмес, нусканы атайт. Контроллер кайра иштетилгенден кийин бирөөнү кабыл алардан мурун тирүү сессияларды шайкештештириңиз жана эсепке кызмат кылган ар бир шлюзда ошол эле эрежени колдонуңуз.
Чынында эскирген слоттун кантип калыбына келерин өзүнчө чечиңиз. Администраторго аны тазалоонун документтелген жолу керек, жана бул жол кайра туташууну баскан колдонуучуга жеткиликсиз болушу керек.
Маанилүү жуптарды сынаңыз: дээрлик бир убакта эки кирүү, таза ажыроодон кийинки кайра туташуу, учурдагы сессиянын кайра аутентификациясы, четке кагылган жаңы келген жана контроллердин кайра иштетилиши. Ар бир учурда учурдагы сессия колдонууга жарактуу бойдон калышы керек, ал эми жаңы келген башка эсептерге зыян келтирбестен четке кагылышы керек.