Telefonappen och fjärrservern börjar med olika fakta, och ingen av dem kan låna den andras. Appen kan fråga operativsystemet om nätverket den använder, medan servern bara vet vad som kommer in över anslutningen. Kör du din egen slutpunkt skrivs det andra om, och det första lämnas orört. Vilket av dem som svarar på din fråga beror på frågan själv.

Två observationspunkter, två slags bevis

Lokala bevis beskriver enheten. De omfattar gränssnittet som bär trafiken, transporten som plattformen rapporterar, och det den anropande appen får fråga om. Fjärrbevis beskriver anslutningen: källadress, protokoll, tidpunkt och allt appen väljer att skicka. Ingen observationspunkt är en övermängd av den andra.

Att blanda de två ger påståenden som låter precisa och inte kan kontrolleras. En markör bevisar något om ett nätobjekt på enheten, inte om hur en fjärrtjänst klassificerar begäran.

Innan du argumenterar om upptäckt, skriv ner vilken punkt frågan gäller. Gäller frågan om en viss app kan se att en tunnel är aktiv, eller om en tjänst kan sluta sig till var begäran kom ifrån? Det är separata undersökningar, och ett svar på den ena säger ingenting om den andra.

Vad ett lokalt plattformsgränssnitt kan rapportera

Android erbjuder en specifik markör. Objektet NetworkCapabilities kan rapportera TRANSPORT_VPN, och hasTransport testar om den transporten finns på objektet. Appen hämtar objektet från anslutningstjänsten och läser det, under förutsättning av behörighet för nätverkstillstånd.

Resultatet är lokal plattformsinformation, inte en sökning i en leverantörs adressintervall. Det beskriver nätverket som den anropande appen använder.

Två gränser spelar roll. En split-tunnel-regel som utesluter en app kan ge ett annat svar på samma telefon än vad en kollega ser, eftersom appen kan vara bunden någon annanstans. Markören finns också eftersom operativsystemet modellerar VPN-gränssnitt, inte för att någon viss app samlar in den. Om en app läser fältet, vidarebefordrar det eller ignorerar det är en egenskap hos den appen. Dess manifest och dokumentation är de enda tillförlitliga källorna för den frågan.

adb shell dumpsys connectivity | grep -i -m5 vpn

Vad en fjärrtjänst kan se

En server ser anslutningens källadress, transporten och tidpunkten, och den kan berika adressen med register- eller routingdata. Den kan också ta emot allt appen skickar, inklusive position när appen begär det och användaren samtycker. Dessa kanaler är åtskilda, och bara en liknar en adressökning.

En adress registrerad hos en hostingleverantör antyder en tunnel, medan en registrerad i ett bostadsnät antyder en hemanslutning. Båda är statistiska ledtrådar, inte fakta om enheten.

En bostadsadress placerar inte personen på den adressen, och en hostingadress namnger varken operatören eller landet. En tjänst som behandlar slutsatsen som säkerhet kommer ibland att ha fel utan att kunna upptäcka det. Om kravet är tillförlitlighet snarare än en heuristik kan adressdata inte leverera det, och en design som säger det är ärligare än en som döljer gissningen.

BevisVad det svarar påVad det inte kan visa
Lokal transportmarkörOm detta nätobjekt är en VPNVem som driver utgången eller var enheten är
FjärrkälladressVilken adress som nådde tjänstenOm enheten också bär en tunnel
ApplikationsdataVad appen valde att skickaAllt appen inte skickade

Varför en självhostad utgång bara ändrar ena sidan

Att köra din egen slutpunkt ändrar källadressen som en fjärrtjänst ser, vilket kan flytta den utanför de intervall som tjänsten förknippar med kommersiella leverantörer. Det ändrar ingenting i den lokala nätverksmodellen, eftersom tunneln förblir en tunnel och operativsystemet fortfarande rapporterar den.

Ena sidan av bevisen rör sig, den andra står stilla. Glappet mellan dem är där förväntningarna brister.

En webbläsare är ett tredje fall med egna gränssnitt och begränsningar. Webbinnehåll kan inte läsa ett inbyggt kapacitetsobjekt, och att behandla en mobil operativsystemfunktion som tillgänglig för en webbsida är ett kategorifel. Om frågan gäller en webbplats, undersök vad en webbplats faktiskt kan få fram i stället för att translitterera ett plattforms-API.

Avgör med frågan du ställer

Om frågan är om en viss app kan observera tunnelns tillstånd, är plattformsgränssnittet rätt plats att titta, och svaret ligger i den appens kod och behörigheter. Om frågan är vad en tjänst kan sluta sig till, är anslutningsmetadata beviset. En juridisk eller avtalsrättslig fråga avgörs inte av någon av dem.

Namnge frågan i en mening innan du samlar in något. Den meningen avgör vilken observationspunkt som spelar roll och hindrar undersökningen från att glida över i en annan debatt.

Märk varje observation efter dess källa när du rapporterar den, eftersom ett omärkt påstående inte kan granskas. En lokal markör och en adresshärledning är båda användbara och ingen av dem är avgörande, därför är det ett fel att smälta samman dem till en enda dom.

När en tjänst avvisar en auktoriserad anslutning, använd dess stödda granskningsväg i stället för att ändra en lokal inställning för att dölja en signal. Att ta bort en observation bevisar aldrig att de andra försvann.

Relaterade artiklar