Dynamesch SSH-Weiderleedung als SOCKS-Proxy iwwer Ären VPN
Eng App, déi nëmme SOCKS schwätzt, huet keen Proxy-Endpunkt op engem gewéinleche VPN. Zwee Spréng, een eenzegen Loopback-Lauschterer an eng Numm-Opléisung, déi den SSH-Server selwer muss maachen.
Eng Applikatioun, déi nëmme SOCKS schwätzt, huet näischt ze schwätzen op engem gewéinleche VPN, well den Tunnel Pakete bréngt an d’App en Proxy-Endpunkt wëll. OpenSSH kann deen Endpunkt liwweren, wann den Zougangsbesëtzer et erlaabt, well dynamesch Weiderleedung eng SSH-Sessioun an e lokale Proxy verwandelt. Duerno sinn et zwee Spréng, déi een auserneen halen muss: den Tunnel, deen den SSH-Host erreecht, an d’Verbindung, déi deen Host duerno opmécht. Hir Trennung erkläert souwuel firwat d’Arrangement funktionéiert wéi och wat et ni wäert maachen.
Wat den SSH-Lauschterer gëtt an wat net
Dynamesch Weiderleedung bréngt den SSH-Client dozou, lokal ze lauschteren an SOCKS4 oder SOCKS5 mat allem ze schwätzen, wat sech verbënnt. All Ufro nennt en Zil an den SSH-Server mécht d’Verbindung weider op, dofir kann d’Sich no dem Zil op der anerer Säit geschéien. Dat ass TCP-Weiderleedung op Applikatiounsniveau, keen VPN fir dat ganzt Gerät. Et bréngt keng UDP-Associatioun, keen ICMP an näischt fir Applikatiounen, déi Proxy-Astellungen komplett ignoréieren. De Sprong vum SSH-Server zur Applikatioun ass och net an Ärem Tunnel, wat zielt, wann d’Zil nëmme Verkéier aus bekannten Netzwierker unhëlt.
D’Virbedingungen si reell: eng Route zum SSH-Host, en autoriséierte Kont, e gepréifte Server-Hostschlëssel an d’Erlaabnis weiderzeleeden. Keen dovun gëtt vum Proxy erstallt, an de leschte feelt meeschtens als éischten. Bestätegt all véier, ier Dir eppes anescht debuggt, well vum Client aus gesäit de Fehler gläich aus, wien och feelt.
Start en um Loopback mat engem explizitte Port
Wielt en onbenotzten lokale Port a bënnt en explizitt un de Loopback, amplaz d’Adress ewechzeloossen. Déi dräi Optiounen hei drënner ginn et all aus engem Grond.
ssh -D 127.0.0.1:1080 -NT -o ControlPath=none -o ExitOnForwardFailure=yes \
[email protected]
-N iwwerspréngt de Fernkommando an -T iwwerspréngt de Pseudoterminal, sou datt d’Sessioun nëmme fir Weiderleeden existéiert. ExitOnForwardFailure léisst de Client erausgoen, wann de Lauschterer net ka geschaf ginn, amplaz ouni déi gefrot Weiderleedung ze lafen. ControlPath=none hält d’Sessioun aus enger bestehender multiplexer Verbindung eraus, déi hir eege Weiderleedungen derbäisetze kéint. Loopback hält de Lauschterer aus dem LAN, awer op enger gedeelter Maschinn ass et keng Autorisatiounsgrenz, well aner lokal Prozesser och dru kommmen. D’Referenz vum OpenSSH-Client dokumentéiert all dës Fahnen, an d’Loopback-Warnung follegt aus deem, wat en lauschterende Socket ass.
Schéckt Nimm duerch de Proxy, net derlaanscht
En SOCKS5-Client kann d’Zil selwer opléisen oder de Proxy froen, et ze maachen, an déi Wiel entscheet, wéi en Opléiser äntwert. Mat socks5h schéckt curl den Hostnumm duerch de Proxy, sou datt d’Sich um SSH-Server geschitt. Mat einfachem socks5 léist den Laptop als éischten op an et reest nëmmen d’Verbindung, wat den Zweck stëll ënnergrueft, wann den Numm intern ass. D’Ufro hei drënner eedelt och d’Lëscht ouni Proxy, sou datt en ierflichte Wäert NO_PROXY se net ëm de Proxy erëmféiere kann.
curl -sS --noproxy '' --proxy socks5h://127.0.0.1:1080 https://app.corp.example/health
D’Zertifikatsprüfung an d’Umelde vun der Applikatioun selwer gëllen nach, well de Proxy keng vun deenen zwou ersetzt. Et bleiwen zwou Sichen: den Laptop muss den SSH-Host iwwer den erlaabte VPN- an DNS-Wee erreechen, an den SSH-Server muss den Numm vun der Applikatioun selwer opléisen. Déi zweet ka separat getest ginn, ier iergendeen Verkéier duerch de Proxy geet.
ssh [email protected] getent hosts app.corp.example
Beweist een erlaabt Zil a schléisst dann d’Sessioun
Test e Zil, dat d’Politik erlaabt, an engem, dat se soll ofleenen, well eng funktionéierend Weiderleedung nëmme beweist, datt de Lauschterer funktionéiert, an näischt méi. D’Applikatioun gesäit d’Quelladress, déi den SSH-Server auswielt, an dat ass net d’Tunneladress vun Ärem Laptop. Wou déi aner Säit Verbindungen no Quell loggt, ass deen Ënnerscheed d’éischt Saach, déi ze préiwen ass, wann eng Ufro ofgeleent gëtt.
Stoppt d’Sessioun iwwer de Prozess, deem se gehéiert, amplaz eng onverbonnen Shell ëmzebréngen. Bestätegt duerno, datt de Lauschterer fort ass, well en Port, deen nach äntwert, eng Sessioun ass, déi Dir net wierklech zougemaach hutt. Huet nëmmen d’Proxy-Astellung ewech, déi dës Übung agefouert huet, a loosst de Rescht vun der Applikatiounskonfiguratioun a Rou. En oniwwerwaachten Terminal mat enger Weiderleedungsregel ass kee Service, an e permanente Proxy brauch en ugehollene Liewenszyklus, net eng vergiessen Fënster.
ss -ltn | grep 1080
Feeler, déi dës Arrangement net ka behiewen
Verschidde Symptomer weisen direkt op d’Grenzen uewen, an se fréi ze erkennen spuert en Nomëtteg Proxy-Debuggen. D’Tabell verbënnt dat, wat Dir gesitt, mat deem, wat et meeschtens bedeit. Alles an der leschter Kolonn ass eng Designfro, keen Konfiguratiounsfeeler.
| What you see | What it usually means | Where to look |
|---|---|---|
| The app connects and nothing follows | It ignores proxy settings entirely | Its own network settings, not the SSH session |
| A name resolution error for the destination | The SSH server cannot resolve it | Server resolver and search domains |
| A UDP-only application fails | Dynamic forwarding carries TCP only | This arrangement cannot serve it |
| curl works, the browser does not | The browser is not using the socks5h endpoint | Browser proxy configuration |
| The listener answers after the session ended | Another process owns port 1080 | The ss output, then the owning process |
Déi éischt dräi Zeile sinn déi, déi d’Leit falsch diagnostizéieren, well jiddweree vun hinne en Verbindungsversuch mécht amplaz engem Feeler iwwer de Proxy selwer. En Numm, deen um Laptop opgeléist gëtt, seet näischt iwwer den Opléiser vum Server, an de Feeler gëtt amplaz als Zertifikats- oder Zäitlimitproblem gelies. Applikatiounen nëmme mat UDP stinn ausserhalb vum Design, net bannen kaputt, a keng zousätzlech ssh-Optioun ännert dat. D’Browserzeil ass déi gewéinlech Erënnerung, datt Proxy-Astellungen pro Applikatioun gëllen. Déi lescht Zeil ass de Grond fir d’Schlusskontroll: en Port, deen nach lauschtert, bedeit, datt elo eppes anescht en huet.