Obrnjeni tethering premakne promet telefona na računalnik in ga izpelje skozi povezavo tega računalnika. Sam kabel USB tega ne naredi: telefon potrebuje storitev zajemanja, ki prevzame njegovo usmerjanje, računalnik pa posrednik, ki te pakete nosi naprej. Pot ima štiri skoke: aplikacija, zajemanje na telefonu, posrednik USB in izhod gostitelja, vsak pa ima drugega lastnika. Ta priročnik zgradi to pot, postavi VPN gostitelja na pravo mesto in preveri vsak skok, preden zaupate izidu.

Zarišite skoke, preden kar koli zaženete

Vsak skok uveljavlja svojo politiko, zato delujoč izid na enem koncu ne pove nič o drugem. Aplikacija izbere cilj in razreševalnik, storitev zajemanja odloči, kateri promet vstopi v posrednik, posrednik posreduje v vtičnike gostitelja, usmerjanje in VPN gostitelja pa določita naslov, ki ga cilj nazadnje vidi.

HopOwnerWhat it decides
Application requestThe appDestination, resolver, address family
Capture servicePhone VpnService appWhich traffic enters the relay at all
ADB relayHost processForwarding phone flows to host sockets
Host egressHost routing and VPNExit address and host policy

Vlogo zajemanja telefona lahko hkrati opravlja le en odjemalec storitve VPN, zato se druga običajna aplikacija VPN ne nalaga na posrednik. Če VPN pripada računalniku, je storitev zajemanja dostopni člen do tega računalnika, ne dokaz, da oddaljeni tunel že varuje izid.

Pripravite posrednik, preden se dotaknete telefona

Gnirehtet je dokumentiran primer te arhitekture: odjemalec storitve VPN brez roota na telefonu in posrednik, ki se prenaša prek ADB na gostitelju, s podporo za TCP in UDP prek IPv4. Njegovo skladišče tudi navaja, da projekt ni več aktivno vzdrževan, zato ga obravnavajte kot referenčno zasnovo in delujoče orodje za laboratorij, ne kot podprt izdelek za standardizacijo v upravljanem parku.

adb devices
adb shell getprop ro.build.version.release
gnirehtet run

Najprej zaženite adb devices. Telefon, ki ni sprejel ključa za odpravljanje napak gostitelja, je prijavljen kot nepooblaščen in posrednik se ne bo povezal, dokler poziv na napravi ni sprejet. gnirehtet run namesti odjemalca, zažene posrednik in aktivira zajemanje; v različici, ki korake ločuje, uporabite namesto tega dokumentirane podukaze install, relay in start.

Dostop ADB je razmerje nadzora naprave, ne nastavitev omrežja. Pooblastite le računalnik, ki ga nadzorujete, in načrtujte preklic tega pooblastila, ko je naloga končana.

Vrnite VPN gostitelja na pot

Posrednik je običajen proces gostitelja, zato njegove nadaljnje povezave sledijo usmerjevalni tabeli gostitelja. Profil polnega tunela jih prenese; razdeljen tunel morda ne. Če VPN gostitelja uporablja nadzor po aplikacijah, dodajte binarno datoteko posrednika v dovoljeni nabor, sicer posrednik še naprej uporablja fizični vmesnik, medtem ko je brskalnik videti zaščiten.

ip route get 1.1.1.1
curl -4 https://ifconfig.me
sudo ss -tnp | grep -i relay

Zaženite prva dva ukaza pred povezavo VPN gostitelja in po njej. Če se naslov ne spremeni, posrednik ni v tunelu, karkoli pravi okno odjemalca. Tunel samo za zasebna omrežja pusti javne cilje na običajnem izhodu gostitelja, kar je videti kot uhajanje, a je politika, ki ste jo nastavili.

DNS se za promet skozi posrednik razrešuje na gostitelju, zato razreševalnik gostitelja odloči, kateri strežnik vidi imena. Nastavitev zasebnega DNS na telefonu se ne prenese skozi posrednik in preizkus razreševalnika na strani telefona ne bo opisal poizvedb gostitelja.

Preverite vsak skok posebej

Tri preverjanja v tem vrstnem redu: telefon doseže posrednik, posrednik doseže cilj pod politiko gostitelja in aplikacija cilj pravilno razreši ter uporabi. Ustavite se pri prvi napaki, namesto da bi znova nalagali strani in ugibali.

adb shell dumpsys connectivity | grep -i -A3 vpn
adb logcat -s GnirehtetRelay:V Gnirehtet:V

Zapis omrežja VPN v izpisu povezljivosti pokaže, da je storitev zajemanja dejavna; dnevnik posrednika pokaže, ali tokovi prihajajo. Odsotnost v enem od njiju problem čisto razdeli: brez zajemanja je stran telefona, brez tokov stran gostitelja.

Brskalnik, ki deluje na gostitelju, dokazuje pot brskalnika gostitelja, ne poti procesa posrednika. Primerjajte naslove, ki jih vsak poroča, in preizkusite zasebni vir ter javno stran, ker lahko tunel samo za zasebna omrežja usmerja eno in ne drugega.

Razstavite in izberite vedenje ob napaki

Povrnitev je del priročnika. Ustavite in odstranite posrednik, odstranite odjemalca zajemanja in prekličite pooblastilo za odpravljanje napak gostitelja v razvijalskih možnostih telefona, ko je naloga končana.

gnirehtet stop
gnirehtet uninstall
adb kill-server

Odločite, kaj naj telefon naredi, ko posrednik izgine. Brez jasne izbire se lahko vrne na mobilne podatke in izpusti promet, ki ste ga poskušali usmeriti, zato zavestno nastavite vedenje blokiranja povezav ali politiko VPN in preizkusite razstavljanje, preden se nanj zanesete.

Zapišite, kateri gostitelj je bil pooblaščen, različico posrednika, politiko tunela gostitelja in korake razstavljanja. Prav ta zapis naredi naslednjo nastavitev obrnjenega tetheringa ponovljivo, namesto še enega popoldneva ponovnega odkrivanja.

Sorodni članki