VpnService protect() nó an aip a eisiamh: cad a shocraíonn an ródú
Cosain an socket a iompraíonn an tollán, nó eisigh an aip ar fad: na trí choinníoll a shocraíonn cén scóip a theastaíonn ó do VPN Android.
Tá dhá bhealach agat chun pacáistí an tolláin féin a choinneáil lasmuigh den tollán: an socket iompair a chosaint, nó an aip ar fad a thógáil amach as an VPN. Réitíonn siad fadhbanna éagsúla, agus is é an ceann is leithne a roghnú toisc go bhfuil sé níos éasca é a shreangú an bealach a gcailleann aipeanna rochtain ar an líonra áitiúil agus DNS scoite gan aon rud a thabhairt faoi deara. Tosaigh ón rud a chaithfidh fanacht lasmuigh den tollán, ansin roghnaigh an scóip is lú a bhaineann sin amach.
Cad a bhaineann protect() den tollán
VpnService.protect() is glao in aghaidh an socket. Tugann tú dó an socket nó an tuairisceoir a iompraíonn an tollán, agus marcálann Android an socket sin ionas go n-úsáidfidh a thrácht an líonra bunúsach in ionad chomhéadan an VPN. Leanann gach rud eile a sheolann an aip an bealach VPN normálta fós.
Is é an scóip chúng sin an pointe. Ní athraíonn socket cosanta an chaoi a réitíonn do chliant HTTP ainmneacha, cén comhéadan a úsáideann do ghlaonna anailísíochta, ná cad a tharlaíonn do dhara nasc a osclaítear níos déanaí.
Trí choinníoll a shocraíonn an scóip
Is é an chéad choinníoll an é nach bhfuil le héalú ach iompar an tolláin. Mura gcaithfidh trácht eile na haipe dul tríd an VPN fós, is é cosaint socket an scóip cheart. Is é an dara coinníoll an é go rialaíonn tú cruthú an socket. Ní fhágann leabharlann a osclaíonn a socket féin go domhain istigh aon áit agat chun protect() a ghlaoch, mura nochtann sí hook nó mura nglacann sí le socket réamhthógtha. Is é an tríú coinníoll an é go gcaithfidh an aip an líonra áitiúil nó captive portal a bhaint amach go díreach, rud atá ina riachtanas difriúil ón tollán a choinneáil beo.
An aip a eisiamh le addDisallowedApplication() is é an uirlis mhíréasúnta. Baineann sé gach nasc a dhéanann an aip as an VPN, lena n-áirítear iad siúd a bhí uait a iniúchadh, agus ar roinnt gléasanna athraíonn sé freisin an chaoi a n-oibríonn fionnachtain áitiúil.
Tríú rogha is ea an t-iompar a cheangal le líonra roghnaithe le bindProcessToNetwork() nó le hanla líonra ag leibhéal an socket. Bíonn sé sin úsáideach nuair a bhíonn Wi-Fi agus móibíleach ag an ngléas ag an am céanna agus nuair is mian leat go rachaidh an tollán ar nasc uaslódála ar leith.
Glaoigh air agus an t-iompar á chruthú
Glaoigh ar protect() sa bhloc céanna a chruthaíonn an t-iompar, roimh connect() nó send(). Má fhilleann an glao false, dún an socket agus lig don socrú teip; má leanann tú ar aghaidh fágtar iompar agat a bhféadfadh a phacáistí dul isteach i do chomhéadan féin arís.
Tá an chruth beag go leor le coinneáil in aon áit amháin:
DatagramSocket transport = new DatagramSocket();
if (!protect(transport)) {
transport.close();
throw new IOException("transport not protected");
}
transport.connect(serverAddress);Bíonn triúr sonraí ag baint anseo. Ar dtús,is é an boolean an t-aon chomhartha a fhaigheann tú, mar sin logáil an teip le dóthain comhthéacs chun toiliú aistarraingthe a aithint ó ghlao diúltaithe. Ar a dó,protect() clúdaíonn sé an socket, ní uimhir an tuairisceora: má dhúnann tú an socket agus má athúsáideann tú an tslánuimhir chéanna níos déanaí do socket eile, níl an socket nua cosanta. Ar a trí, nuair a osclaíonn leabharlann dhúchasach an t-iompar, cosain an tuairisceoir sula nascfaidh an cód dúchasach, nó b'fhéidir go bhfuil an bealach roghnaithe cheana féin.An tagairt VpnService is é an áit a ndeimhnítear cad iad na hualuithe a sholáthraíonn do leibhéal API sprice i ndáiríre.
Tástáil an bealach blocáilte, ní an bealach sona amháin
Fíoraigh agus an tollán suas, óir sin an t-aon staid inar féidir leis an dá bhealach a bheith difriúil. Seol iarratas amháin tríd an iompar cosanta agus ceann eile ó chonair chóid nár ghlaoigh riamh ar protect(), ansin déan comparáid idir an méid a fheiceann an foirceann i bhfad i gcéin: ba cheart don nasc cosanta teacht leis an líonra bunúsach mar fhoinse, agus taispeánann an ceann neamhchosanta seoladh an tolláin féin agus bogann sé a chuntair bhearta. Ar an ngléas,ss nó netstat taispeánann an deighilt chéanna sula n-imeoidh aon rud ón raidió.
Tástáil an aistarraingt ar leithligh, óir scartálann athrú toilithe an comhéadan gan do chód socket a bhaint. Aistarraing toiliú an VPN nó stop an tseirbhís, atóg an t-iompar, agus deimhnigh go protect() bhfilleann sé true fós agus go nascann an t-iompar arís a luaithe a thugtar an toiliú arís.
Má leanann an t-iarratas cosanta an tollán mar sin féin, is dócha go dtarlaíonn an glao cosanta tar éis an socket a bheith ródáilte cheana. Bog níos luaithe é agus tástáil arís.
Coinnigh an cinneadh scríofa in aice le socrú an iompair: cé na sockets atá cosanta, cén trácht aipe atá eisithe, agus cad a dhéanann an aip nuair a theipeann an chosaint. Is é an líne sin a choisceann athfhearann níos déanaí an t-eisiamh a leathnú chuig an aip ar fad mar gheall go raibh tástáil amháin ag teip. Tugann sé bealach freisin don chéad duine eile an rún a sheiceáil gan innealtóireacht chúl ar an manifest.