Roedd y rheol yn syml: hidlo traffig dim ond tra’n gysylltiedig â Wi-Fi’r swyddfa. Daliodd am fisoedd, ac yna un bore roedd y ffôn ar yr un SSID gyda’r un eicon allwedd ac roedd yr hidlo wedi stopio. Nid oedd dim wedi newid yn y rhwydwaith; yr hyn a newidiodd oedd a allai’r ap weld enw’r rhwydwaith. Yn Android, mae «pa Wi-Fi ydw i arno» a «blocia’r traffig hwn» yn ddau dasg ar wahân, ac mae wal dân sy’n cymysgu’r ddau yn methu’n agored yn union pan na fydd yr enw ar gael.

Y symptom: mae hunaniaeth yn diflannu a’r polisi yn ei dilyn

Mae rheol SSID yn darllen gwerth ac yna’n dewis cangen. Pan na fydd y darlleniad yn dychwelyd dim defnyddiol, rhaid i’r cod wneud rhywbeth, a’r diofyn arferol yw «nid y rhwydwaith a ddisgwylir, felly peidio â hidlo». Mae’r diofyn hwnnw’n troi problem caniatâd yn ollyngiad traffig. Mae’r eicon allwedd yn parhau’n weladwy oherwydd bod y gwasanaeth VPN yn dal i redeg; mae ond yn gorfodi cangen wahanol.

Edrychwch ar drefn y digwyddiadau, nid ar y rhwydwaith. Gall anogwr caniatâd a wrthodwyd, diweddariad system a symudodd fynediad SSID y tu ôl i ganiatâd gwahanol, gwasanaethau lleoliad wedi’u diffodd, neu newid polisi proffil gwaith gynhyrchu’r un canlyniad tra bo’r ffôn yn aros ar yr un pwynt mynediad.

Pam y gall yr enw ddod yn ôl yn anhysbys

Mae WifiInfo.getSSID() yn dychwelyd dynodydd set wasanaeth y rhwydwaith cyfredol, ac mae Android yn dogfennu bod mynediad at feysydd sy’n sensitif i leoliad yn dibynnu ar ganiatâd. Pan nad yw mynediad ar gael, mae’r alwad yn dychwelyd UNKNOWN_SSID yn lle methu’n uchel. Felly nid yw gwerth gwag neu anhysbys yn brawf bod y ffôn wedi gadael Wi-Fi; mae’n brawf na all yr ap ddosbarthu’r rhwydwaith.

Mae dau wiriad yn gwahanu’r achosion. Cadarnhewch fod y ffôn wedi’i gysylltu a gweld beth mae’r system yn ei adrodd, yna cadarnhewch fod gan yr ap y caniatâd y mae ei angen ar y rhyddhau Android hwn:

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

Os yw’r llinell statws yn dangos rhwydwaith cysylltiedig tra bo’r ap yn gweld enw anhysbys, mae gennych broblem caniatâd neu lefel API, nid problem Wi-Fi. Trwsiwch hynny cyn cyffwrdd â rheolau’r wal dân, oherwydd mae pob rheol i lawr yr afon yn cael ei gwerthuso yn erbyn gwerth na all yr ap ei ddarllen.

Ble mae’r hidlo’n rhedeg mewn gwirionedd

Mae wal dân lleol Android fel arfer yn defnyddio model VpnService heb anfon traffig i weinydd pell: mae’n cymryd y rhyngwyneb rhithwir, yn cymhwyso ei reolau ei hun ac yn trosglwyddo’r hyn a ganiateir. Mae’r platfform yn caniatáu un gwasanaeth VPN gweithredol fesul proffil defnyddiwr, ac mae’r ail yn disodli’r cyntaf yn hytrach na haenu arno. Felly nid yw ap wal dân ar wahân a VPN gwaith ar wahân yn ffurfio cadwyn dau gam; un ohonynt sy’n ennill.

Mae hynny’n bwysig i reol SSID oherwydd bod y pwynt gorfodi a’r pwynt arsylwi yn gydrannau gwahanol. Mae VpnService yn penderfynu beth sy’n gadael y ddyfais; dim ond label y mae API Wi-Fi yn ei ddarparu. Gall ap orfodi’n gywir a dosbarthu’n anghywir, a dyna’n union y methiant yn yr erthygl hon.

Rho’r polisi ei hun i’r anhysbys

Triniwch hunaniaeth y rhwydwaith fel tri chyflwr, ac ysgrifennwch y polisi ar gyfer pob un cyn rhyddhau’r rheol. Y trydydd cyflwr yw’r un a anghofir, a dyna’r un y bydd ymosodwr neu gamgyfluniad yn eich rhoi ynddo.

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

Mae methu’n gaeedig yn golygu bod y cyflwr anhysbys yn etifeddu’r polisi mwyaf llym rhesymol yn hytrach na’r un mwyaf cyfleus. Os yw hynny’n gwneud y ffôn yn ddiwerth ar rwydwaith newydd, yr ateb cywir yw eithriad bwriadol ac amlwg, nid penderfyniad ymddiried tawel wedi’i guddio mewn gwiriad gwerth gwag.

Mae SSID cyfarwydd yn label, nid yn brawf o weithredwr y rhwydwaith. Gall unrhyw un redeg pwynt mynediad ag enw’r swyddfa, felly ni ddylai cyfatebiaeth enw fod y peth yn unig rhwng sesiwn sensitif a segment anniogel.

Profwch y trawsnewidiadau, nid y cyflwr sefydlog

Mae profion cyflwr sefydlog yn pasio ar y rhwydwaith lle gwnaethoch y rheol. Mae’r methiannau’n byw mewn trawsnewidiadau: caniatâd wedi’i wrthod, Wi-Fi i ffôn symudol, un SSID i’r llall, y gwasanaeth VPN wedi’i ailgychwyn, ac ap VPN arall yn cymryd y rhyngwyneb. Ar gyfer pob un, penderfynwch a yw cysylltiadau presennol yn cael eu hailystyried ac a yw traffig gwarchodedig yn aros wedi’i rwystro tra bo’r cyflwr yn anhysbys.

Ysgrifennwch y canlyniad fel tair brawddeg: yr amod a arsylwyd, y gydran sy’n gorfodi’r penderfyniad, a’r cwymp bwriadol. Os oes unrhyw un o’r tri ar goll, nid yw’r rheol yn bolisi eto; mae’n ddyfaliad sy’n gweithio ar hap ar rwydwaith y swyddfa.

Erthyglau cysylltiedig