Vad gör IncludeAllNetworks i en IKEv2-profil på Mac?
Nyckeln begränsar trafiken till tunneln med namngivna undantag. Den är ingen standardrutt, den ignorerar EnforceRoutes, och gatewayen måste vidarebefordra det den släpper igenom.
I en inbyggd IKEv2-profil är den intressanta nyckeln inte en kryssruta, den är IncludeAllNetworks, och det den ändrar är omfattningen av vad systemet får skicka utanför tunneln. Sätt den till 1 och macOS behandlar tunneln som vägen för i praktiken all IP-trafik, minus en uppsättning undantag som den definierar och du kan utöka. Eftersom den ligger i en profildiktion och inte i en meny betyder den inte heller det de flesta antar när de läser frasen skicka all trafik.
Vad nyckeln ändrar inne i nätverksstacken
Utan den beter sig tunneln som ett nätverksgränssnitt med rutter kopplade till sig. En standardrutt genom det gränssnittet fångar det mesta av trafiken, och en mer specifik rutt på ett annat gränssnitt vinner fortfarande för sitt eget prefix. Det är normal routning, och det är därför delad tunnling sker nästan av misstag.
Med nyckeln aktiverad är omfattningen inte längre en routningspreferens utan en policy för vilken trafik som får lämna genom något annat än tunneln. Systemet behöver fortfarande nå nätverket för att hålla anslutningen vid liv, så policyn levereras med undantag i stället för att låtsas att de inte finns. Att aktivera den lämnar aldrig maskinen helt utan fungerande väg. Det du får är en kortare lista över vägar än du antog, och den listan är dokumenterad.
Den praktiska konsekvensen är att det att lägga till en rutt inte längre förklarar utfallet. Om ett mål fortfarande nås direkt är frågan inte vilken rutt som vann utan om ett undantag täcker det.
Undantagen är en del av inställningen
Apple dokumenterar flera undantag vid sidan av huvudnyckeln, som täcker lokala nätverk, trafik från Apple Push Notification, mobiltjänster och enhetskommunikation. Var och en har sina egna plattforms- och versionsvillkor, så samma profil kan bete sig olika mellan macOS-versioner.
Några av dessa undantag är inneboende. Trafik som behövs för att upprätta och upprätthålla nätverksåtkomst, inklusive hantering av captive portal, måste tillåtas, annars kan maskinen hamna utan kontakt med något och utan möjlighet att rätta det.
Sedan kommer de medvetna valen. Att tillåta en hemskrivare är inte samma beslut som att tillåta ett prefix för en arbetsresurs, och båda skiljer sig från att lämna APNs nåbart så att aviseringar fortsätter komma in. Skriv ned vilka du har aktiverat, i själva profilen, i stället för att upptäcka dem senare från en felrapport.
Varför det inte är samma sak som en standardrutt
En standardrutt är en post i routingtabellen, och routingtabeller förlorar. Ett mer specifikt prefix slår den, en anslutning knuten till ett program kan kringgå den, och ett andra gränssnitt med bättre metrik kan ta över utan att någon rör VPN-konfigurationen.
Apples vägledning för routning gör skillnaden tydlig: vanliga standardrutter kan åsidosättas av mer specifika rutter, medan den bredare omfångsinställningen definierar vilken trafik tunneln måste bära och vad som skärs bort från den. Det ena är en preferens, det andra ligger närmare en regel.
Den skillnaden förändrar också hur du diagnostiserar en läcka. Med en standardrutt granskar du rutter och metrik. Med omfångsnyckeln granskar du profilrevisionen, de installerade undantagen och beteendet per version, eftersom routingtabellen kommer efter ett beslut som fattades tidigare.
EnforceRoutes är en annan ratt
EnforceRoutes låter som den strikta versionen av samma idé, och folk staplar de två i tron att fler nycklar ger mer täckning. Apple dokumenterar att den ignoreras när IncludeAllNetworks är aktiverad, så den andra nyckeln ger ingenting i den kombinationen.
Behandla den som ett alternativ för konfigurationer som inte använder det bredare omfånget, inte som förstärkning. Om du inte kan förklara vad varje nyckel gör på egen hand gör det bara profilen svårare att granska att lägga till båda.
Vad gatewayen och profilens ägare måste komma överens om
En klientinställning kan inte få en server att vidarebefordra trafik som den aldrig konfigurerats för. Gatewayen måste acceptera sessionen, dela ut adresser, tillhandahålla en returväg för de prefix du vill nå och betjäna DNS i den ordning du valt. Om den bara routar ett prefix producerar det breda klientomfånget trafik som anländer och dör. En begäran till ett mål utanför gatewayens rutter bevisar det på en minut.
En tunnel som ägs av en app är återigen ett eget fall. Leverantören måste implementera eller exponera det stödda beteendet; att installera en andra inbyggd IKEv2-profil ändrar inte en tunnel som en annan app redan hanterar, och en IKEv2-nyckel är inte ett OpenVPN-direktiv som någon annan klient läser.
För den aktuella nyckellistan och versionsvillkoren, läs Apples IKEv2-nyttolastreferens i stället för en profil som någon kopierade för år sedan.
Acceptera en profilrevision som helhet
Innan du ändrar en Mac som administreras på distans, skriv ned målversionerna av macOS, det avsedda internetutflödet, de privata prefix som måste förbli nåbara och varje undantag du aktiverar. Behåll sedan en återställningsväg som inte beror på tunneln du ska ändra.
Testa nya offentliga begäranden, privata begäranden, båda adressfamiljerna och namnmatchning, och kontrollera den installerade revisionen i stället för designfilen. Om något fortfarande går direkt, avgör om det är ett dokumenterat undantag, en annan anslutningskontext eller ett faktiskt konfigurationsfel, och ändra en av de tre i stället för att bredda orelaterade nycklar.