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.

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

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ę.

Susiję straipsniai