Algú pregunta si la VPN està activa, i tres persones diferents volen dir tres coses diferents. Un operador vol dir que el perfil Office ha acabat l'autenticació. Un planificador vol dir que l'API privada respondrà. Una revisió de seguretat vol dir que aquesta petició concreta ha sortit pel camí protegit. Un script que cerca a la taula d'encaminament el nom d'una interfície no respon de manera fiable a cap d'elles.

Per tant, la llista de comprovació comença abans que s'executi cap ordre: anomena el subjecte de la comprovació. Tot el que ve després és triar la interfície que realment el pot informar.

Anomena el subjecte abans de l'ordre

Escriu la pregunta com un predicat amb subjecte. «El perfil Office està connectat» és verificable i té un responsable que pot respondre-la. «Aquest treball pot arribar a l'API interna» és un segon predicat amb un mode de fallada diferent. «Aquesta petició utilitza el camí protegit» és un tercer, i és l'únic que parla d'un sol flux i no de tota la màquina.

Barrejar-los produeix automatització que menteix amb confiança. Un treball que comprova l'estat del perfil i després assumeix que l'API està a punt avisarà algú a la capa equivocada, i un treball que fa ping a l'API i ho presenta com a prova d'un túnel no pot distingir una VPN que funciona d'un portàtil que casualment és a la xarxa de l'oficina.

Un perfil: pregunta a qui en té la propietat

Per a un servei natiu del Mac, els controls de connexió de xarxa de scutil informen exactament d'això. Llegeixen l'estat d'una configuració amb nom en lloc d'inferir res d'una interfície.

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

El nom del perfil en aquesta ordre ha de ser el real de la sortida de la llista, no una suposició. És un camí només de lectura per als serveis natius, i no garanteix que un client de tercers hi aparegui; un proveïdor que gestiona el seu propi túnel necessita la seva pròpia interfície d'estat admesa. Comprova la llista abans d'escriure la crida d'estat, perquè un nom que falta falli visiblement en lloc d'emparellar-se en silenci amb res.

Dins d'una app Network Extension, llegeix l'estat dels objectes de gestor i de connexió en lloc del sistema. Compte amb l'abast: carregar configuracions desades només retorna les creades per l'app que fa la crida, així que un resultat buit vol dir «cap de meva», no «cap VPN en aquest Mac». Distingeix una consulta fallida d'un estat desconnectat confirmat, i tracta els estats transitoris com a resultats propis en lloc de reintentar una connexió que ja s'està aixecant.

Un treball: la disponibilitat és un predicat a part

Si la pregunta és si un treball pot continuar, comprova la dependència real del treball després que el propietari de la connexió informi de l'estat previst. Una comprovació de disponibilitat limitada contra el recurs privat és la forma correcta: demostra el que el treball necessita i res més.

Encara no pot demostrar que cada petició de la màquina utilitzi el túnel, i no s'hauria d'informar com si ho pogués fer. Igualment, un recurs que respon per la xarxa ordinària no és evidència d'una VPN, i per això les dues comprovacions es mantenen separades fins i tot quan totes dues tenen èxit.

Quan el treball requereix de debò un camí protegit, aquest requisit necessita el disseny d'aplicació del desplegament: encaminament, exclusions de túnel dividit, una regla de tallafoc o un requisit a nivell d'aplicació. La disponibilitat d'un punt final és un fet sobre un servidor. L'aplicació és un fet sobre la configuració del client, i una cosa no demostra l'altra.

Un flux: inspecciona la ruta triada

Per a un sol flux, mira la destinació, la família d'adreces i el context d'origen amb el diagnòstic d'encaminament que informa del camí seleccionat per a aquesta destinació concreta. Aquesta sortida anomena la interfície i l'adreça d'origen realment utilitzades, cosa que és una afirmació molt més forta que una entrada de ruta per defecte.

Les comprovacions àmplies del navegador responen a una pregunta completament diferent. Un resultat d'IP pública descriu com va semblar una petició des del punt de vista d'un servidor, i no diu res sobre DNS privat, aplicacions excloses o un segon context de xarxa que un altre procés està utilitzant.

Retorna un resultat que el cridador pugui utilitzar

Tria una forma de retorn que encaixi amb el predicat: un estat de perfil amb nom, un veredicte de disponibilitat del recurs o un desconegut explícit amb l'evidència que l'ha produït. Mantén la identitat de la configuració i el motiu de la fallada al costat del veredicte.

Aquest darrer hàbit és el que marca la diferència entre automatització que ajuda i automatització que amaga problemes. «Office VPN: desconnectada, l'últim intent ha fallat a l'autenticació» diu a un operador on mirar. «La VPN està caiguda» convida a reinstal·lar, i «interfície trobada» convida a un fals tot va bé.

La referència de Network Extension sobre carregar configuracions de túnel desades és el lloc on confirmar l'abast de l'app que fa la crida abans de construir-hi res a sobre.

Articles relacionats