Vyloučení balíčku je pokyn ke směrování, ne blokování, takže stránky, které se načtou po připojení VPN, jsou očekávané, a ne důkaz poruchy. Vyloučení odebere aplikaci z tunelu místo toho, aby ji blokovalo, a provoz nese běžná síť. Setkávají se zde dvě oddělené politiky: jedna vybírá procesy, druhá vybírá cíle. Čtení v tomto pořadí vysvětluje, proč připojená ikona a fungující aplikace nejsou protiklad.

Proč vyloučení drží síť otevřenou

VpnService.Builder přijímá buď povolený, nebo zakázaný seznam, nikdy oba. Balíčky v povoleném seznamu jsou jediné, které jdou tunelem. Zakázaný seznam to obrací: každý balíček kromě uvedených používá tunel a uvedené si drží fyzickou cestu. Neuvedený balíček v povoleném seznamu je také mimo tunel, takže vyloučení je v tomto režimu normální stav pro většinu aplikací.

Tím se z místního záznamu v zakázaném seznamu stává rozhodnutí o směrování, ne pravidlo firewallu. Pokud je cílem zabránit aplikaci dosáhnout hostitele, musí ji tunel pokrýt a server nebo místní politika musí provoz odmítnout. Odebrání aplikace z tunelu mění jen to, které rozhraní nese její pakety.

Případ Play Store je obvyklý záměrný příklad. Vyloučení balíčku obchodu umožní stahování použít základní připojení, když výstup VPN překáží přenosům, a ukazuje, že vyloučení znamená obejití, ne blokování.

Jeden profil, jeden seznam

Tvůrce vyhodí výjimku, pokud se použijí obě volání, takže profil před vámi je buď povolený, nebo zakázaný seznam. Tento jediný fakt určuje, jak číst každé další pozorování. Zkontrolujte kód nebo spravovanou konfiguraci před směrovací tabulkou, protože seznam rozhoduje, co zbytek výstupu znamená. Hybridní profil není stav, na který se můžete dívat.

Rozdíl také předpovídá, co udělá nově nainstalovaná aplikace. V povoleném seznamu zůstane venku, dokud ji někdo nepřidá, zatímco v zakázaném se ve výchozím nastavení připojí k tunelu.

Spravované konfigurace vystavují stejnou volbu pod jinými názvy klíčů a některé konzole to popisují jako režim VPN pro jednotlivé aplikace, nikoli jako seznam. Chování se přesto redukuje na tato dvě volání, takže vystopujte nastavení zpět k seznamu balíčků, místo abyste věřili označení. Pokud se označení a seznam rozcházejí, vyhrává seznam.

Sledujte pravidlo UID k tabulce tunelu

Android dává každé aplikaci vlastní uživatelské ID Linuxu a služba VPN instaluje pravidla politiky, která odpovídají rozsahům UID. Odpovídající provoz se posílá do směrovací tabulky, jejíž výchozí trasa ukazuje na zařízení tun. Číslo tabulky se přiděluje pro každou instanci VPN, takže se mění po opětovném připojení nebo po vytvoření druhého profilu VPN.

Výstup pravidel je mapa. Každý řádek pojmenovává vyhledávací tabulku a tato tabulka drží výchozí trasu, která rozhoduje, zda odpovídající pakety vstoupí do tunelu.

adb shell ip rule show
adb shell ip route show table all
adb shell cmd package list packages -U | grep <package>

Nejprve spusťte třetí příkaz, abyste získali UID, pak najděte pravidlo, jehož rozsah ho obsahuje. Toto pravidlo ukazuje na číslo tabulky a ip route show table <n> s tímto číslem ukáže, zda existuje výchozí trasa přes zařízení tun. Pokud tabulka nemá výchozí trasu, aplikace je vybrána, ale nemá cestu, což je jiná porucha.

Tyto příkazy vyžadují laditelný build nebo zařízení, kde adb shell může číst stav sítě. Na produkčním telefonu správce balíčků stále odpovídá, ale kontrola směrování může být odmítnuta, takže zaznamenejte, co můžete, a zbytek považujte za neověřený.

Trasa si nárokuje prefix, ne aplikaci

Builder.addRoute si nárokuje cílové prefixy pro tunel. Profil, který přidá jen 10.0.0.0/8 pošle tento prefix tunelem a každý další cíl nechá na fyzické cestě. To je běžné rozdělené tunelování a je nezávislé na tom, které aplikace pravidla vybrala.

Konfigurace vložená serverem zrcadlí stejný model. Jednotlivá vložení tras přidávají prefixy, zatímco direktiva redirect-gateway nahrazuje výchozí trasu a zachytí vše pro aplikace, které tunel pokrývá. Odebrání této direktivy může zmenšit fungující tunel na jednu podsíť bez jakékoli změny na zařízení.

Vložená trasa s neobvyklou bránou nebo metrickým kvalifikátorem se také nemusí nainstalovat. Preferujte obyčejný tvar prefixu a nechte server starat se o předávání a NAT.

Přečtěte si průnik, než změníte nastavení

Tunel nese průnik pokrytých procesů a nárokovaných cílů. Pokrytá aplikace, která žádá adresu mimo zveřejněné prefixy, odchází fyzickou sítí. Zakázaný balíček zůstává venku, i když žádá adresu uvnitř těchto prefixů. Ani jeden případ není chyba; oba jsou dvě politiky, které dělají svou práci.

VPN pro jednotlivé aplikace může také nechat přidruženou aplikaci bez připojení. Když je on-demand vypnutý a tunel nefunguje, aplikace zůstává vázaná na VPN pro jednotlivé aplikace a nemá náhradní cestu, což vypadá jako rozbitá aplikace, ne jako stav politiky. Zapnutí on-demand nebo odebrání přidružení přes správu to změní.

LayerWhat it selectsWhere to lookTypical mismatch
Package listProcessesBuilder calls or managed configurationApp excluded but expected to be blocked
UID policy ruleWhich table a UID usesip rule showTunnel icon on, app still on Wi-Fi
Routing tableDestinations for matched trafficip route show table <n>Covered app reaches only one subnet
Server pushPrefixes offered to the clientServer route configurationTunnel shrinks after a server edit

Diagnostikujte jednu osu po druhé. Nejprve potvrďte povolení nebo zakázání, druhé přečtěte nainstalovaná pravidla UID a tabulky a nakonec otestujte druhou aplikaci na stejný cíl. Druhá aplikace odděluje výběr procesu od výběru cíle v jediném požadavku.

Zapište výsledek jako aplikaci, cíl a číslo tabulky. Právě tento trojici musí další změna zachovat.

Související články