D'Glawen ass verbreet genuch fir als Fakt behandelt ze ginn: Android erlaabt nëmmen ee VPN, also kann en SSH-Server deen um Telefon leeft net duerch deen Tunnel funktionéieren. Déi éischt Halschent ass wouer an d'Konklusioun follegt net. D'Limit vun der Plattform geet drëm wéi vill Appen de Slot vum VPN-Service kënnen halen, net wéi vill Sockets et ka ginn oder wien erlaabt ass sech mam Telefon ze verbannen. En SSH-Daemon mat engem lauschenden Socket ass eng gewéinlech App mat engem gewéinleche Port, an den Tunnel ass ee vun de Weeër déi säin Trafic ka huelen.

Wat d'Reegel vun engem eenzegen VPN wierklech beschränkt

VpnService ass eng Ressource mat engem eenzegen Slot. Wann eng App en Tunnel opbaut gëtt se de VPN vum Gerät, an eng zweet App déi och een opbaue wëll gëtt refuséiert bis déi éischt fort ass. Dat ass eng Reegel iwwer d'Eegentum vum Tunnel, an se erkläert firwat zwee VPN-Clienten net gläichzäiteg lafen.

Se seet näischt iwwer lauschend Sockets. Den SSH-Server rifft VpnService net op, fänkt keng Paketen of a konkurréiert net ëm dee Slot. En binde sech un e Port a hëlt Verbindungen un, dat selwecht wat en och ouni installéierte VPN géif maachen. Also verwiesselt de Mythos eng Limit fir Tunnel-Ubidder mat enger Limit fir Netzwierkverbindungen, an déi zwou hunn näischt mateneen ze dinn.

De Listener ass en Destinatioun, net en Deel vum Tunnel

Wann den Tunnel existéiert, huet den Telefon eng Adress drop an den Peer-Gerät huet eng Route op déi Adress. Ob eppes äntwert entscheet de Listener. En Daemon deen un Loopback gebonnen ass ass nëmme vum Telefon selwer erreechbar; en Daemon deen un déi al Tunneladress gebonnen ass ka seng Bindung no enger Neiverbindung behalen och wann d'Adress op déi en sech gebonnen huet geännert huet.

Bindungsregele sinn gewéinlech SSH-Konfiguratioun: d'Lauschadress an de Port, a wien sech authentifiéiere kann. Op Android liewen déi Astellungen an der Konfiguratioun vun der App selwer, an den Eegentümer vum App-Prozess däerf vläicht keng privilegéiert Porte benotzen, also gëtt d'Desktop-Gewunnecht de Port 22 als root ze binden net onverännert iwwerdroen.

ListenAddress 10.90.0.4
Port 2222
AllowUsers alice

Dann ass et d'Erlaabnis um Wee selwer. En Konsument-VPN deen de Webbtrafic eraus gäre dréit muss iwwerhaapt keng erakomm Verbindungen zu senge Clienten erlaben; vill maachen dat net, well et ee Client géint en aneren ausgesetze géif. Wann de Peer d'Tunneladress vum Telefon néierens erreeche kann, läit de Problem an der Politik vum Service an net am Telefon.

Den Äntwertwee ass dee wou et meeschtens briechen

Ugeholl de Peer erreecht d'Tunneladress vum Telefon an den SYN kënnt un. Elo muss d'Äntwert dee selwechte Wee eraus, an dat ass eng Routing-Entscheedung am Telefon. Wann d'Äntwert iwwer Wi-Fi erausgeet well dat den Standardnetzwierk ass, gesäit de Peer eng Verbindung déi ni fäerdeg gëtt, wat genee wéi eng Firewall ausgesäit.

Android mécht dat méi komplex wéi en Desktop, well den Standardnetzwierk pro Prozess gewielt gëtt an duerch d'Politik vun der VPN-App ka geännert ginn. En VPN-Client kann nëmmen eng Lëscht vun erlaabten Appen route, also benotzt eng Server-App déi baussenzeg vun där Lëscht ass weiderhiren physikaleschen Netzwierk fir seng Äntwerten, während de Peer se duerch den Tunnel erwaart.

Eng App kann och seng eegen Sockets un e bestëmmten Netzwierk binden, wat den Standard iwwerschreift. Wann Dir e Rapport liest datt e Service vun enger Adress erreechbar ass an vun enger anerer net, ass dëst meeschtens de Mechanismus hannendrun.

Den VPN ëmgoen reparéiert keen erakommende Service

Déi populär Léisung, d'SSH-App vum VPN auszeschléissen sou datt säin Trafic net méi ëmgeleet gëtt, ass eng Korrektur fir deent géigendeelt Problem. Se hëlleft wann den Transport vun engem erausgängigen SSH-Client wéinst dem Tunnel ëmmer erëm bricht. Fir en gehostete Server ka se d'Äntwerten aus dem Tunnel eraushuelen deen de Peer benotzt, wat e partiellen Ausfall an en totalen ëmwandelt.

Datselwecht gëllt fir e ëffentleche Port um Router opzemaachen. Wann d'Ufuerderung ass datt een autoriséiert Gerät den Telefon iwwer den VPN erreecht, ass SSH dem Internet auszesetzen en anere Bedroungsmodell an net eng Reparatur.

Entscheet fir d'éischt d'Adress vum Service: d'LAN-Adress vum Telefon, seng Tunneladress oder en Endpunkt deen absichtlech virugeleet gëtt. All huet säin eegene Kontrakt wat Erreechbarkeet an Ausgesetztheet ugeet, an se ze mëschen ass de Wee wou en klengen Zougangsproblem en dauerhaft Lach gëtt.

Diagnostizéiert eng Richtung zur Zäit

Schreift véier Fakten op ier Dir d'Konfiguratioun ännert: d'Adress mat där de Peer sech verbënnt, den Zoustand vum Listener um Telefon, den App- a Benotzerkontext deen e besëtzt, an de Wee deen an all Richtung observéiert gëtt. E Rapport dee seet den VPN trennt SSH enthält keen dovun a kann e Transportproblem vum Client net vun engem onerreechbare Server ënnerscheeden.

adb shell ip -br addr
adb shell ip route get 10.90.0.9
nc -vz 10.90.0.4 2222

Maacht de Portcheck vum Peer aus, net vum Telefon, a liest déi ausféierlech Ausgab vum SSH-Client fir ze gesinn ob en virum oder nom TCP-Handshake feelt. E Socket deen ni verbënnt an eng ofgeleent Umeldung sinn ënnerschiddlech Etappen mat ënnerschiddlechen Verantwortlechen.

Halt d'Hostschlëssel-Verifikatioun an d'Kontosrestriktiounen intakt während Dir debuggt. Genau d'Aschränkung vum Listener an de erlaabten Benotzer mécht en erreechbare Server akzeptabel; se ze läschen fir eng Verbindung zum Lafen ze bréngen tauscht ee Problem géint e schlëmmeren. D'OpenSSH-Serverreferenz deckt d'Lausch- an Zougangskontrolle wann Är Android-Implementatioun déiselwecht Konfiguratiounsnummme befollegt.

Ähnlech Artikelen