Någon frågar om VPN:en är uppe, och tre olika personer menar tre olika saker med det. En operatör menar att Office-profilen har slutfört autentiseringen. En schemaläggare menar att det privata API:et kommer att svara. En säkerhetsgranskning menar att just den här begäran gick ut via den skyddade vägen. Ett skript som grep-ar routtabellen efter ett gränssnittsnamn svarar inte tillförlitligt på någon av dem.

Så checklistan börjar innan något kommando körs: namnge subjektet för kontrollen. Allt efteråt handlar om att välja det gränssnitt som faktiskt kan rapportera det.

Namnge subjektet före kommandot

Skriv frågan som ett predikat med ett subjekt. «Är Office-profilen ansluten» är testbart och har en ägare som kan svara. «Kan det här jobbet nå det interna API:et» är ett andra predikat med ett annat felmönster. «Använder den här begäran den skyddade vägen» är ett tredje, och det är det enda som handlar om ett enda flöde och inte om hela maskinen.

Att blanda dem ger automatisering som ljuger självsäkert. Ett jobb som kontrollerar profiltillståndet och sedan antar att API:et är klart larmar någon på fel lager, och ett jobb som pingar API:et och kallar det bevis på en tunnel kan inte skilja en fungerande VPN från en bärbar dator som råkar vara på kontorsnätet.

En profil: fråga det som äger den

För en inbyggd Mac-tjänst rapporterar nätverksanslutningskontrollerna i scutil exakt detta. De läser tillståndet för en namngiven konfiguration i stället för att dra slutsatser från ett gränssnitt.

scutil --nc list
scutil --nc status "Office VPN"

Profilnamnet i det kommandot måste vara det riktiga från listutskriften, inte en gissning. Detta är en skrivskyddad väg för inbyggda tjänster, och det är ingen garanti för att en tredjepartsklient ens dyker upp där; en leverantör som hanterar sin egen tunnel behöver sitt eget stödda statusgränssnitt. Kontrollera listan innan du skriver statusanropet, så att ett saknat namn misslyckas synligt i stället för att tyst matcha ingenting.

Läs statusen inuti en Network Extension-app från hanterar- och anslutningsobjekten i stället för från systemet. Var försiktig med omfånget här: inläsning av sparade konfigurationer returnerar bara dem som den anropande appen har skapat, så ett tomt resultat betyder «ingen av mina», inte «ingen VPN på den här Macen». Skilj en misslyckad fråga från ett bekräftat frånkopplat tillstånd, och behandla övergångstillstånden som egna utfall i stället för att försöka igen med en anslutning som redan är på väg upp.

Ett jobb: beredskap är ett eget predikat

Om frågan är om ett jobb kan fortsätta, testa jobbets faktiska beroende efter att anslutningens ägare har rapporterat det avsedda tillståndet. En avgränsad beredskapskontroll mot den privata resursen är rätt form: den bevisar vad jobbet behöver och inget mer.

Den kan fortfarande inte bevisa att varje begäran på maskinen använder tunneln, och den bör inte rapporteras som om den kunde. På samma sätt är en resurs som svarar över det vanliga nätet inte bevis på en VPN, och därför hålls de två kontrollerna åtskilda även när båda lyckas.

När jobbet verkligen kräver en skyddad väg behöver det kravet utrullningens egen verkställighetsdesign: routning, split-tunnel-undantag, en brandväggsregel eller ett krav på applikationsnivå. Tillgängligheten för en slutpunkt är ett faktum om en server. Verkställighet är ett faktum om klientens konfiguration, och det ena bevisar inte det andra.

Ett flöde: granska den valda vägen

För ett enskilt flöde, titta på målet, adressfamiljen och källkontexten med den routningsdiagnostik som rapporterar den valda vägen för just det målet. Den utskriften namnger gränssnittet och källadressen som faktiskt användes, vilket är ett mycket starkare påstående än en standardrutt.

Breda webbläsarkontroller svarar på en helt annan fråga. Ett resultat för offentlig IP beskriver hur en begäran såg ut från en servers synvinkel, och det säger ingenting om privat DNS, uteslutna program eller en andra nätverkskontext som en annan process använder.

Returnera ett resultat som anroparen kan använda

Välj en returform som passar predikatet: ett namngivet profiltillstånd, en bedömning av resursens beredskap eller ett uttryckligen okänt med bevisen som skapade det. Behåll konfigurationens identitet och felorsaken bredvid bedömningen.

Just den sista vanan gör skillnaden mellan automatisering som hjälper och automatisering som döljer problem. «Office VPN: frånkopplad, senaste försöket misslyckades i autentiseringen» berättar för en operatör var den ska titta. «VPN:en är nere» bjuder in till en ominstallation, och «gränssnitt hittat» bjuder in till en falsk allt är bra.

Network Extension-referensen om inläsning av sparade tunnelkonfigurationer är platsen där du bekräftar omfånget för den anropande appen innan du bygger något på det.

Relaterade artiklar