Was bewirkt IncludeAllNetworks in einem IKEv2-Profil auf dem Mac?
Der Schlüssel begrenzt Datenverkehr auf den Tunnel, mit benannten Ausnahmen. Er ist keine Standardroute, ignoriert EnforceRoutes, und das Gateway muss weiterleiten, was er zulässt.
In einem nativen IKEv2-Profil ist der interessante Schlüssel kein Kontrollkästchen, sondern IncludeAllNetworks, und er ändert den Umfang dessen, was das System außerhalb des Tunnels senden darf. Setzt man ihn auf 1, behandelt macOS den Tunnel als den Pfad für praktisch den gesamten IP-Datenverkehr, abzüglich einer Reihe von Ausnahmen, die es definiert und die man erweitern kann. Weil er in einem Profilwörterbuch und nicht in einem Menü steht, bedeutet er auch nicht das, was die meisten annehmen, wenn sie den Satz allen Datenverkehr senden lesen.
Was der Schlüssel im Netzwerk-Stack ändert
Ohne ihn verhält sich der Tunnel wie eine Netzwerkschnittstelle mit angehängten Routen. Eine Standardroute über diese Schnittstelle fängt den meisten Datenverkehr ab, und jede spezifischere Route auf einer anderen Schnittstelle gewinnt für ihr eigenes Präfix weiterhin. Das ist normales Routing, und deshalb passiert Split-Tunneling fast zufällig.
Mit aktiviertem Schlüssel ist der Umfang keine Routing-Präferenz mehr, sondern eine Richtlinie darüber, welcher Datenverkehr über etwas anderes als den Tunnel hinaus darf. Das System muss das Netzwerk weiterhin erreichen, um die Verbindung am Leben zu halten, deshalb kommt die Richtlinie mit Ausnahmen, statt so zu tun, als gäbe es sie nicht. Das Aktivieren lässt den Rechner nie ganz ohne funktionierenden Pfad. Man bekommt eine kürzere Liste von Pfaden, als man angenommen hat, und diese Liste ist dokumentiert.
Die praktische Folge ist, dass das Hinzufügen einer Route das Ergebnis nicht mehr erklärt. Wird ein Ziel weiterhin direkt erreicht, lautet die Frage nicht, welche Route gewonnen hat, sondern ob eine Ausnahme es abdeckt.
Die Ausnahmen sind Teil der Einstellung
Apple dokumentiert mehrere Ausschlüsse neben dem Hauptschlüssel, die lokale Netzwerke, Apple-Push-Notification-Datenverkehr, Mobilfunkdienste und Gerätekommunikation abdecken. Jeder hat eigene Plattform- und Versionsbedingungen, sodass dasselbe Profil sich über macOS-Versionen hinweg unterschiedlich verhalten kann.
Einige dieser Ausschlüsse sind inhärent. Datenverkehr, der nötig ist, um Netzwerkzugang aufzubauen und zu halten, einschließlich der Behandlung von Captive Portals, muss erlaubt sein, sonst kann der Rechner am Ende mit nichts verbunden und unfähig sein, das zu beheben.
Dann kommen die bewussten Entscheidungen. Einen Drucker zu Hause zuzulassen ist nicht dieselbe Entscheidung wie ein Präfix einer Arbeitsressource zuzulassen, und beide unterscheiden sich davon, APNs erreichbar zu lassen, damit Benachrichtigungen weiter ankommen. Halten Sie fest, welche Sie aktiviert haben, und zwar im Profil selbst, statt sie später aus einem Fehlerbericht zu entdecken.
Warum es nicht dasselbe ist wie eine Standardroute
Eine Standardroute ist ein Eintrag in der Routing-Tabelle, und Tabellen verlieren. Ein spezifischeres Präfix schlägt sie, eine anwendungsgebundene Verbindung kann sie umgehen, und eine zweite Schnittstelle mit besserer Metrik kann übernehmen, ohne dass jemand die VPN-Konfiguration anfasst.
Apples Routing-Leitfaden macht den Unterschied ausdrücklich: gewöhnliche Standardrouten können durch spezifischere Routen überschrieben werden, während die Einstellung für den weiteren Umfang definiert, welchen Datenverkehr der Tunnel tragen muss und was davon ausgenommen wird. Das eine ist eine Präferenz, das andere näher an einer Regel.
Dieser Unterschied ändert auch, wie Sie ein Leck diagnostizieren. Mit einer Standardroute prüfen Sie Routen und Metriken. Mit dem Umfangsschlüssel prüfen Sie die Profilrevision, die installierten Ausnahmen und das versionsspezifische Verhalten, weil die Routing-Tabelle einer früher getroffenen Entscheidung nachgelagert ist.
EnforceRoutes ist ein anderer Regler
EnforceRoutes klingt wie die strenge Version derselben Idee, und Leute stapeln beide in der Annahme, mehr Schlüssel bedeuteten mehr Abdeckung. Apple dokumentiert, dass er ignoriert wird, wenn IncludeAllNetworks aktiviert ist, also bringt der zweite Schlüssel in dieser Kombination nichts.
Behandeln Sie ihn als Alternative für Konfigurationen, die den weiteren Umfang nicht nutzen, nicht als Verstärkung. Wenn Sie nicht erklären können, was jeder Schlüssel für sich tut, macht das Hinzufügen beider das Profil nur schwerer zu prüfen.
Worauf sich Gateway und Profileigentümer einigen müssen
Eine Clienteinstellung kann einen Server nicht dazu bringen, Datenverkehr weiterzuleiten, für den er nie konfiguriert wurde. Das Gateway muss die Sitzung annehmen, Adressen vergeben, einen Rückweg für die Präfixe bereitstellen, die Sie erreichen wollen, und DNS in der von Ihnen gewählten Anordnung bedienen. Routet es nur ein Präfix, erzeugt der breite Clientumfang Datenverkehr, der ankommt und stirbt. Eine Anfrage an ein Ziel außerhalb der Gateway-Routen beweist das in einer Minute.
Ein app-eigener Tunnel ist wieder ein eigener Fall. Der Anbieter muss das unterstützte Verhalten implementieren oder offenlegen; ein zweites natives IKEv2-Profil zu installieren ändert einen Tunnel nicht, den bereits eine andere App verwaltet, und ein IKEv2-Schlüssel ist keine OpenVPN-Direktive, die ein anderer Client lesen wird.
Für die aktuelle Schlüsselliste und Versionsbedingungen lesen Sie Apples IKEv2-Payload-Referenz statt ein Profil, das jemand vor Jahren kopiert hat.
Akzeptieren Sie eine Profilrevision als Ganzes
Bevor Sie einen remote verwalteten Mac ändern, notieren Sie die Ziel-macOS-Versionen, den beabsichtigten Internet-Ausgang, die privaten Präfixe, die erreichbar bleiben müssen, und jeden Ausschluss, den Sie aktivieren. Bewahren Sie dann einen Wiederherstellungspfad, der nicht von dem Tunnel abhängt, den Sie gerade ändern wollen.
Testen Sie frische öffentliche Anfragen, private Anfragen, beide Adressfamilien und die Namensauflösung, und prüfen Sie die installierte Revision statt der Konstruktionsdatei. Geht etwas weiterhin direkt, entscheiden Sie, ob es eine dokumentierte Ausnahme, ein anderer Verbindungskontext oder ein tatsächlicher Konfigurationsfehler ist, und ändern Sie eines dieser drei, statt unbeteiligte Schlüssel zu erweitern.