Android SSH SOCKS proxy: zašto se povezuje samo pola tvojih aplikacija
ssh -D stvara SOCKS osluškivač, a ne tunel cijelog uređaja. Prođi lanac od aplikacije do adaptera pa do SSH-a, zatim provjeri praznine u DNS-u i životnom ciklusu.
Prijavljuješ se preko SSH-a, dodaješ -D 1080 i naredba uspijeva. Na telefonu sada postoji SOCKS osluškivač, a pola aplikacija i dalje izlazi preko mobilnih podataka. To je normalan rezultat, a ne pokvaren tunel: ssh -D stvara proxy završnu točku, a Android aplikacije koriste proxy samo ako ih nešto na to prisili. Prolazak kroz lanac korak po korak pokazuje gdje svaki dio posla zapravo živi.
Počni ondje gdje promet počinje
Odaberi jednu aplikaciju koja bi trebala koristiti tunel i provjeri ima li vlastitu proxy postavku. Preglednik s poljem SOCKS je jednostavan slučaj: usmjeri ga na 127.0.0.1:1080, uključi udaljeni DNS ako postavka postoji, i zahtjev prolazi. Chat klijent, aplikacija s kartama ili igra bez takvog polja nemaju načina koristiti osluškivač, i ništa što upišeš u SSH naredbu to ne mijenja.
Prije nego uključiš bilo što drugo, dokaži da osluškivač radi iz vlastitog shell-a telefona s klijentom koji izravno govori SOCKS:
ssh -N -D 1080 [email protected]
curl --socks5-hostname 127.0.0.1:1080 https://ifconfig.me
Adresa koja se vraća trebala bi biti adresa SSH poslužitelja, a ne telefona. Ako jest, proxy polovica je gotova i ostatak posla odnosi se na pokrivenost. Ako nije, prvo popravi SSH stranu: autentifikaciju ključem, sposobnost poslužitelja da dosegne odredište i vlastiti izlaz SSH poslužitelja.
Dodaj dio koji Android treba
Aplikacije bez proxy postavke trebaju nešto što hvata njihove pakete i pretvara ih u proxy veze. Na uređaju bez roota to je adapter VPN usluge: aplikacija koja uzima virtualno sučelje i prosljeđuje odabrani promet lokalnom SOCKS osluškivaču. Lanac postaje aplikacija, adapter, SOCKS osluškivač, SSH veza, odredište.
Instaliraj adapter, daj mu VPN dopuštenje i odaberi aplikacije ili rute koje treba hvatati. Ikona ključa u statusnoj traci tada predstavlja adapter, a ne zaseban komercijalni VPN. Android dopušta jednu aktivnu vezu VPN usluge po korisničkom profilu, pa pokretanje druge VPN aplikacije ne dodaje sloj na lanac: ona se natječe za istu ulogu.
Ovo je i korak u kojem uspješan test može zavarati. Ako je adapter postavljen da hvata samo preglednik koji si već usmjerio na proxy, sve radi i ništa drugo nije pokriveno. Pročitaj popis hvatanja prije nego zaključiš da je uređaj u tunelu.
Drži SSH prijenos izvan hvatanja
Sama SSH veza ne smije se vraćati u SOCKS tunel koji održava. Ako adapter hvata promet SSH aplikacije, tunel ovisi o vezi koja čeka tunel, a rezultat je petlja koja se zaglavi ili pokvari čim adapter krene.
Integrirane implementacije štite vlastiti prijenosni socket. S odvojenim aplikacijama trebaš podržano izuzeće: ostavi SSH aplikaciju izvan hvatanja ili izuzmi SSH krajnju točku po adresi. Obje imaju cijenu. Izuzeće cijele terminalne aplikacije uklanja iz tunela i njezinu nepovezanu mrežnu aktivnost, a izuzeće adrese puca kad se adresa poslužitelja promijeni ili kad se ime pri sljedećoj vezi razriješi drukčije.
Provjeri izuzeće izvana: ponovno poveži adapter, zatim potvrdi da SSH sesija preživljava i da proxy zahtjev još javlja adresu poslužitelja. Sesija koja radi dok adapter ne krene i zatim se smrzne jest ta petlja.
Prati DNS i UDP do kraja lanca
OpenSSH dinamičko prosljeđivanje prenosi TCP veze. To nije UDP-associate ni ICMP prijenos, i adapter ne može izmisliti UDP prosljeđivanje prihvaćanjem UDP paketa. Sve što inzistira na UDP-u, uključujući QUIC i WebRTC medije, ili će pokvariti ili će se vratiti na TCP, ovisno o aplikaciji.
DNS treba vlastitu odluku. Aplikacija koja ime razrješava lokalno šalje upit kroz uobičajeni razrješivač prije povezivanja, pa tunel prenosi vezu, ali ne i pretragu. Proxy svjestan klijent s opcijom udaljenog DNS-a to izbjegava; uhvaćena aplikacija bez nje ne. Provjeri koji je razrješivač odgovorio umjesto da pretpostaviš da ga je adapter promijenio.
Drži SOCKS osluškivač vezan na loopback, provjeri host ključ SSH poslužitelja pri prvom korištenju i ostavi uobičajenu HTTPS provjeru na mjestu za završno sjedište. SSH štiti dio telefon-poslužitelj; ne šifrira ono što poslužitelj čini nakon toga.
Provjeri dva životna vijeka i odluči
Adapter i SSH sesija imaju odvojene životne vijekove. Ako SSH padne dok adapter nastavlja hvatati, aplikacije mogu visjeti bez očite pogreške, jer njihovi paketi još ulaze u virtualno sučelje koje više nema radni izlaz. Ako adapter stane, aplikacije ili idu izravno ili budu blokirane, ovisno o VPN politici uređaja.
Namjerno testiraj oba smjera: ubij SSH sesiju dok adapter radi, zatim zaustavi adapter dok SSH ostaje gore. Ono što telefon čini u svakom slučaju jest politika koju stvarno uvodiš, što god tvrdile upute za instalaciju.
Ako radni tijek treba pokrivenost cijelog uređaja s predvidivim načinom kvara, pravi IP VPN ili održavani adapter namijenjen ovom lancu iskren je odgovor. Shell sesija ostavljena da radi uz nepovezanu aplikaciju za hvatanje nije održavani tunel uređaja; to su dvije komponente bez dogovora o tome što se događa kad jedna od njih završi.