Stav VPN na Macu: zkontrolujte profil, prostředek nebo tok
Jedna logická hodnota nemůže odpovědět na tři různé otázky. Nejprve zvolte subjekt, potom použijte rozhraní, které jej skutečně hlásí, a uchovejte důvody selhání.
Někdo se ptá, zda VPN běží, a tři různí lidé tím myslí tři různé věci. Operátor tím myslí, že profil Office dokončil ověřování. Plánovač tím myslí, že soukromé API odpoví. Bezpečnostní revize tím myslí, že tento konkrétní požadavek vyšel chráněnou cestou. Skript, který grepem hledá v tabulce tras název rozhraní, spolehlivě neodpovídá na žádnou z nich.
Kontrolní seznam proto začíná dřív, než se spustí jakýkoli příkaz: pojmenujte subjekt kontroly. Všechno po tom je volba rozhraní, které to skutečně umí ohlásit.
Pojmenujte subjekt ještě před příkazem
Napište otázku jako predikát se subjektem. „Je profil Office připojený“ je testovatelné a má vlastníka, který na to umí odpovědět. „Dokáže tato úloha dosáhnout interního API“ je druhý predikát s jiným režimem selhání. „Používá tento požadavek chráněnou cestu“ je třetí a jediný, který mluví o jednom toku, nikoli o celém stroji.
Jejich míchání vytváří automatizaci, která sebevědomě lže. Úloha, která zkontroluje stav profilu a pak předpokládá, že API je připravené, bude volat někoho na špatné vrstvě, a úloha, která pingne API a vydá to za důkaz tunelu, nerozezná fungující VPN od notebooku, který náhodou visí v kancelářské síti.
Jeden profil: ptejte se toho, kdo ho vlastní
Pro nativní službu Macu přesně tohle hlásí ovládací prvky síťového připojení v scutil. Čtou stav pojmenované konfigurace, místo aby něco odvozovaly z rozhraní.
scutil --nc list
scutil --nc status "Office VPN"
Název profilu v tomto příkazu musí být skutečný z výstupu seznamu, ne odhad. Je to cesta jen pro čtení pro nativní služby a není zárukou, že se tam klient třetí strany vůbec objeví; poskytovatel, který si spravuje vlastní tunel, potřebuje vlastní podporované stavové rozhraní. Zkontrolujte seznam, než napíšete stavové volání, aby chybějící název viditelně selhal, místo aby tiše nic nenašel.
Uvnitř aplikace Network Extension čtěte stav z objektů správce a připojení, ne ze systému. Pozor na rozsah: načtení uložených konfigurací vrací jen ty, které vytvořila volající aplikace, takže prázdný výsledek znamená „žádná moje“, nikoli „na tomto Macu není žádná VPN“. Rozlišujte neúspěšný dotaz od potvrzeného odpojeného stavu a přechodové stavy berte jako vlastní výsledky, místo abyste znovu zkoušeli připojení, které se už navazuje.
Jedna úloha: připravenost je samostatný predikát
Pokud je otázkou, zda úloha může pokračovat, otestujte skutečnou závislost úlohy poté, co vlastník připojení ohlásí zamýšlený stav. Omezená kontrola připravenosti vůči soukromému prostředku je správný tvar: dokazuje, co úloha potřebuje, a nic víc.
Stále nemůže dokázat, že každý požadavek na stroji používá tunel, a neměla by být hlášena, jako by to dokázala. Stejně tak prostředek, který odpovídá přes běžnou síť, není důkazem VPN, a proto obě kontroly zůstávají oddělené, i když obě uspějí.
Když úloha opravdu vyžaduje chráněnou cestu, tento požadavek potřebuje vlastní design prosazení v nasazení: směrování, vyloučení rozděleného tunelu, pravidlo firewallu nebo požadavek na úrovni aplikace. Dostupnost koncového bodu je fakt o serveru. Prosazení je fakt o konfiguraci klienta a jedno nedokazuje druhé.
Jeden tok: prohlédněte zvolenou trasu
U jediného toku se dívejte na cíl, rodinu adres a kontext zdroje pomocí diagnostiky směrování, která hlásí zvolenou cestu pro tento konkrétní cíl. Tento výstup pojmenovává skutečně použitá rozhraní a zdrojovou adresu, což je mnohem silnější tvrzení než záznam výchozí trasy.
Široké kontroly v prohlížeči odpovídají na úplně jinou otázku. Výsledek veřejné IP popisuje, jak jeden požadavek vypadal z pohledu jednoho serveru, a neříká nic o soukromém DNS, vyloučených aplikacích ani o druhém síťovém kontextu, který používá jiný proces.
Vraťte výsledek, který volající použije
Zvolte tvar návratu, který odpovídá predikátu: pojmenovaný stav profilu, verdikt připravenosti prostředku nebo výslovné neznámo s důkazy, které k němu vedly. U verdiktu ponechte identitu konfigurace a důvod selhání.
Právě ten poslední zvyk dělá rozdíl mezi automatizací, která pomáhá, a automatizací, která schovává problémy. „Office VPN: odpojeno, poslední pokus selhal při ověřování“ řekne operátorovi, kam se podívat. „VPN je dole“ zve k reinstalaci a „rozhraní nalezeno“ zve k falešnému vše je v pořádku.
Referenční dokumentace Network Extension k načítání uložených konfigurací tunelu je místem, kde si potvrdíte rozsah volající aplikace, než na tom něco postavíte.