Pravilo je bilo jednostavno: filtriraj saobraćaj samo dok si povezan na uredski Wi-Fi. Držalo se mjesecima, a onda je jedne jutro telefon stajao na istom SSID-u s istom ikonom ključa, a filtriranje je prestalo. Na mreži se ništa nije promijenilo; promijenilo se to vidi li aplikacija ime mreže. Na Androidu su „na kojem sam Wi-Fi-ju“ i „blokiraj ovaj saobraćaj“ dva odvojena posla, a firewall koji ih stapa otvara se upravo kada ime postane nedostupno.

Simptom: identitet nestaje, politika ide za njim

Pravilo po SSID-u čita vrijednost i zatim bira granu. Kada čitanje ne vrati ništa korisno, kod mora nešto učiniti, a uobičajeni je zadani izbor „nije očekivana mreža, dakle ne filtriraj“. Taj zadani izbor pretvara problem dozvole u curenje saobraćaja. Ikona ključa ostaje vidljiva jer VPN servis još radi; samo provodi drugu granu.

Gledajte redoslijed događaja, a ne mrežu. Odbijen zahtjev za dozvolu, ažuriranje sistema koje je premjestilo pristup SSID-u iza druge dozvole, isključene usluge lokacije ili promjena politike radnog profila, sve to može dati isti rezultat dok telefon ostaje na istoj pristupnoj točki.

Zašto ime može doći kao nepoznato

WifiInfo.getSSID() vraća identifikator skupa usluga trenutne mreže, a Android dokumentira da pristup poljima osjetljivim na lokaciju zavisi od dozvole. Kada pristup nije dostupan, poziv vraća UNKNOWN_SSID umjesto da glasno ne uspije. Prazna ili nepoznata vrijednost zato nije dokaz da je telefon napustio Wi-Fi; to je dokaz da aplikacija ne može klasificirati mrežu.

Dvije provjere razdvajaju slučajeve. Potvrdite da je telefon povezan i pogledajte šta sistem prijavljuje, a zatim potvrdite da aplikacija zaista ima dozvolu koja joj treba na ovom izdanju Androida:

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

Ako statusna linija pokazuje povezanu mrežu dok aplikacija vidi nepoznato ime, imate problem s dozvolom ili na razini API-ja, a ne Wi-Fi problem. Riješite to prije nego dirnete pravila firewall-a, jer se svako naredno pravilo procjenjuje prema vrijednosti koju aplikacija ne može pročitati.

Gdje se filtriranje zapravo izvršava

Lokalni Android firewall obično koristi model VpnService bez slanja saobraćaja na udaljeni server: uzima virtualno sučelje, primjenjuje vlastita pravila i prosljeđuje ono što dopušta. Platforma dopušta jednu aktivnu VPN uslugu po korisničkom profilu, a druga zamjenjuje prvu umjesto da se slaže s njom. Zato odvojena aplikacija firewall-a i odvojen poslovni VPN ne čine dvostepeni lanac; jedan od njih pobjeđuje.

To je važno za pravilo po SSID-u jer su točka provođenja i točka promatranja različite komponente. VpnService odlučuje šta napušta uređaj; Wi-Fi API samo daje oznaku. Aplikacija može ispravno provoditi i pogrešno klasificirati, a to je upravo kvar u ovom članku.

Dajte nepoznatom vlastitu politiku

Tretirajte identitet mreže kao tri stanja i zapišite politiku za svako prije nego pustite pravilo. Treće stanje je ono koje se zaboravlja, i u njega će vas staviti napadač ili pogrešna konfiguracija.

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

Zatvaranje pri nepoznatom znači da nepoznato stanje nasljeđuje najstrožu razumnu politiku, a ne najprikladniju. Ako zbog toga telefon postane neupotrebljiv na novoj mreži, ispravno rješenje je namjeran, vidljiv izuzetak, a ne tiha odluka o povjerenju skrivena u provjeri prazne vrijednosti.

Poznati SSID je oznaka, ne dokaz operatora mreže. Svako može pokrenuti pristupnu točku s imenom ureda, pa podudaranje imena nikada ne bi smjelo biti jedino što stoji između osjetljive sesije i nepouzdanog segmenta.

Testirajte prijelaze, ne stabilno stanje

Testiranje stabilnog stanja prolazi na mreži na kojoj ste gradili pravilo. Kvarovi žive u prijelazima: odbijena dozvola, Wi-Fi na mobilnu mrežu, jedan SSID na drugi, ponovno pokrenut VPN servis i druga VPN aplikacija koja preuzima sučelje. Za svaki odlučite hoće li se postojeće veze preispitati i ostaje li zaštićeni saobraćaj blokiran dok je stanje nepoznato.

Zapišite rezultat u tri rečenice: uočeni uslov, komponenta koja provodi odluku i namjerni rezervni postupak. Ako bilo koje od troje nedostaje, pravilo još nije politika; to je nagađanje koje slučajno radi na uredskoj mreži.

Povezani članci