iOS lässt eine App kein eigenes VPN erfinden. Es bietet zwei Türen, beide in Apples Network-Extension-Framework: den ins System eingebauten VPN-Client, der IKEv2 und IPSec spricht, und Packet-Tunnel-Provider, Erweiterungen, die eine App mitbringt, um andere Protokolle zu transportieren. SSHive nutzt beide. Ein IKEv2- oder IPSec-Profil wird dem Systemclient übergeben, mit seinem Passwort als Schlüsselbund-Referenz, die iOS beim Verbinden liest. Ein OpenVPN-Profil läuft in der eigenen Tunnel-Erweiterung von SSHive, einem separaten Prozess, den iOS startet und verwaltet.
Deshalb ist das VPN ein echtes: iOS leitet den Verkehr auf Systemebene hinein, es erscheint in den VPN-Einstellungen von iOS, und es läuft unabhängig vom Fenster von SSHive. Deshalb kümmert sich SSHive auch darum, es zu trennen. Ein für eine Sitzung aufgebautes VPN wird geschlossen, wenn diese Sitzung endet, und verlassen Sie die App während einer Remotedesktop-Sitzung, die ein VPN aufgebaut hat, beendet SSHive beides, damit kein Tunnel unbemerkt verbunden bleibt.
Der Ablauf in der Bereitschaft: Der Alarm kommt, Sie öffnen das gespeicherte SSH-Profil. SSHive prüft, ob der Server im aktuellen Netz antwortet; von zu Hause aus tut er das nicht, also kommt das VPN hoch, dann öffnet sich die SSH-Sitzung durch es hindurch. Sie gehen dem Problem nach, schließen die Sitzung, und das VPN fällt mit ihr.
Zu den Geheimnissen: Das VPN-Passwort und der gemeinsame IPSec-Schlüssel liegen im iOS-Schlüsselbund, wo das System sie nutzen kann, ohne sie jemandem zu zeigen. Die .ovpn-Datei selbst liegt in den Daten der App auf dem Gerät. Auf dem iPhone wird kein .mobileconfig-Konfigurationsprofil installiert.