Pravidlo bylo jednoduché: filtrovat provoz jen při připojení k firemní Wi-Fi. Vydrželo měsíce, a pak jednoho rána telefon seděl na stejné SSID se stejnou ikonou klíče a filtrování přestalo. Na síti se nic nezměnilo; změnilo se to, zda aplikace vidí název sítě. V Androidu jsou „na jaké Wi-Fi jsem“ a „zablokuj tento provoz“ dva oddělené úkoly a firewall, který je slévá, selže otevřeně právě ve chvíli, kdy název přestane být dostupný.

Příznak: identita zmizí a politika ji následuje

Pravidlo podle SSID přečte hodnotu a pak vybere větev. Když čtení nevrátí nic užitečného, kód musí něco udělat, a běžná výchozí volba je „není to očekávaná síť, tak nefiltrovat“. Tato výchozí volba mění problém s oprávněním v únik provozu. Ikona klíče zůstává viditelná, protože služba VPN stále běží; jen vykonává jinou větev.

Sledujte pořadí událostí, ne síť. Odmítnutý dotaz na oprávnění, aktualizace systému, která přesunula přístup k SSID za jiné oprávnění, vypnuté služby polohy nebo změna politiky pracovního profilu, to vše může dát stejný výsledek, zatímco telefon zůstává na stejném přístupovém bodu.

Proč může název přijít jako neznámý

WifiInfo.getSSID() vrací identifikátor sady služeb aktuální sítě a Android dokumentuje, že přístup k polohově citlivým polím závisí na oprávnění. Když přístup není dostupný, volání vrátí UNKNOWN_SSID místo hlasitého selhání. Prázdná nebo neznámá hodnota tedy není důkazem, že telefon opustil Wi-Fi; je důkazem, že aplikace nedokáže síť klasifikovat.

Dvě kontroly případy oddělují. Ověřte, že telefon je přidružený, a podívejte se, co systém hlásí, potom ověřte, že aplikace skutečně má oprávnění, které v této verzi Androidu potřebuje:

adb shell cmd wifi status
adb shell dumpsys package <your.app> | grep -i -E "ACCESS_FINE_LOCATION|NEARBY_WIFI_DEVICES"

Pokud stavový řádek ukazuje připojenou síť, zatímco aplikace vidí neznámý název, máte problém s oprávněním nebo na úrovni API, ne problém s Wi-Fi. Opravte to dřív, než se dotknete pravidel firewallu, protože každé další pravidlo se vyhodnocuje proti hodnotě, kterou aplikace nedokáže přečíst.

Kde filtrování skutečně běží

Místní Android firewall obvykle používá model VpnService bez odesílání provozu na vzdálený server: vezme virtuální rozhraní, použije vlastní pravidla a předává to, co povolí. Platforma dovoluje jednu aktivní službu VPN na uživatelský profil a druhá nahradí první, místo aby se na ni vrstvila. Samostatná aplikace firewallu a samostatná pracovní VPN proto netvoří dvoustupňový řetěz; jedna z nich vyhraje.

To je pro pravidlo podle SSID podstatné, protože místo vynucení a místo pozorování jsou různé komponenty. VpnService rozhoduje, co opustí zařízení; Wi-Fi API pouze dodává označení. Aplikace může vynucovat správně a klasifikovat špatně, a to je přesně porucha v tomto článku.

Dejte neznámému vlastní politiku

Berte identitu sítě jako tři stavy a zapište politiku pro každý z nich, než pravidlo vydáte. Třetí stav je ten, na který se zapomíná, a právě do něj vás dostane útočník nebo chybná konfigurace.

ObservationPolicy to specify
Expected SSID is readableThe explicit filtering policy you designed
A different SSID is readableThe default policy for untrusted networks
Unknown, changing or unreadableFail closed until classification is reliable

Selhat zavřeně znamená, že neznámý stav zdědí nejpřísnější rozumnou politiku, ne tu nejpohodlnější. Pokud kvůli tomu bude telefon v nové síti nepoužitelný, správným řešením je úmyslná a viditelná výjimka, ne tiché rozhodnutí o důvěře ukryté v kontrole prázdné hodnoty.

Známá SSID je označení, ne důkaz provozovatele sítě. Kdokoli může spustit přístupový bod s názvem firmy, takže shoda názvu by nikdy neměla být jediná věc mezi citlivou relací a nedůvěryhodným segmentem.

Testujte přechody, ne ustálený stav

Testování ustáleného stavu projde v síti, kde jste pravidlo postavili. Poruchy žijí v přechodech: odmítnuté oprávnění, Wi-Fi na mobilní síť, jedna SSID na druhou, restartovaná služba VPN a jiná aplikace VPN, která převezme rozhraní. U každého rozhodněte, zda se stávající spojení přehodnotí a zda chráněný provoz zůstane zablokovaný, dokud je stav neznámý.

Výsledek zapište ve třech větách: pozorovaná podmínka, komponenta, která rozhodnutí vynucuje, a úmyslný záložní postup. Pokud některá ze tří chybí, pravidlo ještě není politika; je to odhad, který na firemní síti náhodou funguje.

Související články