Az otthoni VPN kihagyása egy systemd ExecConditionnal
A szándékos kihagyás és a hibás előkészítő parancs két különböző kimenet. Határozza meg a segéd kilépési kódjait, majd tesztelje a hálózatok közötti váltást.
Az otthoni hálózat VPN-jének nincs mit tennie, ha a laptop már ezen a hálózaton van. A csábító rövidítés egy olyan előkészítő parancs, amely nem nullával lép ki; ez meghiúsítja az unitot, és minden irányítópult hibásnak tűnik. A systemd-nek van direktívája pontosan erre a döntéstípusra, és az elválasztja a szándékos kihagyást a valódi hibától. Helyesen csinálni főleg azt jelenti, hogy leírjuk, mit jelent az egyes kilépési kódok.
Miért rossz forma a meghiúsuló előfeltétel
Az ExecStartPre a nem nulla kilépést indítási hibaként kezeli, ami helyes egy a szolgáltatást előkészítő parancs esetében. Feltételként használva egy szakpolitikai döntés megkülönböztethetetlenné válik egy hibás függőségtől. Az ExecCondition azért létezik, hogy az unit megtagadhassa az indítást anélkül, hogy meghiúsultként jelölnék meg.
Ez a különbség hajnali háromkor számít, amikor senki sem akar egy piros unitot triázsolni, amely a tervezés szerint viselkedett. A meghiúsult unit elrejti a valódi hibákat a szándékosak között.
Először írja meg a kilépési kódok szerződését
Írja meg a szerződést a szkript előtt. A nulla kilépés azt jelenti, hogy folytatjuk, az egy kilépés azt, hogy kihagyjuk a fennmaradó indítási parancsokat, a 255 kilépés pedig azt, hogy maga a feltétel nem tudott lefutni. A kettő és 254 közötti kódok általában szintén kihagyást jelentenek, amit könnyű elfelejteni, amikor a segéd véletlenszerű hibakódot ad vissza. Az alábbi drop-in a segédet a valódi unitnévhez csatolja.
[Service]
ExecCondition=/usr/local/libexec/should-start-home-vpnAz alapértelmezett szemantika feltételezése előtt ellenőrizze az effektív unitot örökölt SuccessExitStatus vagy stop-post beállításokra. Ezután szándékosan tesztelje mindhárom kimenetet.
A hálózati utalás nem a hely bizonyítéka
Egy elérhető routercím vagy egy ismert MAC utalhat a helyes hálózatra, és egyik sem bizonyítja azt. Egy másik hálózat újrahasználhatja ugyanazt a címet, az ARP-adatok elavultak lehetnek, és az azonosítók utánozhatók. Kezelje a próbát a szakpolitikával összhangban lévő optimalizálásként, nem hitelesítési eredményként.
Döntse el előre, mit jelent a bizonytalanság. A VPN indítása bizonytalanság esetén biztonságos egy olyan kliens számára, amely egyszerűen nem tudna csatlakozni; a kihagyása bizonytalanság esetén nem az. Tegye korlátossá a próbát, és az aktív interfészt olvassa, ne a lista első elemét feltételezze. A beragadó próba rosszabb, mint az, amely nemmel válaszol, mert az unit vár rá.
Jegyezze fel ezeket a feltevéseket az unit fájlja mellé, hogy a következő ember tudja, mit hisz a segéd. Egy megjegyzés a szkript tetején a legolcsóbb hely ezek tárolására.
Kezelje a hálózatok közötti váltást
A feltétel a szolgáltatás indításakor fut le, és később nem értékelődik újra. Egy kihagyott unit kihagyott marad, miután a laptop átköltözik egy kávézóba, és egy futó alagút állva marad, miután a laptop hazaér. Kapcsolja össze a hálózatváltás életciklusát az indítási és leállítási döntéssel egy külön mechanizmuson keresztül.
systemctl cat home-vpn.serviceTeszteljen négy esetet: indítás otthon, indítás távol, egy próba, amely nem tud lefutni, és hálózatok közötti váltás, miközben az unit aktív. Tartsa láthatóan a kihagyás okát a naplóban, hogy egy szándékos döntés soha ne tűnjön hitelesítési hibának. A szolgáltatási hivatkozás dokumentálja a kilépés szemantikáját és a minimális verziót.