El VPN de Mac se reconecta solo justo después de pulsar Desconectar
Un monitor que trata cada estado desconectado como una avería peleará contra el botón Desconectar. Separe la intención del estado observado y, después, limite los reintentos.
Pulsar Desconectar funciona, y diez segundos después el túnel vuelve de todos modos. Ese bucle rara vez es el cliente VPN comportándose mal; es un script de recuperación que solo hacía una pregunta, «¿está caído?», y la respondía conectando. Cuando separa la pregunta que respondió el usuario de la pregunta que informa el sistema, la corrección pasa a ser una pequeña cantidad de estado en lugar de una espera más larga.
Dos preguntas, no una
¿Debería este perfil estar conectado ahora mismo, y qué informa el sistema en este momento? Son preguntas distintas con dueños distintos, y una política de recuperación necesita ambas antes de actuar. La intención es algo que su herramienta decide y recuerda. El estado observado es algo que le dice la plataforma.
| Intent | What you observe | What to do |
|---|---|---|
| Wanted | Dropped unexpectedly | Allow one supported recovery attempt |
| Paused by the user | Disconnected | Do nothing until intent changes |
| Wanted | Already connecting | Wait instead of starting a rival attempt |
| Wanted | Authentication needs a person | Prompt, then stop replaying credentials |
Lea las filas como una política y no como una lista de casos. La segunda fila es la que omiten la mayoría de los scripts, y es la única fila que distingue un monitor de una máquina que se empeña en tener razón.
El estado observado no es una preferencia
El modelo de estado Network Extension de Apple informa de los estados connecting, connected, disconnecting, disconnected y recovery. Los cinco describen la conexión. Ninguno dice «el usuario pidió que este perfil siguiera en pausa», porque eso no es en absoluto un estado de conexión. Los clientes que no están construidos sobre ese marco exponen sus propios controles y llamadas de estado compatibles, y trazan la misma línea con su propio vocabulario.
La consecuencia es que un estado desconectado nunca puede interpretarse por sí solo. Significa una de al menos tres cosas: el túnel se cayó, el usuario lo detuvo o el sistema está entre intentos. Solo su propio registro de intención puede distinguirlas. Anote ese registro, consérvelo entre reinicios si tiene que sobrevivir a un reinicio, y actualícelo en el momento en que el usuario actúa en lugar de deducirlo después de una línea de registro.
scutil --nc list
scutil --nc status "Office VPN"
Quién más puede iniciar este perfil
Una pausa prometida por su ayudante es tan fuerte como los demás dueños del mismo perfil. Una regla On Demand, una configuración gestionada o un segundo cliente pueden solicitar una conexión, y su ayudante parecerá roto mientras se comporta exactamente como está escrito.
Encuentre todos los mecanismos que pueden iniciar el perfil antes de prometer que respetará una pausa, y anote cuál gana. Cuando un servicio gestionado retiene deliberadamente una opción de pausa personal, eso es una decisión del administrador sobre la política, no un hueco que deba rellenar un script peleando contra la gestión.
Haga aburridos los reintentos
Limite el número de intentos y haga que cada uno responda a algo que cambió: la red volvió, la puerta de enlace respondió, el aviso de credenciales se completó. Una puerta de enlace no disponible, una identidad caducada y un segundo factor rechazado necesitan tres respuestas distintas, y un bucle apretado da a las tres la misma.
Observe qué produce realmente un reintento rápido en pantalla. Los diálogos repetidos que el usuario descarta son peores que un único mensaje de error claro, y enseñan a la gente a hacer clic en los avisos sin leerlos.
La pausa y la política de tráfico son promesas separadas
Un túnel pausado por el usuario a menudo deja el tráfico bloqueado a propósito, que es justo el objetivo de una política al estilo kill switch. Eso significa que Pausa debería prometer exactamente una cosa: la recuperación se detiene. No debería cambiar en silencio lo que la red permite.
Decida el comportamiento del tráfico por separado, documéntelo junto al control Pausa y manténgalo coherente tanto si el túnel está en pausa, ha fallado o está ausente. De lo contrario, el usuario aprende que pulsar Desconectar hace algo imprevisible, y el siguiente ticket de soporte trata de una red que «a veces deja de funcionar» sin motivo visible.