Како измерити време рада OpenVPN клијента помоћу кука up и down
OpenVPN нема бројач времена рада. Сачувајте епоха-ознаку из куке up, обришите је при down, одузмите је и држите је тачном кроз поновна покретања и примерке.
Контролна табла тражи број колико дуго је веза активна, а OpenVPN га не даје. Клијент зна када му се тунел подигао, али само ако нешто забележи тај тренутак пре него што се изгуби стање сесије. Подржано место је кука up, а вредност коју вреди сачувати је сирова епоха-секунда, а не форматизован низ. Све после тога је аритметика, плус неколико правила реда која одлучују да ли број остаје тачан.
Потврдите да се куке заиста извршавају
Докажите да се кука активира пре него што било шта пројектујете око ње. Минимална конфигурација клијента захтева script-security 2 и експлицитне путање up и down; без безбедносне линије OpenVPN одбија да изврши скрипту и то јасно каже. Додајте up-restart и down-pre истовремено да би се путање поновног покретања и расклапања понашале предвидиво.
Направите прву верзију куке тако да додаје своје окружење у датотеку и не ради ништа друго. То вам показује имена променљивих које ваша градња заиста извози, као што су dev и script_type, уместо оних којих се сећате из друге верзије. Извршите једно повезивање и једно искључивање, затим прочитајте датотеку. Ако се ништа не појави, зауставите се овде, јер ће дизајн са временском ознаком на куки која никад не ради изгледати као отказ надзора недељама.
Проверите под којим корисником ради кука. Са постављеним user и group OpenVPN се одриче привилегија пре извршавања скрипти, па директоријум у који root може да пише може бити затворен за куку. Изаберите путању из угла услуге, а не ваше љуске.
Забележите једну епоха-вредност и обришите је намерно
Куки up потребна је једна линија, date +%s > /run/openvpn-client.started, са путањом прилагођеном за сваки примерак. Епоха-вредност касније избегава питања језика, временске зоне и формата, и то је исти број који агент надзора може упоредити са својим сатом.
Брисање је исто толико важно као писање. Кука down треба да испразни или уклони датотеку, а down-pre то чини пре него што се интерфејс затвори, што уклања прозор у ком датотека описује тунел којег више нема. up-restart затим освежава ознаку при унутрашњем поновном покретању уместо да остави првобитну вредност на месту. Без тог пара поновно покретање после истека ping-а даје број који наставља да расте док се тунел поново успоставља.
Изаберите место са правим животним веком. Датотека под /run нестаје при поновном покретању, што одговара стварности, док датотека под /tmp може неочекивано да се очисти, а она у конфигурационом директоријуму опстаје на начин који доводи у заблуду. Поставите дозволе тако да само корисник услуге и читач надзора могу да је читају.
Израчунајте време рада без поверења у линије дневника
Прочитајте сачувану секунду, прочитајте тренутну секунду, одузмите. Када датотека недостаје или је празна, частан одговор је да нема активног тунела, а не да је време рада нула, јер та два стања треба да подигну различита упозорења. Држите сирове секунде у подацима надзора, а дане и сате форматирајте у слоју приказа. Форматер који заокружује унутар извозника одбацује прецизност која ће некоме бити потребна током инцидента.
Парсирање временских ознака из дневника је примамљив кратак пут и пада на три начина: формат прати које год опције су постављене, ротација уклања историју, а поновна повезивања се појављују као одвојене сесије, а не један непрекинут тунел. Кука бележи догађај једном, у тренутку када се догоди.
Када провера ради на другом домаћину, пошаљите временску ознаку, а не трајање, да би читач применио свој сат. Тада се мали негативан резултат чита као разлика сатова, а не као покварена кука.
Покријте поновна повезивања, поновна покретања и више примерака
Два тунела на једном домаћину захтевају две датотеке, са кључем по имену примерка које услуга већ користи. Дељена путања значи да најновије повезивање преписује време почетка сваког профила, а симптом је број који скочи уназад када почне други тунел.
Понашање при поновном повезивању заслужује сопствени тест, јер управо тамо веродостојан дизајн тихо пријављује погрешно. Присилите поновно покретање одбацивањем партнера или слањем сигнала процесу, затим упоредите стање интерфејса са датотеком. Временска ознака треба да се помери напред у тренутку када се тунел врати.
На страни сервера, датотека стања носи connected-since вредност по клијенту, која одговара на друго питање: када је сервер последњи пут видео тог партнера. Користите је за унакрсну проверу, а не као замену, јер нестаје заједно са сесијом коју описује. Ни једно од два мерења не говори ништа о здрављу апликације иза тунела.
Извршите три провере које хватају грешке у реду
Тестирајте нормално повезивање, присилно поновно повезивање и чисто заустављање, читајући листу интерфејса и датотеку заједно после сваког. Ознака која и даље постоји после чистог заустављања, или датотека која тврди тунел којег нема на листи интерфејса, указује директно на ред кука. Извршавајте провере као корисник услуге и са путањама услуге, јер root љуска може да види другу датотеку и да самоуверено погрешан одговор. Затим оставите спорог испитивача да чита датотеку и потврдите да никада не пише у њу.
Анкета сваких шездесет секунди покрива упозорења, и ниједна кука не треба да рачуна на то да је тај испитивач жив. Држите те две одговорности одвојено и број остаје поуздан када се било која страна поново постави.