Контролна табла бара број за тоа колку долго врската е активна, а 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 обвивката може да види друга датотека и да даде уверен погрешен одговор. Потоа оставете бавен прашалник да ја чита датотеката и потврдете дека никогаш не пишува во неа.

Анкета на секои шеесет секунди ги покрива предупредувањата и ниту една кука не треба да смета на тоа дека тој прашалник е жив. Држете ги тие две одговорности одделно и бројот останува веродостоен кога која било страна ќе се распореди повторно.

Поврзани статии