Atvirkštinis tethering Android įrenginiui per USB: komandos, patikros, atšaukimas
Atvirkštinis tethering siunčia telefono srautą per relę pagrindiniame kompiuteryje. Nutieskite kelią nuo telefono iki pagrindinio kompiuterio, laikykite jo VPN grandinėje ir patikrinkite kiekvieną šuolį.
Atvirkštinis tethering perkelia telefono srautą į kompiuterį ir išveda jį per to kompiuterio ryšį. Vien USB laidas to nepadaro: telefonui reikia gaudymo tarnybos, kuri perima jo maršrutizavimą, o kompiuteriui – relės, kuri tuos paketus neša toliau. Kelyje yra keturi šuoliai: programa, gaudymas telefone, USB relė ir pagrindinio kompiuterio išėjimas, ir kiekvienas turi skirtingą savininką. Šis vadovas nutiesia tą kelią, pastato pagrindinio kompiuterio VPN į vietą ir patikrina kiekvieną šuolį prieš pasitikėdamas rezultatu.
Susidarykite šuolių žemėlapį prieš ką nors paleisdami
Kiekvienas šuolis taiko savo politiką, todėl veikiantis rezultatas viename gale nieko nesako apie kitą. Programa pasirenka paskirties vietą ir sprendiklį, gaudymo tarnyba nusprendžia, koks srautas patenka į relę, relė persiunčia į pagrindinio kompiuterio lizdus, o jo maršrutizavimas ir VPN nustato adresą, kurį paskirties vieta galiausiai mato.
| Hop | Owner | What it decides |
|---|---|---|
| Application request | The app | Destination, resolver, address family |
| Capture service | Phone VpnService app | Which traffic enters the relay at all |
| ADB relay | Host process | Forwarding phone flows to host sockets |
| Host egress | Host routing and VPN | Exit address and host policy |
Vienu metu telefono gaudymo vaidmenį gali atlikti tik vienas VPN tarnybos klientas, todėl antra įprasta VPN programa nesluoksniuojasi ant relės. Jei VPN priklauso kompiuteriui, gaudymo tarnyba yra prieigos grandis link to kompiuterio, o ne įrodymas, kad nuotolinis tunelis jau saugo rezultatą.
Paruoškite relę, prieš liesdami telefoną
Gnirehtet yra dokumentuotas šios architektūros pavyzdys: VPN tarnybos klientas be root teisių telefone ir ADB pernešama relė pagrindiniame kompiuteryje, palaikanti TCP ir UDP per IPv4. Jo saugykla taip pat nurodo, kad projektas nebepalaikomas aktyviai, todėl vertinkite jį kaip etaloninį dizainą ir veikiantį laboratorijos įrankį, o ne kaip palaikomą produktą, kurį būtų galima standartizuoti valdomame parke.
adb devices
adb shell getprop ro.build.version.release
gnirehtet run
Pirmiausia paleiskite adb devices. Telefonas, nepriėmęs pagrindinio kompiuterio derinimo rakto, pranešamas kaip neautorizuotas, o relė neprisijungs, kol įrenginyje nebus priimtas raginimas. gnirehtet run įdiegia klientą, paleidžia relę ir aktyvuoja gaudymą; versijoje, kuri atskiria veiksmus, naudokite dokumentuotas papildomas komandas install, relay ir start.
ADB prieiga yra įrenginio valdymo santykis, ne tinklo nuostata. Autorizuokite tik jūsų valdomą kompiuterį ir planuokite tą autorizaciją atšaukti, kai užduotis bus baigta.
Grąžinkite pagrindinio kompiuterio VPN į kelią
Relė yra įprastas pagrindinio kompiuterio procesas, todėl jo tolesni ryšiai vadovaujasi to kompiuterio maršrutizavimo lentele. Viso tunelio profilis juos perneša; padalytas tunelis galbūt ne. Jei pagrindinio kompiuterio VPN naudoja valdymą pagal programas, pridėkite relės binarius failą prie leidžiamos aibės, kitaip relė toliau naudos fizinį sąsają, kol naršyklė atrodys apsaugota.
ip route get 1.1.1.1
curl -4 https://ifconfig.me
sudo ss -tnp | grep -i relay
Paleiskite pirmąsias dvi komandas prieš prijungdami pagrindinio kompiuterio VPN ir po to. Jei adresas nesikeičia, relė nėra tunelyje, ką bebūtų sakoma kliento lange. Tik privatus tunelis taip pat palieka viešas paskirties vietas įprastame kompiuterio išėjime, kas atrodo kaip nuotėkis, bet yra jūsų nustatyta politika.
DNS sprendžiamas pagrindiniame kompiuteryje srautui per relę, todėl jo sprendiklis nustato, kuris serveris mato vardus. Privati DNS nuostata telefone nepersiduoda per relę, o sprendiklio testas telefono pusėje neaprašys kompiuterio užklausų.
Patikrinkite kiekvieną šuolį atskirai
Trys patikros šia tvarka: telefonas pasiekia relę, relė pasiekia paskirties vietą pagal kompiuterio politiką, o programa teisingai išsprendžia ir naudoja tą paskirties vietą. Sustokite ties pirmuoju nepavykimu, o ne perkraukite puslapius ir spėliokite.
adb shell dumpsys connectivity | grep -i -A3 vpn
adb logcat -s GnirehtetRelay:V Gnirehtet:V
VPN tinklo įrašas jungčių išraše rodo, kad gaudymo tarnyba aktyvi; pačios relės žurnalas rodo, ar srautai ateina. Jei vieno jų nėra, problema atsiskiria švariai: nėra gaudymo – telefono pusė, nėra srautų – kompiuterio pusė.
Kompiuteryje veikianti naršyklė įrodo kompiuterio naršyklės kelią, o ne relės proceso kelią. Palyginkite adresus, kuriuos kiekviena praneša, ir išbandykite ir privatų išteklių, ir viešą puslapį, nes tik privatus tunelis gali nukreipti vieną, bet ne kitą.
Išardykite ir pasirinkite gedimo elgseną
Atšaukimas yra vadovo dalis. Sustabdykite ir pašalinkite relę, pašalinkite gaudymo klientą ir atšaukite kompiuterio derinimo autorizaciją telefono kūrėjo parinktyse, kai užduotis bus baigta.
gnirehtet stop
gnirehtet uninstall
adb kill-server
Nuspręskite, ką telefonas turi daryti, kai relė dingsta. Be aiškaus pasirinkimo jis gali grįžti prie mobiliojo ryšio duomenų ir nutekinti srautą, kurį bandėte nukreipti, todėl sąmoningai nustatykite jungčių blokavimo elgseną arba VPN politiką ir išbandykite išardymą prieš ja pasikliaudami.
Užrašykite, kuris kompiuteris buvo autorizuotas, relės versiją, kompiuterio tunelio politiką ir išardymo veiksmus. Būtent šis įrašas daro kitą atvirkštinio tethering nustatymą pakartojamą, o ne dar vieną po pietų praleistą atradimų popietę.