Obrátený tethering presúva prevádzku telefónu do počítača a vedie ju von spojením toho počítača. Samotný USB kábel to neurobí: telefón potrebuje službu zachytávania, ktorá prevezme jeho smerovanie, a počítač relay, ktorý tie pakety nesie ďalej. Cesta má štyri skoky: aplikácia, zachytávanie na telefóne, USB relay a výstup hostiteľa, a každý má iného vlastníka. Táto príručka tú cestu stavia, umiestňuje VPN hostiteľa tam, kam patrí, a kontroluje každý skok, kým výsledku uveríte.

Zmapujte skoky, kým niečo spustíte

Každý skok uplatňuje vlastnú politiku, preto funkčný výsledok na jednom konci nič nehovorí o druhom. Aplikácia volí cieľ a resolver, služba zachytávania rozhoduje, ktorá prevádzka vstúpi do relaye, relay posiela do socketov hostiteľa a smerovanie a VPN hostiteľa určujú adresu, ktorú cieľ nakoniec vidí.

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

Rolu zachytávania telefónu môže naraz držať len jeden klient služby VPN, takže druhá bežná VPN aplikácia sa na relay neukladá. Ak VPN patrí počítaču, služba zachytávania je prístupovým článkom k tomu počítaču, nie dôkazom, že vzdialený tunel už výsledok chráni.

Pripravte relay, kým sa telefónu dotknete

Gnirehtet je dokumentovaný príklad tejto architektúry: klient služby VPN bez rootu na telefóne plus relay prenášaný cez ADB na hostiteľovi, s podporou TCP a UDP cez IPv4. Jeho repozitár tiež uvádza, že projekt už nie je aktívne udržiavaný, takže ho berte ako referenčný návrh a funkčný nástroj pre laboratórium, nie ako podporovaný produkt na štandardizáciu na spravovanej flotile.

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

Najprv spustite adb devices. Telefón, ktorý neprijal ladiaci kľúč hostiteľa, sa hlási ako neautorizovaný a relay sa nepripojí, kým sa výzva na zariadení neprijme. gnirehtet run nainštaluje klienta, spustí relay a aktivuje zachytávanie; vo verzii, ktorá kroky oddeľuje, použite namiesto toho dokumentované podpríkazy install, relay a start.

Prístup cez ADB je vzťah ovládania zariadenia, nie sieťové nastavenie. Autorizujte len počítač, ktorý ovládate, a po dokončení úlohy toto oprávnenie odvolajte.

Vráťte VPN hostiteľa do cesty

Relay je bežný proces hostiteľa, takže jeho ďalšie spojenia sledujú smerovaciu tabuľku hostiteľa. Profil úplného tunela ich prenáša; rozdelený tunel možno nie. Ak VPN hostiteľa používa ovládanie po aplikáciách, pridajte binárku relaye do povolenej sady, inak relay ďalej používa fyzické rozhranie, zatiaľ čo prehliadač vyzerá chránený.

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

Spustite prvé dva príkazy pred pripojením VPN hostiteľa a po ňom. Ak sa adresa nezmení, relay nie je v tuneli, čokoľvek hovorí okno klienta. Tunel len pre privátne siete necháva aj verejné ciele na obvyklom výstupe hostiteľa, čo vyzerá ako únik, ale je to politika, ktorú ste nastavili.

DNS sa pre prevádzku cez relay rieši na hostiteľovi, takže resolver hostiteľa rozhoduje, ktorý server vidí mená. Nastavenie privátneho DNS na telefóne sa cez relay neprenáša a test resolvera na strane telefónu nepopíše dopyty hostiteľa.

Overte každý skok osobitne

Tri kontroly v tomto poradí: telefón dosiahne relay, relay dosiahne cieľ podľa politiky hostiteľa a aplikácia cieľ správne vyrieši a použije. Zastavte pri prvom zlyhaní namiesto opätovného načítania stránok a hádania.

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

Záznam siete VPN vo výpise konektivity ukazuje, že služba zachytávania je aktívna; vlastný log relaye ukazuje, či toky prichádzajú. Neprítomnosť v jednom z nich problém čisto rozdelí: žiadne zachytávanie znamená stranu telefónu, žiadne toky stranu hostiteľa.

Prehliadač, ktorý funguje na hostiteľovi, dokazuje cestu prehliadača hostiteľa, nie cestu procesu relaye. Porovnajte adresy, ktoré každý hlási, a otestujte privátny zdroj aj verejnú stránku, pretože tunel len pre privátne siete môže smerovať jedno a nie druhé.

Odstráňte inštaláciu a zvoľte správanie pri zlyhaní

Návrat je súčasťou príručky. Zastavte a odstráňte relay, odinštalujte klienta zachytávania a po dokončení úlohy odvolajte oprávnenie na ladenie hostiteľa v možnostiach pre vývojárov na telefóne.

gnirehtet stop
gnirehtet uninstall
adb kill-server

Rozhodnite, čo má telefón robiť, keď relay zmizne. Bez výslovnej voľby môže prejsť na mobilné dáta a uniknúť prevádzku, ktorú ste chceli smerovať, preto správanie blokovania spojení alebo politiku VPN nastavte zámerne a demontáž otestujte, kým sa na ňu spoliehate.

Zapíšte, ktorý hostiteľ bol autorizovaný, verziu relaye, politiku tunela hostiteľa a kroky demontáže. Práve tento záznam robí ďalšie nastavenie obráteného tetheringu opakovateľným, namiesto ďalšieho popoludnia znovuobjavovania.

Súvisiace články