Omgekeerde tethering skuif 'n selfoon se verkeer na 'n rekenaar en uit deur die rekenaar se verbinding. 'n USB-kabel alleen doen dit nie: die selfoon het 'n opvangdiens nodig wat sy roetering oorneem, en die rekenaar het 'n aflos nodig wat daardie pakkette verder dra. Die pad het vier spronge: toepassing, selfoon-opvang, USB-aflos en gasheer-uitgang, en elkeen het 'n ander eienaar. Hierdie prosedure bou daardie pad, plaas die gasheer se VPN waar dit hoort, en kontroleer elke sprong voordat jy die resultaat vertrou.

Karteer die spronge voordat jy enigiets hardloop

Elke sprong pas sy eie beleid toe, en daarom sê 'n werkende resultaat aan die een kant niks oor die ander kant nie. Die toepassing kies 'n bestemming en 'n oplosser, die opvangdiens besluit watter verkeer die aflos binnegaan, die aflos stuur dit na gasheer-sockette, en die gasheer se roetering en VPN bepaal die adres wat die bestemming uiteindelik sien.

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

Net een kliënt van die VPN-diens kan op 'n slag die selfoon se opvangrol hou, so 'n tweede gewone VPN-program stapel nie bo-op die aflos nie. As die VPN op die rekenaar hoort, is die opvangdiens die toegangsskakel na daardie rekenaar, nie 'n bewys dat 'n afgeleë tonnel die resultaat reeds beskerm nie.

Rig die aflos op voordat jy aan die selfoon raak

Gnirehtet is die gedokumenteerde voorbeeld van hierdie argitektuur: 'n kliënt van die VPN-diens sonder root op die selfoon plus 'n aflos wat deur ADB op die gasheer gedra word, met ondersteuning vir TCP en UDP oor IPv4. Die bewaarplek sê ook dat die projek nie meer aktief onderhou word nie, so behandel dit as die verwysingsontwerp en 'n werkende gereedskap vir 'n laboratorium, nie as 'n ondersteunde produk om oor 'n bestuurde vloot te standaardiseer nie.

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

Hardloop adb devices eerste. 'n Selfoon wat nie die gasheer se ontfoutingsleutel aanvaar het nie, rapporteer as ongemagtig, en die aflos sal nie koppel voordat die opdrag op die toestel aanvaar is nie. gnirehtet run installeer die kliënt, begin die aflos en aktiveer die opvang; op 'n weergawe wat die stappe skei, gebruik eerder die gedokumenteerde subopdragte install, relay en start.

ADB-toegang is 'n toestelbeheer-verhouding, nie 'n netwerkinstelling nie. Magtig net 'n rekenaar wat jy beheer, en beplan om daardie magtiging te herroep wanneer die taak klaar is.

Sit die gasheer se VPN terug in die pad

Die aflos is 'n gewone gasheerproses, so sy verdere verbindings volg die gasheer se roetertabel. 'n Voltonnel-profiel dra hulle; 'n gesplete tonnel dalk nie. As die gasheer se VPN per-program-beheer gebruik, voeg die aflos-program by die toegelate stel, anders bly die aflos die fisiese koppelvlak gebruik terwyl die blaaier beskermd lyk.

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

Hardloop die eerste twee opdragte voor en nadat jy die gasheer se VPN verbind. As die adres nie verander nie, is die aflos nie op die tonnel nie, wat die kliëntvenster ook sê. 'n Slegs-private tonnel laat ook publieke bestemmings op die normale gasheer-uitgang, wat soos 'n lek lyk maar die beleid is wat jy opgestel het.

DNS los op die gasheer op vir verkeer wat deur die aflos gaan, so die gasheer se oplosser besluit watter bediener die name sien. 'n Private DNS-instelling op die selfoon dra nie oor die aflos nie, en 'n oplosser-toets op die selfoon sal nie die gasheer se opsoektogte beskryf nie.

Verifieer elke sprong afsonderlik

Drie kontroles, in hierdie volgorde: die selfoon bereik die aflos, die aflos bereik die bestemming onder gasheerbeleid, en die toepassing los die bestemming op en gebruik dit korrek. Stop by die eerste fout in plaas daarvan om blaaie te herlaai en te raai.

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

'n VPN-netwerk-inskrywing in die verbindingsopsomming wys die opvangdiens is aktief; die aflos se eie log wys of vloeie aankom. Afwesigheid in een van hulle verdeel die probleem skoon: geen opvang beteken die selfoonkant, geen vloeie beteken die gasheerkant.

'n Blaaier wat op die gasheer werk, bewys die gasheer se blaaierpad, nie die aflosproses se pad nie. Vergelyk die adresse wat elkeen rapporteer, en toets 'n private hulpbron sowel as 'n publieke bladsy, want 'n slegs-private tonnel kan die een roeteer en nie die ander nie.

Breek af en kies die foutgedrag

Terugrol is deel van die prosedure. Stop en verwyder die aflos, deïnstalleer die opvang-kliënt, en herroep die gasheer se ontfoutingsmagtiging uit die selfoon se ontwikkelaaropsies wanneer die taak klaar is.

gnirehtet stop
gnirehtet uninstall
adb kill-server

Besluit wat die selfoon moet doen wanneer die aflos verdwyn. Sonder 'n duidelike keuse kan dit na mobiele data terugval en die verkeer lek wat jy wou roeteer, so stel die blokkeer-verbindings-gedrag of die VPN-beleid doelbewus in en toets die afbreek voordat jy daarop staatmaak.

Teken die gasheer aan wat gemagtig is, die aflosweergawe, die gasheer se tonnelbeleid en die afbreekstappe. Daardie rekord is wat die volgende omgekeerde-tethering-opstelling herhaalbaar maak in plaas van nog 'n middag van herontdekking.

Verwante artikels