VPN-markilo sur la aparato aŭ elira adreso: kiu pruvas kion?
Retmarkilo legata sur la aparato kaj adreso vidata de servilo estas malsamaj pruvoj. Decidu, kiun via demando bezonas.
La telefono-aplikaĵo kaj la fora servilo komencas per malsamaj faktoj, kaj neniu povas prunti la faktojn de la alia. La aplikaĵo povas demandi la operaciumon pri la reto, kiun ĝi uzas, dum la servilo scias nur tion, kio alvenas tra la konekto. Se vi funkciigas propran finpunkton, la dua estas reskribita kaj la unua restas netuŝita. Kiu el ili respondas vian demandon dependas de la demando mem.
Du observpunktoj, du specoj de pruvo
Lokaj pruvoj priskribas la aparaton. Ili kovras la interfacon, kiu portas trafikon, la transporton, kiun la platformo raportas, kaj tion, pri kio la alvokanta aplikaĵo rajtas demandi. Foraj pruvoj priskribas la konekton: fonta adreso, protokolo, tempo kaj ĉio, kion la aplikaĵo elektas sendi. Neniu observpunkto estas superaro de la alia.
Miksi la du kreas asertojn, kiuj sonas precizaj kaj ne estas kontroleblaj. Markilo pruvas ion pri retobjekto sur la aparato, ne pri tio, kiel fora servo klasifikas la peton.
Antaŭ ol disputi pri detektado, notu, kiun punkton la demando koncernas. Ĉu la demando estas, ĉu specifa aplikaĵo povas konstati, ke tunelo estas aktiva, aŭ ĉu servo povas konkludi, de kie venis la peto? Tiuj estas apartaj esploroj, kaj respondo al unu diras nenion pri la alia.
Kion loka platforminterfaco povas raporti
Android proponas specifan markilon. La objekto NetworkCapabilities povas raporti TRANSPORT_VPN, kaj hasTransport kontrolas, ĉu tiu transporto ĉeestas sur la objekto. La aplikaĵo ricevas la objekton de la konekteca servo kaj legas ĝin, kondiĉe al la permeso pri reta stato.
La rezulto estas loka platforminformo, ne serĉo en la adresaj gamoj de provizanto. Ĝi priskribas la reton, kiun la alvokanta aplikaĵo uzas.
Du limoj gravas. Regulo pri dividita tunelo, kiu ekskluzivas aplikaĵon, povas doni alian respondon sur la sama telefono ol tiu, kiun vidas kolego, ĉar la aplikaĵo povas esti ligita aliloke. La markilo ekzistas ankaŭ ĉar la operaciumo modeligas VPN-interfacojn, ne ĉar iu specifa aplikaĵo kolektas ĝin. Ĉu aplikaĵo legas la kampon, plusendas ĝin aŭ ignoras ĝin, estas eco de tiu aplikaĵo. Ĝia manifesto kaj dokumentaro estas la solaj fidindaj fontoj por tiu demando.
adb shell dumpsys connectivity | grep -i -m5 vpn
Kion fora servo povas vidi
Servilo vidas la fontan adreson de la konekto, la transporton kaj la tempon, kaj ĝi povas riĉigi la adreson per registraj aŭ vojigaj datumoj. Ĝi ankaŭ povas ricevi ĉion, kion la aplikaĵo sendas, inkluzive lokon, kiam la aplikaĵo petas ĝin kaj la uzanto konsentas. Tiuj kanaloj estas apartaj, kaj nur unu similas al adresa serĉo.
Adreso registrita ĉe gastiganta provizanto sugestas tunelon, dum unu registrita ĉe loĝa reto sugestas hejman konekton. Ambaŭ estas statistikaj aludoj, ne faktoj pri la aparato.
Loĝa adreso ne lokas la personon ĉe tiu adreso, kaj gastiga adreso ne nomas la operatoron aŭ la landon. Servo, kiu traktas la konkludon kiel certecon, foje eraros sen povi tion detekti. Se la postulo estas fidindeco anstataŭ heŭristiko, adresaj datumoj ne povas liveri ĝin, kaj dezajno, kiu tion diras, estas pli honesta ol unu, kiu kaŝas la konjekton.
| Pruvo | Kion ĝi respondas | Kion ĝi ne povas montri |
|---|---|---|
| Loka transportmarkilo | Ĉu ĉi tiu retobjekto estas VPN | Kiu funkciigas la eliron aŭ kie estas la aparato |
| Fora fonta adreso | Kiun adreson atingis la servo | Ĉu la aparato ankaŭ portas tunelon |
| Aplikaĵa utilŝarĝo | Kion la aplikaĵo elektis sendi | Ĉion, kion la aplikaĵo ne sendis |
Kial memgastigita eliro ŝanĝas nur unu flankon
Funkciigi propran finpunkton ŝanĝas la fontan adreson, kiun fora servo vidas, kio povas movi ĝin ekster la gamojn, kiujn tiu servo asocias kun komercaj provizantoj. Ĝi ŝanĝas nenion en la loka retmodelo, ĉar la tunelo restas tunelo kaj la operaciumo ankoraŭ raportas ĝin.
Unu flanko de la pruvoj moviĝas, la alia restas fiksa. La breĉo inter ili estas kie atendoj rompiĝas.
Retumilo estas tria kazo kun propraj interfacoj kaj limigoj. Reta enhavo ne povas legi indiĝenan kapablecobjekton, kaj trakti funkcion de poŝtelefona operaciumo kiel disponeblan al retpaĝo estas kategoria eraro. Se la demando koncernas retejon, studu, kion retejo efektive povas akiri, anstataŭ transliterigi platforman API.
Decidu per la demando, kiun vi faras
Se la demando estas, ĉu specifa aplikaĵo povas observi la tunelan staton, la platforminterfaco estas la ĝusta loko por rigardi, kaj la respondo kuŝas en la kodo kaj permesoj de tiu aplikaĵo. Se la demando estas, kion servo povas konkludi, konektaj metadatenoj estas la pruvo. Juridikan aŭ kontraktan demandon solvas nek unu nek la alia.
Nomu la demandon en unu frazo antaŭ ol kolekti ion ajn. Tiu frazo decidas, kiu observpunkto gravas, kaj malhelpas, ke la esploro drivu en alian disputon.
Etikedu ĉiun observon laŭ ĝia fonto, kiam vi raportas ĝin, ĉar aserto sen etikedo ne povas esti reviziita. Loka markilo kaj adresa konkludo ambaŭ utilas kaj neniu estas fina, tial kunfandi ilin en unu verdikton estas eraro.
Kiam servo rifuzas rajtigitan konekton, uzu ĝian subtenatan revizian vojon anstataŭ ŝanĝi lokan agordon por kaŝi signalon. Forigi unu observon neniam pruvas, ke la aliaj malaperis.