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

Simptom: identitet nestaje, politika ide za njim

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

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

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

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

Dve provere 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 nivou API-ja, a ne Wi-Fi problem. Rešite to pre nego što dirnete pravila firewall-a, jer se svako naredno pravilo procenjuje prema vrednosti koju aplikacija ne može da pročita.

Gde se filtriranje zapravo izvršava

Lokalni Android firewall obično koristi model VpnService bez slanja saobraćaja na udaljeni server: uzima virtuelno sučelje, primenjuje sopstvena pravila i prosleđuje ono što dozvoljava. Platforma dozvoljava jednu aktivnu VPN uslugu po korisničkom profilu, a druga zamenjuje prvu umesto da se slaže s njom. Zato odvojena aplikacija firewall-a i odvojen poslovni VPN ne čine dvostepeni lanac; jedan od njih pobeđuje.

To je važno za pravilo po SSID-u jer su tačka sprovođenja i tačka posmatranja različite komponente. VpnService odlučuje šta napušta uređaj; Wi-Fi API samo daje oznaku. Aplikacija može ispravno sprovoditi i pogrešno klasifikovati, 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 pre nego što 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 nasleđuje najstrožu razumnu politiku, a ne najprikladniju. Ako zbog toga telefon postane neupotrebljiv na novoj mreži, ispravno rešenje je nameran, vidljiv izuzetak, a ne tiha odluka o poverenju skrivena u proveri prazne vrednosti.

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

Testirajte prelaze, ne stabilno stanje

Testiranje stabilnog stanja prolazi na mreži na kojoj ste gradili pravilo. Kvarovi žive u prelazima: odbijena dozvola, Wi-Fi na mobilnu mrežu, jedan SSID na drugi, ponovo 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 sprovodi odluku i namerni 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