Estado da VPN no Mac: comproba o perfil, o recurso ou o fluxo
Un só valor booleano non pode responder a tres preguntas distintas. Escolle primeiro o suxeito, despois usa a interface que realmente o informa e conserva os motivos do fallo.
Alguén pregunta se a VPN está activa, e tres persoas distintas queren dicir tres cousas distintas. Un operador quere dicir que o perfil de Office rematou a autenticación. Un planificador quere dicir que a API privada responderá. Unha revisión de seguridade quere dicir que esta petición concreta saíu pola ruta protexida. Un script que busca con grep na táboa de rutas o nome dunha interface non responde de forma fiable a ningunha delas.
Así que a lista de comprobación comeza antes de que se execute calquera comando: nomea o suxeito da comprobación. Todo o que vén despois é escoller a interface que realmente o pode informar.
Nomea o suxeito antes do comando
Escribe a pregunta como un predicado con suxeito. «O perfil de Office está conectado» é verificable e ten un responsable que pode respondela. «Este traballo pode alcanzar a API interna» é un segundo predicado con outro modo de fallo. «Esta petición usa a ruta protexida» é un terceiro, e é o único que fala dun só fluxo e non de toda a máquina.
Mesturalos produce automatización que mente con confianza. Un traballo que comproba o estado do perfil e logo dá por feito que a API está lista avisará a alguén na capa equivocada, e un traballo que fai ping á API e o presenta como proba dun túnel non distingue unha VPN que funciona dun portátil que resulta estar na rede da oficina.
Un perfil: pregunta a quen o posúe
Para un servizo nativo de Mac, os controis de conexión de rede de scutil informan exactamente disto. Len o estado dunha configuración con nome en lugar de inferir algo dunha interface.
scutil --nc list
scutil --nc status "Office VPN"
O nome do perfil nese comando ten que ser o real da saída da lista, non unha suposición. É unha ruta de só lectura para servizos nativos, e non garante que un cliente de terceiros apareza aí; un provedor que xestiona o seu propio túnel necesita a súa propia interface de estado compatible. Comproba a lista antes de escribir a chamada de estado, para que un nome ausente falle de forma visible en vez de coincidir en silencio con nada.
Dentro dunha app Network Extension, le o estado dos obxectos de xestor e de conexión en lugar do sistema. Coidado co alcance: cargar configuracións gardadas só devolve as creadas pola app que chama, así que un resultado baleiro significa «ningunha miña», non «ningunha VPN neste Mac». Distingue unha consulta fallida dun estado desconectado confirmado, e trata os estados transitorios como resultados propios en vez de reintentar unha conexión que xa está a levantarse.
Un traballo: a dispoñibilidade é un predicado aparte
Se a pregunta é se un traballo pode continuar, proba a dependencia real do traballo despois de que o propietario da conexión informe do estado previsto. Unha comprobación de dispoñibilidade limitada contra o recurso privado é a forma correcta: demostra o que o traballo necesita e nada máis.
Segue sen poder demostrar que todas as peticións da máquina usen o túnel, e non debería informarse como se puidese. Do mesmo xeito, un recurso que responde pola rede ordinaria non é proba dunha VPN, e por iso as dúas comprobacións seguen separadas mesmo cando ambas teñen éxito.
Cando o traballo require de verdade unha ruta protexida, ese requisito necesita o deseño de aplicación do despregamento: encaminamento, exclusións de túnel dividido, unha regra de cortafuegos ou un requisito a nivel de aplicación. A dispoñibilidade dun extremo é un feito sobre un servidor. A aplicación é un feito sobre a configuración do cliente, e unha cousa non demostra a outra.
Un fluxo: inspecciona a ruta escollida
Para un só fluxo, mira o destino, a familia de enderezos e o contexto de orixe co diagnóstico de encaminamento que informa da ruta seleccionada para ese destino concreto. Ese resultado nomea a interface e o enderezo de orixe realmente usados, o que é unha afirmación moito máis forte ca unha entrada de ruta por defecto.
As comprobacións amplas do navegador responden a unha pregunta completamente distinta. Un resultado de IP pública describe como se viu unha petición desde o punto de vista dun servidor, e non di nada sobre DNS privado, aplicacións excluídas ou un segundo contexto de rede que outro proceso está a usar.
Devolve un resultado que o chamador poida usar
Escolle unha forma de retorno que encaixe co predicado: un estado de perfil con nome, un veredicto de dispoñibilidade do recurso ou un descoñecido explícito coa evidencia que o produciu. Mantén a identidade da configuración e o motivo do fallo xunto ao veredicto.
Ese último hábito é o que marca a diferenza entre automatización que axuda e automatización que agocha problemas. «Office VPN: desconectada, o último intento fallou na autenticación» dille a un operador onde mirar. «A VPN está caída» invita a reinstalar, e «interface atopada» invita a un falso todo vai ben.
A referencia de Network Extension sobre cargar configuracións de túnel gardadas é o lugar onde confirmar o alcance da app que chama antes de construír nada enriba.