Preusmeravanje portova na Android hotspotu: tri ulazne točke
Telefon, put operatera i VPN izlaz otkrivaju različite granice. Utvrdite koja mašina posjeduje socket za slušanje prije nego što otvorite bilo koji port.
Uključili ste hotspot, povezali VPN, otvorili port u aplikaciji, a drugi uređaj se još uvijek ne može povezati. Dio koji nedostaje gotovo nikada nije sam port. Pitanje je koja mašina posjeduje socket za slušanje i koju adresu drugi uređaj treba dosegnuti. Ovo prolazim od telefona prema van, jer ekran na kojem se nalazite govori vam koju od tri ulazne točke zapravo testirate.
Počnite tamo gdje usluga zaista radi
Otvorite aplikaciju koja bi trebala prihvatiti vezu i pročitajte njezinu stranicu statusa. Ako piše da sluša, zabilježite adresu na koju je vezana, jer taj jedan detalj odlučuje većinu slučajeva u nastavku. Aplikacija vezana na 127.0.0.1 dostupna je samo s telefona, i ni jedan hotspot klijent, mapiranje operatera ni VPN izlaz to neće promijeniti.
Zatim potvrdite koji uređaj pokreće uslugu. To je ili telefon, i tada socket pripada toj aplikaciji, ili prijenosno računalo iza hotspota, i tada slušatelj i njegov vatrozid pripadaju prijenosnom računalu, a telefon samo prosljeđuje pakete. To su različiti dizajni s različitim vlasnicima, a njihovo miješanje razlog je zašto port otvoren na jednom mjestu ne radi ništa na drugom.
Na buildu koji se može debuggirati, adb shell može izlistati socketove kroz /proc/net/tcp, ali za većinu ljudi pošten izvor je status same aplikacije. To također izbjegava zamku testiranja socketa koji je aplikacija otvorila na adresi koju niste očekivali.
Prva ulazna točka: drugi uređaj na hotspotu
Ovo je lokalni slučaj i najlakše ga je ispravno postaviti. Drugi uređaj doseže telefon na adresi koju vidi kao svoj gateway, na portu na kojem aplikacija sluša, i ništa izvan hotspota ne mora biti uključeno. Mapiranje operatera nije potrebno i nijedna značajka pružatelja ne mora postojati, jer promet nikada ne napušta lokalni segment.
Dvije stvari to kvare. Aplikacija je vezana na loopback, ili klijentska politika na telefonu ne dopušta lokalnu vezu. Testirajte protokolom same aplikacije umjesto pukom TCP vezom ako aplikacija provodi autentifikaciju, jer slušatelj koji prihvati pa odbije izdaleka izgleda isto kao zatvoren port.
Ako usluga umjesto toga radi na prijenosnom računalu povezanom s telefonom, adresa hotspota telefona uopće nije odredište. Potrebna vam je adresa prijenosnog računala na hotspot sučelju i slušatelj na prijenosnom računalu, a telefon više nije vlasnik ničega osim prosljeđivanja.
Druga ulazna točka: put operatera
Doći do telefona iz mobilne mreže drugi je problem i najčešće jednostavno ne radi za IPv4. Operateri stavljaju telefone iza zajedničkog prevođenja, zato je RFC 6598 izdvojio zajednički raspon adresa upravo za takav raspored. Nezatražena dolazna veza nema mapiranje kroz koje bi stigla, i nikakva lokalna konfiguracija ga ne stvara, jer prevoditelj nije vaš uređaj.
Root pristup to također ne mijenja. On vam daje kontrolu nad stogom telefona, ne nad prevoditeljem operatera, a recepti koji obećavaju suprotno obično pretpostavljaju javnu adresu koju operater nikada nije dodijelio. Tamo gdje operater nudi javni IPv6 prefiks, dolazni put može postojati, ali slušatelj i vatrozid telefona još uvijek trebaju svjesno odobrenje prije nego što bilo što odgovori.
Treća ulazna točka: VPN izlaz
Adresa koju web stranica prijavi dok je tunel aktivan adresa je izlaza za obuhvaćeni odlazni promet. To nije isto što i adresa koja prihvaća dolazne veze u vaše ime. Korištenje za dolazni promet zahtijeva značajku koju pružatelj stvarno nudi, poput proslijeđenog porta ili dolaznog mapiranja vezanog uz vaš račun, plus upotrebljiv put od izlaza do klijenta.
Lokalno pravilo dopuštenja ne može stvoriti takvo mapiranje. Ono može promijeniti kojim putem idu odgovori aplikacije, što je važno kada je aplikacija izuzeta iz tunela: zahtjev i odgovor mogu završiti u različitim mrežnim kontekstima, a veza pada na način koji izgleda kao problem vatrozida.
Testirajte jedan put od početka do kraja, zatim imenujte vlasnika
Zapišite tuple prije testiranja: namjeravani izvor, odredišna adresa, transport, port i mašina koja posjeduje socket za slušanje. Ako je bilo koji element nagađanje, test vam neće reći ništa korisno, i na kraju ćete promijeniti drugi sloj da biste objasnili prvi.
Zatim testirajte taj jedan odobreni put s netaknutom autentifikacijom aplikacije. Izbjegavajte objavljivanje širokog slušatelja ili isključivanje nepovezanih kontrola samo da bi dvosmislena provjera javne adrese odgovorila, jer obje promjene nadžive test i nijedna ne dokazuje da dizajn radi.
Androidov podsustav tetheringa prosljeđuje silazni promet vlastitim putem, odvojeno od uobičajenog VPN hvatanja aplikacija, pa preglednik koji radi na povezanom prijenosnom računalu ne govori ništa o dolaznom pristupu usluzi na telefonu. Prije nego što to nazovete radnim:
- Socket za slušanje nalazi se na adresi koju namjeravani partner može dosegnuti, a ne na loopbacku.
- Partner koristi adresu koja pripada toj ulaznoj točki, a ne izlaznu adresu sa stranice statusa.
- Svako mapiranje na strani operatera ili pružatelja podržana je značajka, a ne pravilo koje ste dodali lokalno.
- Zahtjev i odgovor prolaze kroz isti mrežni kontekst, a autentifikacija aplikacije još uvijek prolazi.