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-vpn

Az 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.service

Teszteljen 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.

Kapcsolódó cikkek