Pravilo je bilo jednostavno: filtriraj promet samo dok si povezan na uredski Wi-Fi. Držalo se mjesecima, 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 promijenilo; promijenilo se to vidi li aplikacija ime mreže. Na Androidu su „na kojem sam Wi-Fi-ju“ i „blokiraj ovaj promet“ dva odvojena posla, a vatrozid koji ih stapa otvara se upravo kad 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 prometa. 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 sustava 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 osjetljivima 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 što sustav 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 vatrozida, jer se svako naredno pravilo procjenjuje prema vrijednosti koju aplikacija ne može pročitati.

Gdje se filtriranje zapravo izvršava

Lokalni Android vatrozid obično koristi model VpnService bez slanja prometa na udaljeni poslužitelj: 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 vatrozida i odvojen poslovni VPN ne čine dvostupanjski lanac; jedan od njih pobjeđuje.

To je važno za pravilo po SSID-u jer su točka provedbe i točka promatranja različite komponente. VpnService odlučuje što 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. Svatko 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 promet blokiran dok je stanje nepoznato.

Zapišite rezultat u tri rečenice: uočeni uvjet, 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