Regla Android um eitt VPN lokar ekki á hýslaðan SSH-þjón
Takmörkunin á einu VPN takmarkar VPN-þjónustur, ekki socket. SSH-þjónn í símanum bregst frekar vegna hlustara, aðgangs jafningja eða svarleiðar.
Þessi trú er nógu algeng til að hún sé tekin sem staðreynd: Android leyfir aðeins eitt VPN, þannig að SSH-þjónn sem keyrir í símanum getur ekki virkað í gegnum þá göng. Fyrri helmingurinn er sannur og niðurstaðan leiðir ekki af honum. Takmörkun stýrikerfisins snýst um hversu mörg forrit mega eiga sætið í VPN-þjónustunni, ekki um hversu mörg socket mega vera til eða hver má tengjast símanum. SSH-dæmon með hlustandi socket er venjulegt forrit með venjulega gátt, og göngin eru ein af þeim leiðum sem umferð þess getur farið.
Hvað reglan um eitt VPN takmarkar í raun
VpnService er auðlind með einu sæti. Þegar forrit setur upp göng verður það VPN tækisins, og annað forrit sem reynir að setja upp slík er hafnað þar til hið fyrra hverfur. Þetta er regla um eignarhald á göngunum, og hún útskýrir hvers vegna tveir VPN-viðskiptavinir geta ekki keyrt samtímis.
Hún segir ekkert um hlustandi socket. SSH-þjónninn kallar ekki á VpnService, hlerar ekki pakka og keppir ekki um það sæti. Hann bindur gátt og tekur við tengingum, sem er það sama og hann myndi gera án þess að VPN væri uppsett. Þannig ruglar goðsögnin saman takmörkun á gönguveitendum og takmörkun á nettengingum, og þau tvö tengjast ekki.
Hlustarinn er áfangastaður, ekki hluti af göngunum
Þegar göngin eru til hefur síminn vistfang á þeim og jafningjatækið hefur leið að því vistfangi. Hvort eitthvað svarar ræðst af hlustaranum. Dæmon sem er bundinn við loopback er aðeins aðgengilegur frá símanum sjálfum; dæmon bundinn við gamla vistfang ganganna getur haldið bindingu sinni eftir endurtengingu þótt vistfangið sem hann batt sig við hafi breyst.
Bindireglur eru venjuleg SSH-stilling: hlustunarvistfang og gátt, og hverjir mega auðkenna sig. Á Android búa þessar stillingar í eigin stillingum forritsins, og eigandi ferlis forritsins hefur kannski ekki leyfi til að nota forréttindagáttir, þannig að skrifborðsvenjan að binda gátt 22 sem root flyst ekki óbreytt.
ListenAddress 10.90.0.4
Port 2222
AllowUsers aliceSíðan er leyfið á leiðinni sjálfri. Neytenda-VPN sem ber útleiðarvefumferð fúslega þarf alls ekki að leyfa innleiðartengingar til viðskiptavina sinna; mörg gera það ekki, því það myndi afhjúpa einn viðskiptavin fyrir öðrum. Ef jafninginn kemst hvergi að vistfangi gagnanna í símanum er vandamálið í stefnu þjónustunnar en ekki í símanum.
Svarleiðin er þar sem þetta brestur venjulega
Gerum ráð fyrir að jafninginn nái vistfangi ganganna í símanum og SYN berist. Nú verður svarið að fara út sömu leið, og það er leiðarákvörðun inni í símanum. Ef svarið fer út um Wi-Fi af því að það er sjálfgefið net, sér jafninginn tengingu sem klárast aldrei, sem lítur nákvæmlega út eins og eldveggur.
Android gerir þetta flóknara en skrifborð því sjálfgefna netið er valið fyrir hvert ferli og er hægt að breyta með stefnu VPN-forritsins. VPN-viðskiptavinur getur aðeins beint umferð frá lista yfir leyfð forrit, svo þjónforrit sem er utan þess lista heldur áfram að nota líkamlega netið fyrir svörin sín á meðan jafninginn væntir þeirra gegnum göngin.
Forrit getur líka bundið eigin socket við tiltekið net, sem hnekkir sjálfgefna gildinu. Þegar þú lest skýrslu um að þjónusta sé aðgengileg frá einu vistfangi en ekki öðru er þetta venjulega kerfið þar að baki.
Að fara fram hjá VPN læknar ekki innleiðarþjónustu
Vinsæla lausnin, að undanskilja SSH-forritið frá VPN svo umferð þess hætti að vera beint um, er lagfæring á gagnstæða vandamálinu. Hún hjálpar þegar flutningur útleiðar SSH-viðskiptavinar brestur aftur og aftur vegna ganganna. Fyrir hýslaðan þjón getur hún fært svörin út úr göngunum sem jafninginn notar, sem breytir hlutaáföllum í algera bilun.
Það sama gildir um að opna opinbera gátt á beininum. Ef krafan er sú að eitt heimilað tæki nái símanum gegnum VPN er að afhjúpa SSH á internetinu önnur ógnarlíkan og ekki lagfæring.
Ákveddu fyrst vistfang þjónustunnar: LAN-vistfang símsins, vistfang ganganna eða endapunkt sem er vísvitandi framsendur. Hvert þeirra hefur sína samninga um aðgengi og afhjúpun, og að blanda þeim saman er leiðin sem lítill aðgangsvandi verður að varanlegu gati.
Greindu eina átt í einu
Skrifaðu niður fjórar staðreyndir áður en þú breytir stillingum: vistfangið sem jafninginn tengist, stöðu hlustarans í símanum, samhengi forrits og notanda sem á það, og leiðina sem sést í hverri átt. Skýrsla sem segir að VPN aftengi SSH inniheldur enga þeirra og getur ekki greint flutningsvanda viðskiptavinarins frá óaðgengilegum þjóni.
adb shell ip -br addr
adb shell ip route get 10.90.0.9
nc -vz 10.90.0.4 2222Keyrðu gáttaprófið frá jafningjanum, ekki símanum, og lestu ítarlegt úttak SSH-viðskiptavinarins til að sjá hvort það bregst fyrir eða eftir TCP-handshakið. Socket sem tengist aldrei og innskráning sem er hafnað eru mismunandi stig með mismunandi ábyrgðaraðilum.
Haltu sannprófun hýsilás og takmörkunum reiknings óbreyttum meðan þú villuleitar. Það er takmörkun hlustarans og leyfilegra notenda sem gerir aðgengilegan þjón ásættanlegan; að slaka á þeim til að fá tengingu til að virka skiptir einu vandamáli út fyrir verra. OpenSSH-þjónviðmiðin fjalla um hlustunar- og aðgangsstýringar ef Android-útfærslan þín fylgir sömu stillingarheitum.