Premar Desconectar funciona, e dez segundos despois o túnel volve de todos os xeitos. Ese bucle raramente é o cliente VPN portándose mal; é un script de recuperación que só facía unha pregunta, «está caído?», e respondíaa conectando. Cando separa a pregunta que respondeu o usuario da pregunta que informa o sistema, a corrección pasa a ser unha pequena cantidade de estado en lugar dunha espera máis longa.

Dúas preguntas, non unha

Debería este perfil estar conectado agora mesmo, e que informa o sistema neste momento? Son preguntas distintas con donos distintos, e unha política de recuperación necesita ambas antes de actuar. A intención é algo que a súa ferramenta decide e lembra. O estado observado é algo que lle di a plataforma.

IntentWhat you observeWhat to do
WantedDropped unexpectedlyAllow one supported recovery attempt
Paused by the userDisconnectedDo nothing until intent changes
WantedAlready connectingWait instead of starting a rival attempt
WantedAuthentication needs a personPrompt, then stop replaying credentials

Lea as filas como unha política e non como unha lista de casos. A segunda fila é a que omiten a maioría dos scripts, e é a única fila que distingue un monitor dunha máquina que se empeña en ter razón.

O estado observado non é unha preferencia

O modelo de estado Network Extension de Apple informa dos estados connecting, connected, disconnecting, disconnected e recovery. Os cinco describen a conexión. Ningún di «o usuario pediu que este perfil seguise en pausa», porque iso non é en absoluto un estado de conexión. Os clientes que non están construídos sobre ese marco expoñen os seus propios controis e chamadas de estado compatibles, e trazan a mesma liña co seu propio vocabulario.

A consecuencia é que un estado desconectado nunca pode interpretarse por si só. Significa unha de polo menos tres cousas: o túnel caeu, o usuario detívoo ou o sistema está entre intentos. Só o seu propio rexistro de intención pode distinguilas. Anote ese rexistro, consérveo entre reinicios se ten que sobrevivir a un reinicio, e actualíceo no momento en que o usuario actúa en lugar de deducilo despois dunha liña de rexistro.

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

Quen máis pode iniciar este perfil

Unha pausa prometida polo seu axudante é tan forte como os demais donos do mesmo perfil. Unha regra On Demand, unha configuración xestionada ou un segundo cliente poden solicitar unha conexión, e o seu axudante parecerá roto mentres se comporta exactamente como está escrito.

Atope todos os mecanismos que poden iniciar o perfil antes de prometer que respectará unha pausa, e anote cal gaña. Cando un servizo xestionado retén deliberadamente unha opción de pausa persoal, iso é unha decisión do administrador sobre a política, non un oco que deba encher un script loitando contra a xestión.

Faga aburridos os reintentos

Limite o número de intentos e faga que cada un responda a algo que cambiou: a rede volveu, a pasarela respondeu, o aviso de credenciais completouse. Unha pasarela non dispoñible, unha identidade caducada e un segundo factor rexeitado necesitan tres respostas distintas, e un bucle apertado dá ás tres a mesma.

Observe que produce realmente un reintento rápido na pantalla. Os diálogos repetidos que o usuario descarta son peores que unha única mensaxe de erro clara, e ensinan a xente a facer clic nos avisos sen lelos.

A pausa e a política de tráfico son promesas separadas

Un túnel pausado polo usuario a miúdo deixa o tráfico bloqueado a propósito, que é xusto o obxectivo dunha política ao estilo kill switch. Iso significa que Pausa debería prometer exactamente unha cousa: a recuperación detense. Non debería cambiar en silencio o que a rede permite.

Decida o comportamento do tráfico por separado, documénteo xunto ao control Pausa e mantéñao coherente tanto se o túnel está en pausa, fallou ou está ausente. Se non, o usuario aprende que premer Desconectar fai algo imprevisible, e o seguinte tícket de asistencia trata dunha rede que «ás veces deixa de funcionar» sen motivo visible.

Artigos relacionados