Laitteen VPN-merkki vai lähtöosoite: kumpi todistaa mitä?
Laitteella luettu verkkommerkki ja palvelimen näkemä osoite ovat eri todisteita. Päätä, kumpaa kysymyksesi tarvitsee.
Puhelinsovellus ja etäpalvelin aloittavat eri faktoista, eikä kumpikaan voi lainata toisen faktoja. Sovellus voi kysyä käyttöjärjestelmältä käyttämästään verkosta, kun taas palvelin tietää vain sen, mikä saapuu yhteyden kautta. Oman päätepisteen ajaminen kirjoittaa toisen uudelleen ja jättää ensimmäisen ennalleen. Kumpi niistä vastaa kysymykseesi, riippuu itse kysymyksestä.
Kaksi havaintopistettä, kahdenlaisia todisteita
Paikalliset todisteet kuvaavat laitetta. Ne kattavat liikennettä kantavan rajapinnan, alustan ilmoittaman kuljetuksen ja sen, mitä kutsuvasovellus saa kysyä. Etätodisteet kuvaavat yhteyttä: lähdeosoite, protokolla, ajoitus ja kaikki, mitä sovellus päättää lähettää. Mikään havaintopiste ei ole toisen yläjoukko.
Kahden sekoittaminen tuottaa väitteitä, jotka kuulostavat täsmällisiltä eikä niitä voi tarkistaa. Merkki todistaa jotain laitteen verkko-objektista, ei siitä, miten etäpalvelu luokittelee pyynnön.
Ennen kuin väittelet havaitsemisesta, kirjoita muistiin, mitä pistettä kysymys koskee. Onko kysymys siitä, voiko tietty sovellus tietää tunnelin olevan aktiivinen, vai siitä, voiko palvelu päätellä, mistä pyyntö tuli? Ne ovat erillisiä tutkimuksia, eikä vastaus toiseen kerro mitään toisesta.
Mitä paikallinen alustarajapinta voi ilmoittaa
Android tarjoaa tietyn merkin. Objekti NetworkCapabilities voi ilmoittaa TRANSPORT_VPN, ja hasTransport tarkistaa, onko kyseinen kuljetus läsnä objektissa. Sovellus saa objektin yhteyksien palvelusta ja lukee sitä verkon tilan luvan mukaisesti.
Tulos on paikallista alustatietoa, ei haku palveluntarjoajan osoitealueista. Se kuvaa verkon, jota kutsuva sovellus käyttää.
Kaksi rajaa on tärkeää. Jaetun tunnelin sääntö, joka sulkee sovelluksen pois, voi antaa samassa puhelimessa eri vastauksen kuin mitä kollega näkee, koska sovellus voi olla sidottu muualle. Merkki on olemassa myös siksi, että käyttöjärjestelmä mallintaa VPN-rajapintoja, ei siksi, että jokin tietty sovellus keräisi sen. Lukeeko sovellus kentän, välittääkö se sen vai jättääkö huomiotta, on sen sovelluksen ominaisuus. Sen manifesti ja dokumentaatio ovat ainoat luotettavat lähteet tähän kysymykseen.
adb shell dumpsys connectivity | grep -i -m5 vpn
Mitä etäpalvelu voi nähdä
Palvelin näkee yhteyden lähdeosoitteen, kuljetuksen ja ajoituksen, ja se voi rikastaa osoitetta rekisteri- tai reititystiedoilla. Se voi myös vastaanottaa kaiken, mitä sovellus lähettää, mukaan lukien sijainnin, kun sovellus pyytää sitä ja käyttäjä hyväksyy. Nuo kanalat ovat erillisiä, ja vain yksi muistuttaa osoitehakua.
Hosting-palveluntarjoajalle rekisteröity osoite viittaa tunneliin, kun taas asuinverkkoon rekisteröity osoite viittaa kotiyhteyteen. Molemmat ovat tilastollisia vihjeitä, eivät faktoja laitteesta.
Asuinosoite ei sijoita henkilöä kyseiseen osoitteeseen, eikä hosting-osoite nimeä operaattoria tai maata. Palvelu, joka kohtelee päätelmää varmuutena, erehtyy joskus kykenemättä havaitsemaan sitä. Jos vaatimuksena on luotettavuus eikä heuristiikka, osoitetiedot eivät voi tarjota sitä, ja suunnittelu, joka sen sanoo, on rehellisempi kuin se, joka piilottaa arvauksen.
| Todiste | Mihin se vastaa | Mitä se ei voi näyttää |
|---|---|---|
| Paikallinen kuljetusmerkki | Onko tämä verkko-objekti VPN | Kuka ylläpitää lähtöä tai missä laite on |
| Etälähdeosoite | Mikä osoite saavutti palvelun | Kantaako laite myös tunnelia |
| Sovelluksen hyötykuorma | Mitä sovellus päätti lähettää | Kaikki, mitä sovellus ei lähettänyt |
Miksi itse ylläpidetty lähtö muuttaa vain toista puolta
Oman päätepisteen ajaminen muuttaa lähdeosoitetta, jonka etäpalvelu näkee, mikä voi siirtää sen niiden alueiden ulkopuolelle, jotka palvelu yhdistää kaupallisiin tarjoajiin. Paikallisessa verkkomallissa se ei muuta mitään, koska tunneli pysyy tunnelina ja käyttöjärjestelmä ilmoittaa sen edelleen.
Toinen puoli todisteista liikkuu, toinen pysyy paikallaan. Niiden välinen kuilu on paikka, jossa odotukset rikkoutuvat.
Selain on kolmas tapaus omine rajapintoineen ja rajoituksineen. Verkkosisältö ei voi lukea natiivia ominaisuusobjektia, ja mobiilikäyttöjärjestelmän ominaisuuden pitäminen verkkosivulle saatavilla olevana on kategoriavirhe. Jos kysymys koskee verkkosivustoa, tutki, mitä sivusto todella voi saada, sen sijaan että translitteroisit alustan API:n.
Päätä kysymyksellä, jonka esität
Jos kysymys on, voiko tietty sovellus havaita tunnelin tilan, alustarajapinta on oikea paikka katsoa, ja vastaus on kyseisen sovelluksen koodissa ja luvissa. Jos kysymys on, mitä palvelu voi päätellä, yhteystietojen metatiedot ovat todiste. Oikeudellista tai sopimuksellista kysymystä ei ratkaise kumpikaan.
Nimeä kysymys yhdellä lauseella ennen kuin keräät mitään. Se lause päättää, mikä havaintopiste on merkityksellinen, ja pitää tutkimuksen ajautumasta toiseen väittelyyn.
Merkitse jokainen havainto lähteensä mukaan, kun raportoit siitä, koska merkitsemätöntä väitettä ei voi tarkistaa. Paikallinen merkki ja osoitepäätelmä ovat molemmat hyödyllisiä eikä kumpikaan ole ratkaiseva, siksi niiden sulattaminen yhdeksi tuomioksi on virhe.
Kun palvelu hylkää valtuutetun yhteyden, käytä sen tuettua tarkistuspolkua sen sijaan että muuttaisit paikallista asetusta signaalin piilottamiseksi. Yhden havainnon poistaminen ei koskaan todista, että muut ovat kadonneet.