Редослед заустављања VPN и прокси сервиса на Linux-у
Зауставите потрошача док пут још постоји, затим прокси, а затим тунел преко његовог власника. Користите ExecStop и TimeoutStopSec свесно, а не широко убијање процеса.
Застоји при заустављању док прокси ради ретко су грешка VPN-а, чак и када је VPN последње што се види на екрану. Апликације иза проксија још чекају пут који ће ускоро нестати, а јединица која поседује тунел још није добила команду да га затвори. Оно што изгледа као спор сервис обично је проблем редоследа. Уређивање решава више таквих случајева него било каква измена тајмаута.
Идите ка споља у обрнутом редоследу: прво потрошачи, затим прокси, а затим тунел — сваки зауставља онај компонент који га је покренуо.
Направите списак јединица пре него што било шта зауставите
Запишите јединицу апликације, јединицу проксија и власника VPN-а који учествују у нормалном покретању. Додајте било који резолвер или помоћни компонент са сопственим затварањем, јер се они заборављају у два сата ујутру. Без тог списка прва команда заустављања коју откуцате изабраће жртву насумице.
Имена су слаб доказ. Кориснички прокси, системски прокси и тунел другог налога могу делити исто име, а имати потпуно неповезане животне циклусе.
Прво завршите посао, затим зауставите потрошача
Планирано заустављање почиње апликацијом: дозволите јој да заврши или откаже своје захтеве, затим зауставите прокси преко његове сервисне јединице. Ако апликација треба да настави да ради након што тунел нестане, уредите то намерно, уместо да је оставите прикачену на руту која ће ускоро нестати.
Захтеви који су били у току током заустављања припадају запису, јер одатле долази олуја поновних покушаја при следећем покретању.
ExecStop и ExecStopPost су различити инструменти
ExecStop= — то је синхрона операција заустављања; ExecStopPost= — то је чишћење које се извршава чак и после неуспелог покретања. Команда заустављања која само пошаље сигнал процесу и врати се дозвољава systemd-у да настави док потрошач још испира податке. Све што мора да се догоди без обзира на све припада пост-варијанти, а све што мора да блокира заустављање припада синхроној. Прегледајте ефективну јединицу и њене drop-in датотеке уместо да мењате датотеку пакета на месту.
Граф зависности уређује послове заустављања. Он не претвара асинхрони скрипт у синхрони и не тера удаљену апликацију да потврди своје податке.
Ограничите заустављање и знајте цену тог ограничења
TimeoutStopSec= ограничава и команду заустављања и сопствено окончање сервиса, а када лимит истекне systemd прелази на присилно убијање. Изаберите вредност према стварном понашању апликације при испирању и запишите шта може бити изгубљено када се лимит достигне. Број изабран зато што машина треба брже да се искључи је подешавање губитка података под другим именом.
Када је заустављање и даље споро, забележите јединицу, њене подређене процесе, интервал журнала и резултат тајмаута. Скраћивање свих тајмаута или посезање за широким убијањем је начин на који чиста заустављања постају оштећено стање при следећем покретању.
Искључите се преко власника, затим тестирајте три случаја
Када су потрошачи заустављени, замолите менаџера који поседује тунел да се искључи: systemd инстанцу, активну везу NetworkManager-а или сервис добављача. Убијање неповезаног OpenVPN процеса не уклања нужно сесију која је обезбедила руту, а прокси са политиком поновног покретања може поново да створи захтев док ви разграђујете пут. Ускладите ту политику са планираним заустављањем пре него што почнете.
Тестирајте нормално заустављање, заустављање са активним захтевом и заустављање у ком тунел први откаже. Поновљива секвенца са роком боља је од брзог гашења које ради само једном.