VPN-markør på eininga eller utgangsadresse: kva provar kva?
Eit nettverksmerke lese på eininga og ei adresse som ein tenar ser, er ulike prov. Avgjer kva spørsmålet ditt treng.
Telefonappen og fjertenaren byrjar med ulike fakta, og ingen av dei kan låne den andre sine. Appen kan spørje operativsystemet om nettverket han brukar, medan tenaren berre veit kva som kjem inn over sambandet. Køyrer du ditt eige endepunkt, blir det andre skrive om, og det første står urørt. Kva av dei som svarar på spørsmålet ditt, kjem an på spørsmålet sjølv.
To observasjonspunkt, to slag prov
Lokale prov skildrar eininga. Dei dekkjer grensesnittet som ber trafikken, transporten plattforma rapporterer, og det den kallande appen har lov til å spørje om. Fjernprov skildrar sambandet: kjeldeadresse, protokoll, tidspunkt og alt appen vel å sende. Ikkje noko observasjonspunkt er ei overmengd av det andre.
Å blande dei to gir påstandar som høyrest presise ut og ikkje kan kontrollerast. Eit merke provar noko om eit nettobjekt på eininga, ikkje om korleis ein fjerteneste klassifiserer førespurnaden.
Før du argumenterer om gjenkjenning, skriv ned kva punkt spørsmålet gjeld. Er spørsmålet om ein bestemt app kan sjå at ein tunnel er aktiv, eller om ein teneste kan slutte kvar førespurnaden kom frå? Det er skilde granskingar, og eit svar på den eine seier ingenting om den andre.
Kva eit lokalt plattformgrensesnitt kan rapportere
Android tilbyr eit bestemt merke. Objektet NetworkCapabilities kan rapportere TRANSPORT_VPN, og hasTransport testar om den transporten er til stades på objektet. Appen hentar objektet frå tilkoplingstenesta og les det, underlagt løyve for nettverkstilstand.
Resultatet er lokal plattforminformasjon, ikkje eit oppslag i adresseområda til ein leverandør. Det skildrar nettverket den kallande appen brukar.
To grenser betyr noko. Ei splitt-tunnel-regel som utelukkar ein app, kan gje eit anna svar på same telefonen enn det ein kollega ser, fordi appen kan vere bunden ein annan stad. Merket finst òg fordi operativsystemet modellerer VPN-grensesnitt, ikkje fordi ein bestemt app samlar det inn. Om ein app les feltet, sender det vidare eller ignorerer det, er ein eigenskap ved den appen. Manifestet og dokumentasjonen er dei einaste pålitelege kjeldene til det spørsmålet.
adb shell dumpsys connectivity | grep -i -m5 vpn
Kva ein fjerteneste kan sjå
Ein tenar ser kjeldeadressa til sambandet, transporten og tidspunktet, og han kan berike adressa med register- eller rutingsdata. Han kan òg ta imot alt appen sender, medrekna posisjon når appen ber om det og brukaren samtykkjer. Dei kanalane er skilde, og berre éin liknar eit adresseoppslag.
Ei adresse registrert hos ein hostingleverandør tyder på ein tunnel, medan ei registrert på eit bustadnett tyder på ein heimesamband. Begge er statistiske hint, ikkje fakta om eininga.
Ei bustadadresse plasserer ikkje personen på den adressa, og ei hostingadresse namngjev korkje operatøren eller landet. Ein teneste som behandlar slutninga som visse, vil stundom ta feil utan å kunne oppdage det. Viss kravet er pålitelegheit framfor ein heuristikk, kan adressedata ikkje levere det, og eit design som seier det, er ærlegare enn eit som skjuler gjettinga.
| Prov | Kva det svarar på | Kva det ikkje kan vise |
|---|---|---|
| Lokalt transportmerke | Om dette nettobjektet er ein VPN | Kven som driv utgangen, eller kvar eininga er |
| Fjernkjeldeadresse | Kva adresse som nådde tenesta | Om eininga òg ber ein tunnel |
| Applikasjonsdata | Kva appen valde å sende | Alt appen ikkje sende |
Kvifor ein sjølvhosta utgang berre endrar den eine sida
Å køyre ditt eige endepunkt endrar kjeldeadressa ein fjerteneste ser, noko som kan flytte ho utanfor områda den tenesta knyter til kommersielle leverandørar. Det endrar ingenting i den lokale nettmodellen, fordi tunnelen blir verande ein tunnel og operativsystemet rapporterer han framleis.
Den eine sida av prova flyttar seg, den andre står fast. Gapet mellom dei er der forventningane brest.
Ein nettlesar er eit tredje tilfelle med eigne grensesnitt og avgrensingar. Nettinnhald kan ikkje lese eit nativt kapasitetsobjekt, og å handsame ein mobil operativsystemfunksjon som tilgjengeleg for ei nettside er ein kategorifeil. Viss spørsmålet gjeld ei nettside, gransk kva ei nettside faktisk kan få, i staden for å translitterere eit plattform-API.
Avgjer med spørsmålet du stiller
Viss spørsmålet er om ein bestemt app kan observere tilstanden til tunnelen, er plattformgrensesnittet rett stad å sjå, og svaret ligg i koden og løyva til den appen. Viss spørsmålet er kva ein teneste kan slutte, er tilkoplingsmetadata provet. Eit juridisk eller kontraktsmessig spørsmål blir ikkje avgjort av nokon av dei.
Namngje spørsmålet i éin setning før du samlar inn noko. Den setninga avgjer kva observasjonspunkt som betyr noko, og held granskinga frå å gli over i ein annan diskusjon.
Merk kvar observasjon med kjelda når du rapporterer han, fordi ein umerkt påstand ikkje kan gjennomgåast. Eit lokalt merke og ei adresseslutning er begge nyttige, og ingen av dei er avgjerande, difor er det ein feil å smelte dei saman til éin dom.
Når ein teneste avviser eit autorisert samband, bruk den støtta gjennomgangsvegen hans i staden for å endre ei lokal innstilling for å skjule eit signal. Å fjerne éin observasjon provar aldri at dei andre forsvann.