Android SSH SOCKS tarpinė: kodėl prisijungia tik pusė jūsų programėlių
ssh -D sukuria SOCKS klausytoją, o ne viso įrenginio tunelį. Pereikite grandinę nuo programėlės iki adapterio ir SSH, tada patikrinkite DNS ir gyvavimo ciklo spragas.
Prisijungiate per SSH, pridedate -D 1080 ir komanda pavyksta. Dabar telefone yra SOCKS klausytojas, o pusė programėlių vis tiek išeina per mobiliojo ryšio duomenis. Tai normalus rezultatas, o ne sugedęs tunelis: ssh -D sukuria tarpinės galinį tašką, o Android programėlės tarpinę naudoja tik jei kažkas jas priverčia. Grandinės perėjimas žingsnis po žingsnio parodo, kur iš tikrųjų gyvena kiekviena darbo dalis.
Pradėkite ten, kur prasideda srautas
Pasirinkite vieną programėlę, kuri turėtų naudoti tunelį, ir patikrinkite, ar ji turi savo tarpinės nustatymą. Naršyklė su SOCKS lauku yra lengvas atvejis: nukreipkite ją į 127.0.0.1:1080, įjunkite nuotolinį DNS, jei toks nustatymas yra, ir užklausa praeina. Pokalbių klientas, žemėlapių programėlė ar žaidimas be tokio lauko neturi būdo naudoti klausytoją, ir niekas, ką įrašysite SSH komandoje, to nepakeis.
Prieš ką nors kita įtraukdami, įrodykite, kad klausytojas veikia iš paties telefono apvalkalo su klientu, kuris tiesiogiai kalba SOCKS:
ssh -N -D 1080 [email protected]
curl --socks5-hostname 127.0.0.1:1080 https://ifconfig.me
Grįžtantis adresas turėtų būti SSH serverio, o ne telefono. Jei taip, tarpinės pusė baigta, o likęs darbas apie aprėptį. Jei ne, pirmiausia sutvarkykite SSH pusę: autentifikavimą raktu, serverio gebėjimą pasiekti tikslą ir paties SSH serverio išėjimą.
Pridėkite dalį, kurios reikia Android
Programėlėms be tarpinės nustatymo reikia kažko, kas pagautų jų paketus ir paverstų juos tarpinės ryšiais. Įrenginyje be root tai VPN paslaugos adapteris: programėlė, kuri paima virtualų sąsają ir perduoda pasirinktą srautą į vietinį SOCKS klausytoją. Grandinė tampa programėlė, adapteris, SOCKS klausytojas, SSH ryšys, tikslas.
Įdiekite adapterį, suteikite jam VPN leidimą ir pasirinkite programėles ar maršrutus, kuriuos jis turi gaudyti. Būsenos juostos rakto piktograma tada žymi adapterį, o ne atskirą komercinį VPN. Android leidžia vieną aktyvų VPN paslaugos ryšį vienam vartotojo profiliui, todėl antros VPN programėlės paleidimas neprideda sluoksnio prie grandinės: ji konkuruoja dėl to paties vaidmens.
Tai ir žingsnis, kuriame sėkmingas testas gali suklaidinti. Jei adapteris nustatytas gaudyti tik tą naršyklę, kurią jau nukreipėte į tarpinę, viskas veikia ir nieko daugiau neaprėpta. Perskaitykite gaudymo sąrašą prieš darydami išvadą, kad įrenginys tunelyje.
Laikykite SSH transportą už gaudymo ribų
Pats SSH ryšys neturi būti grąžinamas į SOCKS tunelį, kurį jis palaiko. Jei adapteris gaudo SSH programėlės srautą, tunelis priklauso nuo ryšio, kuris laukia tunelio, o rezultatas yra kilpa, kuri užstringa arba nepavyksta vos adapteriui startavus.
Integruotos realizacijos saugo savo transporto lizdą. Su atskiromis programėlėmis reikia palaikomos išimties: palikite SSH programėlę už gaudymo arba išskirkite SSH galinį tašką pagal adresą. Abi turi kainą. Visos terminalo programėlės išskyrimas taip pat išima iš tunelio jos nesusijusią tinklo veiklą, o adreso išimtis lūžta, kai pasikeičia serverio adresas arba kai vardas kitą kartą išsprendžiamas kitaip.
Patikrinkite išimtį iš išorės: iš naujo prijunkite adapterį, tada patvirtinkite, kad SSH sesija išlieka ir tarpinės užklausa vis dar nurodo serverio adresą. Sesija, kuri veikia iki adapterio starto ir tada sustingsta, yra ta kilpa.
Sekite DNS ir UDP iki grandinės pabaigos
OpenSSH dinaminis persiuntimas perneša TCP ryšius. Tai ne UDP-associate ar ICMP transportas, ir adapteris negali išrasti UDP persiuntimo priimdamas UDP paketus. Viskas, kas reikalauja UDP, įskaitant QUIC ir WebRTC mediją, arba nepavyksta, arba grįžta prie TCP, priklausomai nuo programėlės.
DNS reikia savo sprendimo. Programėlė, kuri vardą išsprendžia vietoje, užklausą siunčia per įprastą sprendiklį prieš prisijungdama, todėl tunelis perneša ryšį, bet ne paiešką. Tarpinę suprantantis klientas su nuotolinio DNS parinktimi to išvengia; pagauta programėlė be jo ne. Patikrinkite, kuris sprendiklis atsakė, o ne manykite, kad adapteris tai pakeitė.
Laikykite SOCKS klausytoją pririštą prie loopback, pirmą kartą naudodami patikrinkite SSH serverio host raktą ir palikite įprastą HTTPS patikrą vietoje galutinei svetainei. SSH saugo atkarpą nuo telefono iki serverio; jis neužšifruoja to, ką serveris daro po to.
Patikrinkite du gyvavimo ciklus ir nuspręskite
Adapteris ir SSH sesija turi atskirus gyvavimo ciklus. Jei SSH nukrenta, kol adapteris tebe gaudo, programėlės gali pakibti be aiškios klaidos, nes jų paketai vis dar patenka į virtualią sąsają, kuri nebeturi veikiančios išėjimo. Jei adapteris sustoja, programėlės arba eina tiesiogiai, arba būna blokuojamos, priklausomai nuo įrenginio VPN politikos.
Sąmoningai išbandykite abi kryptis: nutraukite SSH sesiją, kol adapteris veikia, tada sustabdykite adapterį, kol SSH tebe veikia. Tai, ką telefonas daro kiekvienu atveju, yra politika, kurią iš tikrųjų diegiate, kad ir ką tvirtintų diegimo instrukcijos.
Jei darbo eigai reikia viso įrenginio aprėpties su nuspėjamu gedimo režimu, sąžiningas atsakymas yra tikras IP VPN arba šiai grandinei skirtas palaikomas adapteris. Apvalkalo sesija, palikta veikti šalia nesusijusios gaudymo programėlės, nėra palaikomas įrenginio tunelis; tai du komponentai be susitarimo, kas nutinka, kai vienas jų baigiasi.