Mac-VPN verbindet sich direkt nach dem Klick auf „Trennen“ erneut
Eine Überwachung, die jeden getrennten Zustand als Fehler wertet, kämpft gegen die Schaltfläche „Trennen“. Trennen Sie Absicht und beobachteten Zustand, und begrenzen Sie dann die Wiederholungen.
Ein Klick auf „Trennen“ funktioniert, und zehn Sekunden später ist der Tunnel trotzdem wieder da. Diese Schleife ist selten ein fehlerhaftes Verhalten des VPN-Clients; sie ist ein Wiederherstellungsskript, das immer nur eine Frage stellte, „ist er unten?“, und sie durch Verbinden beantwortete. Sobald Sie die Frage, die der Benutzer beantwortet hat, von der Frage trennen, die das System meldet, wird die Korrektur zu einem kleinen Stück Zustand statt zu einem längeren Warten.
Zwei Fragen, nicht eine
Soll dieses Profil gerade verbunden sein, und was meldet das System aktuell? Das sind verschiedene Fragen mit verschiedenen Eigentümern, und eine Wiederherstellungsrichtlinie braucht beide, bevor sie handelt. Absicht ist etwas, das Ihr Werkzeug entscheidet und sich merkt. Beobachteter Zustand ist etwas, das die Plattform Ihnen mitteilt.
| 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 |
Lesen Sie die Zeilen als Richtlinie und nicht als Liste von Fällen. Die zweite Zeile ist die, die die meisten Skripte auslassen, und sie ist die einzige Zeile, die eine Überwachung von einer Maschine unterscheidet, die darauf besteht, recht zu haben.
Der beobachtete Status ist keine Präferenz
Apples Statusmodell der Network Extension meldet die Zustände connecting, connected, disconnecting, disconnected und recovery. Alle fünf beschreiben die Verbindung. Keiner davon sagt „der Benutzer wollte, dass dieses Profil pausiert bleibt“, denn das ist überhaupt kein Verbindungszustand. Clients, die nicht auf diesem Framework aufbauen, stellen ihre eigenen unterstützten Steuerelemente und Statusabfragen bereit, und sie ziehen dieselbe Grenze in ihrem eigenen Vokabular.
Die Folge ist, dass ein getrennter Status niemals für sich allein interpretiert werden kann. Er bedeutet eines von mindestens drei Dingen: Der Tunnel ist abgebrochen, der Benutzer hat ihn gestoppt, oder das System ist zwischen zwei Versuchen. Nur Ihre eigene Aufzeichnung der Absicht kann das auseinanderhalten. Schreiben Sie diese Aufzeichnung auf, bewahren Sie sie über Neustarts hinweg auf, wenn sie einen Neustart überleben muss, und aktualisieren Sie sie in dem Moment, in dem der Benutzer handelt, statt sie später aus einer Logzeile abzuleiten.
scutil --nc list
scutil --nc status "Office VPN"
Wer sonst darf dieses Profil starten
Eine Pause, die Ihr Helfer verspricht, ist nur so stark wie die anderen Eigentümer desselben Profils. Eine On-Demand-Regel, eine verwaltete Konfiguration oder ein zweiter Client können alle eine Verbindung anfordern, und Ihr Helfer wirkt defekt, während er sich genau wie beschrieben verhält.
Finden Sie jeden Mechanismus, der das Profil starten kann bevor Sie versprechen, eine Pause zu respektieren, und notieren Sie, welcher gewinnt. Wenn ein verwalteter Dienst eine persönliche Pausenoption bewusst vorenthält, ist das eine Administratorentscheidung über die Richtlinie und keine Lücke, die ein Skript füllen sollte, indem es gegen die Verwaltung ankämpft.
Machen Sie die Wiederholungen langweilig
Begrenzen Sie die Anzahl der Versuche, und machen Sie jeden einzelnen von etwas abhängig, das sich geändert hat: Das Netzwerk kam zurück, das Gateway antwortete, die Anmeldeabfrage wurde abgeschlossen. Ein nicht erreichbares Gateway, eine abgelaufene Identität und ein abgelehnter zweiter Faktor brauchen drei verschiedene Reaktionen, und eine enge Schleife gibt allen dreien dieselbe.
Beobachten Sie, was ein schneller Wiederholungsversuch tatsächlich auf dem Bildschirm erzeugt. Wiederholte Dialoge, die der Benutzer wegklickt, sind schlimmer als eine einzige klare Fehlermeldung, und sie erziehen Menschen dazu, Aufforderungen wegzuklicken, ohne sie zu lesen.
Pause und Verkehrsrichtlinie sind getrennte Versprechen
Ein vom Benutzer pausierter Tunnel blockiert den Verkehr oft absichtlich, und genau das ist der Sinn einer Richtlinie im Kill-Switch-Stil. Das heißt, Pause sollte genau eines versprechen: Die Wiederherstellung hört auf. Sie sollte nicht stillschweigend ändern, was das Netzwerk zulässt.
Entscheiden Sie das Verkehrsverhalten getrennt, dokumentieren Sie es neben dem Pause-Steuerelement, und halten Sie es konsistent, egal ob der Tunnel pausiert, fehlgeschlagen oder nicht vorhanden ist. Sonst lernt der Benutzer, dass ein Klick auf „Trennen“ etwas Unvorhersehbares tut, und das nächste Support-Ticket handelt von einem Netzwerk, das „manchmal aufhört zu funktionieren“, ohne sichtbaren Grund.