SSH-dynamyske trochstjoering as SOCKS-proxy oer jo VPN
In applikaasje dy’t allinnich SOCKS praat, hat gjin proxy-einpunt op in gewoane VPN. Twa sprangen, ien loopback-harker en in namwersyk dat de SSH-tsjinner sels dwaan moat.
In applikaasje dy’t allinnich SOCKS praat, hat neat om mei te praten op in gewoane VPN, om’t de tunnel pakketten draacht en de applikaasje in proxy-einpunt wol. OpenSSH kin dat einpunt leverje as de eigner fan ’e tagong it tastiet, om’t dynamyske trochstjoering ien SSH-sesje yn in lokale proxy feroaret. Dêrnei binne der twa sprangen dy’t útinoar holden wurde moatte: de tunnel dy’t de SSH-host berikt, en de ferbining dy’t dy host dêrnei iepenet. It skieden fan dy twa ferklearret sawol wêrom’t de regeling wurket as wat se nea dwaan sil.
Wat de SSH-harker wol en net wurdt
Dynamyske trochstjoering lit de SSH-klient lokaal harkje en SOCKS4 of SOCKS5 prate mei alles wat ferbynt. Elke oanfraach neamt in bestimming en de SSH-tsjinner iepenet de ferbining fierder, dêrom kin it sykjen fan de bestimming oan de oare kant barre. Dat is TCP-trochstjoering op applikaasjenivo, net in VPN foar it hiele apparaat. It draacht gjin UDP-assosjaasje, gjin ICMP en neat foar applikaasjes dy’t proxy-ynstellingen folslein negearje. De sprong fan de SSH-tsjinner nei de applikaasje sit ek net yn jo tunnel, wat fan belang is as de bestimming allinnich ferkear fan bekende netwurken oannimt.
De betingsten binne echt: in rûte nei de SSH-host, in autorisearre akkount, in ferifiearre hostkaai fan ’e tsjinner en tastimming om troch te stjoeren. Net ien fan dy wurdt troch de proxy makke, en de lêste ûntbrekt meast it earst. Befêstigje alle fjouwer foardat jo eat oars debugge, om’t de flater fan ’e klient ôf itselde liket, hokker ek ûntbrekt.
Start it op loopback mei in eksplisite poarte
Kies in net brûkte lokale poarte en byn dy eksplisyt oan loopback ynstee fan it adres fuort te litten. De trije opsjes hjirûnder besteane elk om ien reden.
ssh -D 127.0.0.1:1080 -NT -o ControlPath=none -o ExitOnForwardFailure=yes \
[email protected]
-N slacht it fiere kommando oer en -T slacht de pseudoterminal oer, sadat de sesje allinnich bestiet om troch te stjoeren. ExitOnForwardFailure lit de klient ôfslute as de harker net makke wurde kin, ynstee fan te rinnen sûnder de trochstjoering dy’t jo fregen. ControlPath=none hâldt de sesje bûten in besteande multiplekse ferbining dy’t syn eigen trochstjoeringen tafoegje kin. Loopback hâldt de harker fan ’e LAN ôf, mar op in dielde masine is it gjin grins foar autorisaasje, om’t oare lokale prosessen der ek by kinne. De referinsje fan ’e OpenSSH-klient dokumintearret al dizze flags, en de loopback-warskôging folget út wat in harkjende socket is.
Stjoer nammen troch de proxy, net der omhinne
In SOCKS5-klient kin de bestimming sels oplosse of de proxy freegje dat te dwaan, en dy kar bepaalt hokker oplosser antwurdet. Mei socks5h stjoert curl de hostnamme troch de proxy, sadat it sykjen op de SSH-tsjinner bart. Mei gewoane socks5 lost de laptop earst op en reizget allinnich de ferbining, wat it doel stil útholt as de namme yntern is. De oanfraach hjirûnder rommet ek de list sûnder proxy op, sadat in oerfarmde NO_PROXY-wearde it net om ’e proxy liede kin.
curl -sS --noproxy '' --proxy socks5h://127.0.0.1:1080 https://app.corp.example/health
Sertifikaatferifikaasje en de eigen oanmelding fan ’e applikaasje jilde noch, om’t de proxy gjin fan beide ferfangt. Twa sykjen bliuwe: de laptop moat de SSH-host berikke fia it tastiene VPN- en DNS-paad, en de SSH-tsjinner moat de namme fan ’e applikaasje sels oplosse. It twadde is apart te testen foardat der ek ferkear troch de proxy giet.
ssh [email protected] getent hosts app.corp.example
Bewiis ien tastiene bestimming, slút dan de sesje
Test in bestimming dy’t it belied tastiet en ien dy’t it wegerje moat, om’t in wurkjende trochstjoering allinnich bewiist dat de harker wurket en neat mear. De applikaasje sjocht it boarne-adres dat de SSH-tsjinner kiest, en dat is net it tunneladres fan jo laptop. Dêr’t de fiere kant ferbiningen op boarne logt, is dat ferskil it earste dat kontrolearre wurde moat as in oanfraach wegere wurdt.
Stop de sesje fia it proses dat der eigner fan is, ynstee fan in net besibbe shell te deadzjen. Befêstigje dan dat de harker fuort is, om’t in poarte dy’t noch antwurdet in sesje is dy’t jo net echt sletten hawwe. Ferwiderje allinnich de proxy-ynstelling dy’t dizze oefening yntrodusearre, en lit de rest fan ’e applikaasjekonfiguraasje gewurde. In tafersjochleaze terminal mei in trochstjoerregel is gjin tsjinst, en in permaninte proxy hat in goedkarde libbenssyklus nedich, net in fergetten finster.
ss -ltn | grep 1080
Flaterse dy’t dizze regeling net oplosse kin
Guon symptomen wize direkt op ’e grinzen hjirboppe, en se betiid werkenne besparret in middei proxy-debuggen. De tabel keppelt wat jo sjogge oan wat it meast betsjut. Alles yn ’e lêste kolom is in ûntwerpfraach, net in konfiguraasjeflater.
| 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 |
De earste trije rigen binne dy’t minsken ferkeard diagnostearje, om’t elk in ferbiningspoging jout ynstee fan in flater oer de proxy sels. In namme dy’t op ’e laptop oplost seit neat oer de oplosser fan ’e tsjinner, en de flater wurdt ynstee lêzen as in sertifikaat- of tiidferrinprobleem. Applikaasjes allinnich mei UDP steane bûten it ûntwerp, net stikken der yn, en gjin ekstra ssh-opsje feroaret dat. De browser-rige is de gewoane herinnering dat proxy-ynstellingen per applikaasje jilde. De lêste rige is de reden dat de slutenkontrôle bestiet: in poarte dy’t noch harket betsjut dat no eat oars der eigner fan is.