Marcaj VPN pe dispozitiv sau adresa de ieșire: care demonstrează ce?
Un marcaj de rețea citit pe dispozitiv și o adresă văzută de un server sunt dovezi diferite. Decideți de care are nevoie întrebarea dumneavoastră.
Aplicația telefonului și serverul îndepărtat pornesc de la fapte diferite, iar niciunul nu le poate împrumuta pe ale celuilalt. Aplicația poate întreba sistemul de operare despre rețeaua pe care o folosește, în timp ce serverul știe doar ce ajunge pe conexiune. Rularea propriului punct final rescrie al doilea și îl lasă neatins pe primul. Care dintre ele răspunde la întrebarea dumneavoastră depinde de întrebarea însăși.
Două puncte de observare, două tipuri de dovezi
Dovada locală descrie dispozitivul. Ea acoperă interfața care transportă traficul, transportul raportat de platformă și ceea ce aplicația apelantă are voie să interogheze. Dovada la distanță descrie conexiunea: adresa sursă, protocolul, momentul și tot ce aplicația alege să trimită. Niciun punct de observare nu este o supramulțime a celuilalt.
Amestecarea celor două produce afirmații care sună exacte și nu pot fi verificate. Un marcaj dovedește ceva despre un obiect de rețea de pe dispozitiv, nu despre modul în care un serviciu îndepărtat clasifică cererea.
Înainte de a discuta despre detectare, notați la ce punct se referă întrebarea. Este vorba despre dacă o anumită aplicație poate afla că un tunel este activ, sau despre dacă un serviciu poate deduce de unde a venit cererea? Acestea sunt investigații separate, iar răspunsul la una nu spune nimic despre cealaltă.
Ce poate raporta o interfață locală de platformă
Android oferă un marcaj specific. Obiectul NetworkCapabilities poate raporta TRANSPORT_VPN, iar hasTransport verifică dacă transportul respectiv este prezent pe obiect. Aplicația obține obiectul de la serviciul de conectivitate și îl citește, sub rezerva permisiunii pentru starea rețelei.
Rezultatul este informație locală de platformă, nu o căutare în intervalele de adrese ale unui furnizor. Descrie rețeaua pe care o folosește aplicația apelantă.
Două limite contează. O regulă de tunel divizat care exclude o aplicație poate da pe același telefon un răspuns diferit de cel pe care îl vede un coleg, deoarece aplicația poate fi legată în altă parte. Marcajul există și pentru că sistemul de operare modelează interfețe VPN, nu pentru că o anumită aplicație îl colectează. Dacă o aplicație citește câmpul, îl transmite mai departe sau îl ignoră este o proprietate a acelei aplicații. Manifestul și documentația ei sunt singurele surse de încredere pentru această întrebare.
adb shell dumpsys connectivity | grep -i -m5 vpn
Ce poate vedea un serviciu îndepărtat
Un server vede adresa sursă a conexiunii, transportul și momentul, și poate îmbogăți adresa cu date de registru sau de rutare. Poate primi și tot ce trimite aplicația, inclusiv locația când aplicația o cere și utilizatorul este de acord. Acele canale sunt separate, și doar unul seamănă cu o căutare de adresă.
O adresă înregistrată la un furnizor de găzduire sugerează un tunel, în timp ce una înregistrată pe o rețea rezidențială sugerează o conexiune de acasă. Ambele sunt indicii statistice, nu fapte despre dispozitiv.
O adresă rezidențială nu așază persoana la acea adresă, iar o adresă de găzduire nu numește operatorul sau țara. Un serviciu care tratează deducția ca certitudine se va înșela uneori fără a putea detecta asta. Dacă cerința este fiabilitate și nu o euristică, datele de adresă nu o pot oferi, iar un design care spune asta este mai onest decât unul care ascunde presupunerea.
| Dovadă | La ce răspunde | Ce nu poate arăta |
|---|---|---|
| Marcaj local de transport | Dacă acest obiect de rețea este un VPN | Cine operează ieșirea sau unde este dispozitivul |
| Adresă sursă la distanță | Ce adresă a ajuns la serviciu | Dacă dispozitivul poartă și un tunel |
| Datele aplicației | Ce a ales aplicația să trimită | Tot ce aplicația nu a trimis |
De ce o ieșire găzduită de dumneavoastră schimbă doar o parte
Rularea propriului punct final schimbă adresa sursă pe care o vede un serviciu îndepărtat, ceea ce o poate muta în afara intervalelor pe care acel serviciu le asociază cu furnizori comerciali. Nu schimbă nimic în modelul de rețea local, pentru că tunelul rămâne un tunel și sistemul de operare îl raportează în continuare.
O parte a dovezilor se mișcă, cealaltă rămâne fixă. Decalajul dintre ele este locul unde așteptările se rup.
Un browser este un al treilea caz, cu interfețele și restricțiile lui. Conținutul web nu poate citi un obiect nativ de capabilități, iar tratarea unei funcții a sistemului de operare mobil ca disponibilă pentru o pagină web este o eroare de categorie. Dacă întrebarea privește un site, studiați ce poate obține cu adevărat un site în loc să transliterați un API de platformă.
Decideți cu întrebarea pe care o puneți
Dacă întrebarea este dacă o anumită aplicație poate observa starea tunelului, interfața de platformă este locul potrivit de privit, iar răspunsul se află în codul și permisiunile acelei aplicații. Dacă întrebarea este ce poate deduce un serviciu, metadatele conexiunii sunt dovada. O problemă legală sau contractuală nu este rezolvată de niciuna dintre ele.
Numiți întrebarea într-o singură propoziție înainte de a colecta ceva. Acea propoziție decide care punct de observare contează și împiedică investigația să alunece într-o altă dezbatere.
Etichetați fiecare observație după sursa ei când o raportați, pentru că o afirmație fără etichetă nu poate fi revizuită. Un marcaj local și o deducție din adresă sunt ambele utile și niciuna nu este concludentă, de aceea a le contopi într-un singur verdict este o greșeală.
Când un serviciu respinge o conexiune autorizată, folosiți calea de revizuire pe care o susține în loc să schimbați o setare locală pentru a ascunde un semnal. Eliminarea unei observații nu dovedește niciodată că celelalte au dispărut.