Forrit sem talar aðeins SOCKS hefur ekkert til að tala við á venjulegu VPN, því göngin flytja pakka og forritið vill milliþjónaendapunkt. OpenSSH getur veitt þann endapunkt þegar eigandi aðgangsins leyfir það, því dynamísk áframsending breytir einni SSH-lotu í staðbundinn milliþjón. Síðan eru tvö stökk sem þarf að halda aðskildum: göngin sem ná til SSH-hýsisins, og tengingin sem sá hýsill opnar áfram. Að skilja þau að útskýrir bæði hvers vegna fyrirkomulagið virkar og hvað það mun aldrei gera.

Hvað SSH-hlustunin verður og hvað ekki

Dynamísk áframsending lætur SSH-biðlarann hlusta á staðnum og tala SOCKS4 eða SOCKS5 við allt sem tengist. Hver beiðni nefnir áfangastað og SSH-þjónninn opnar tenginguna áfram, þess vegna getur leitin að áfangastaðnum farið fram hinum megin. Þetta er TCP-áframsending á forritastigi, ekki VPN fyrir allt tækið. Hún flytur enga UDP-samtengingu, ekkert ICMP og ekkert fyrir forrit sem hunsa milliþjónastillingar algjörlega. Stökkið frá SSH-þjóninum til forritsins er líka ekki inni í göngunum þínum, sem skiptir máli þegar áfangastaðurinn tekur aðeins við umferð frá þekktum netum.

Forsendurnar eru raunverulegar: leið að SSH-hýsinum, heimilaður reikningur, staðfestur hýsillykill þjónsins og leyfi til að senda áfram. Ekkert þeirra er búið til af milliþjóninum, og hið síðasta vantar yfirleitt fyrst. Staðfestu öll fjögur áður en þú greinir eitthvað annað, því frá biðlaranum lítur bilunin eins út, hvað sem vantar.

Ræstu það á loopback með skýrum porti

Veldu ónotað staðbundið port og bindu það skýrt við loopback í stað þess að sleppa vistfanginu. Þrír valkostirnir hér að neðan eru hver fyrir sig af einni ástæðu.

ssh -D 127.0.0.1:1080 -NT -o ControlPath=none -o ExitOnForwardFailure=yes \
  [email protected]

-N sleppir fjartengdu skipuninni og -T sleppir gerviskjá, svo lotan er aðeins til að senda áfram. ExitOnForwardFailure lætur biðlarann hætta þegar ekki er hægt að búa til hlustunina, í stað þess að keyra án áframsendingarinnar sem þú baðst um. ControlPath=none heldur lotunni utan við fyrirliggjandi margfaltengingu sem gæti bætt við sínum eigin áframsendingum. Loopback heldur hlustuninni utan LAN, en á sameiginlegri vél er það ekki heimildarmörk, því aðrar staðbundnar ferlar komast líka að henni. Tilvísun OpenSSH-biðlarans skjalfestir alla þessa rofa, og viðvörunin um loopback leiðir af því hvað hlustandi socket er.

Sendu nöfn í gegnum milliþjóninn, ekki í kringum hann

SOCKS5-biðlari getur leyst áfangastaðinn sjálfur eða beðið milliþjóninn um það, og það val ræður því hvaða leysir svarar. Með socks5h sendir curl hýsilnafnið í gegnum milliþjóninn, svo leitin fer fram á SSH-þjóninum. Með venjulegu socks5 leysir fartölvan fyrst og aðeins tengingin ferðast, sem eyðileggur hljóðlega tilganginn þegar nafnið er innra. Beiðnin hér að neðan hreinsar líka listann án milliþjóns, svo arfkennt NO_PROXY gildi getur ekki beint henni fram hjá milliþjóninum.

curl -sS --noproxy '' --proxy socks5h://127.0.0.1:1080 https://app.corp.example/health

Staðfesting skírteinis og innskráning forritsins sjálfs gilda áfram, því milliþjónninn kemur í stað hvors tveggja. Tvær leitir standa eftir: fartölvan verður að ná SSH-hýsinum um leyfða VPN- og DNS-leið, og SSH-þjónninn verður að leysa nafn forritsins sjálfur. Hægt er að prófa hina síðari eina sér áður en nokkur umferð fer í gegnum milliþjóninn.

ssh [email protected] getent hosts app.corp.example

Sannaðu einn leyfðan áfangastað og lokaðu svo lotunni

Prófaðu áfangastað sem stefnan leyfir og einn sem hún ætti að hafna, því virk áframsending sannar aðeins að hlustunin virki og ekkert meira. Forritið sér upprunavistfangið sem SSH-þjónninn velur, og það er ekki gönguvistfang fartölvunnar þinnar. Þar sem fjarlægi endinn skráir tengingar eftir uppruna, er sá munur fyrstur til að skoða þegar beiðni er hafnað.

Stöðvaðu lotuna í gegnum ferlið sem á hana, í stað þess að drepa ótengda skel. Staðfestu svo að hlustunin sé farin, því port sem svarar enn er lota sem þú lokaðir í raun ekki. Fjarlægðu aðeins milliþjónastillinguna sem þessi æfing kynnti, og láttu restina af stillingum forritsins í friði. Ómannaður skjár sem heldur áframsendingarreglu er ekki þjónusta, og varanlegur milliþjónn þarf samþykkt lífsferli, ekki gleymdan glugga.

ss -ltn | grep 1080

Bilanir sem þetta fyrirkomulag getur ekki lagað

Sum einkenni benda beint á takmörkin hér að ofan, og að þekkja þau snemma sparar síðdegi í milliþjónagreiningu. Taflan tengir það sem þú sérð við það sem það þýðir venjulega. Hvað sem er í síðasta dálki er hönnunarspurning, ekki stillingarvilla.

What you seeWhat it usually meansWhere to look
The app connects and nothing followsIt ignores proxy settings entirelyIts own network settings, not the SSH session
A name resolution error for the destinationThe SSH server cannot resolve itServer resolver and search domains
A UDP-only application failsDynamic forwarding carries TCP onlyThis arrangement cannot serve it
curl works, the browser does notThe browser is not using the socks5h endpointBrowser proxy configuration
The listener answers after the session endedAnother process owns port 1080The ss output, then the owning process

Fyrstu þrjár raðirnar eru þær sem fólk greinir rangt, því hver þeirra framleiðir tengingartilraun í stað villu um milliþjóninn sjálfan. Nafn sem leysist á fartölvunni segir ekkert um leysi þjónsins, og bilunin er frekar lesin sem vandamál með skírteini eða tímamörk. Forrit sem nota aðeins UDP standa utan hönnunarinnar, ekki brotin innan hennar, og enginn auka ssh-valkostur breytir því. Vafraröðin er venjulega áminningin um að milliþjónastillingar gilda fyrir hvert forrit. Síðasta röðin er ástæðan fyrir því að lokaprófið er til: port sem hlustar enn þýðir að eitthvað annað á það núna.

Tengdir greinar