Nid oes gan ap sy’n siarad SOCKS yn unig unrhyw beth i siarad ag ef ar VPN cyffredin, oherwydd mae’r tiwnel yn cario pecynnau ac mae’r ap eisiau pwynt terfyn procsi. Gall OpenSSH ddarparu’r pwynt terfyn hwnnw pan fydd perchennog y mynediad yn caniatáu, gan fod pyrchymoleiddio dynamig yn troi un sesiwn SSH yn brocsi lleol. Yna mae dau naid i’w cadw’n glir: y tiwnel sy’n cyrraedd gwesteiwr SSH, a’r cysylltiad y mae’r gwesteiwr hwnnw yn ei agor wedyn. Mae eu gwahanu yn esbonio pam mae’r trefniant yn gweithio a beth na fydd byth yn ei wneud.

Beth yw’r gwrandäwr SSH a beth nad yw

Mae pyrchymoleiddio dynamig yn gwneud i glient SSH wrando’n lleol a siarad SOCKS4 neu SOCKS5 â phopeth sy’n cysylltu. Mae pob cais yn enwi cyrchfan ac mae’r gweinydd SSH yn agor y cysylltiad ymlaen, a dyna pam y gall chwiliad y gyrchfan ddigwydd ar yr ochr bell. Pyrchymoleiddio TCP ar lefel ap yw hwn, nid VPN ar gyfer y ddyfais gyfan. Nid yw’n cario unrhyw gysylltiad UDP, nac ICMP, nac unrhyw beth i apiau sy’n anwybyddu gosodiadau procsi’n llwyr. Nid yw’r naid o’r gweinydd SSH i’r ap ychwaith y tu mewn i’ch tiwnel, sy’n bwysig pan fo’r gyrchfan yn derbyn traffig yn unig o rwydweithiau hysbys.

Mae’r rhagofynion yn real: llwybr i westeiwr SSH, cyfrif awdurdodedig, allwedd gwesteiwr gweinydd wedi’i dilysu, a chaniatâd i anfon ymlaen. Nid yw’r procsi yn creu yr un ohonynt, a’r olaf fel arfer yw’r cyntaf sydd ar goll. Cadarnhewch bob un o’r pedwar cyn datrys unrhyw beth arall, oherwydd mae’r methiant yn edrych yr un fath o’r cleient pa un bynnag sydd ar goll.

Dechreuwch ef ar loopback gyda phorthladd penodol

Dewiswch borthladd lleol nas defnyddiwyd a’i rwymo’n benodol i loopback yn hytrach na gadael y cyfeiriad allan. Mae’r tri opsiwn isod yn bodoli pob un am un rheswm.

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

Mae -N yn hepgor y gorchymyn pell ac mae -T yn hepgor y ffug-derfynell, felly dim ond i anfon ymlaen y mae’r sesiwn yn bodoli. Mae ExitOnForwardFailure yn gwneud i’r cleient adael pan na ellir creu’r gwrandäwr, yn lle rhedeg heb yr anfon ymlaen a ofynasoch amdano. Mae ControlPath=none yn cadw’r sesiwn allan o gysylltiad amlblethol sy’n bodoli eisoes a allai ychwanegu ei anfoniadau ymlaen ei hun. Mae loopback yn cadw’r gwrandäwr oddi ar y LAN, ond nid yw’n ffin awdurdodi ar beiriant a rennir, oherwydd gall prosesau lleol eraill gyrraedd ato hefyd. Mae cyfeirlyfr cleient OpenSSH yn dogfennu’r holl fflagiau hyn, ac mae’r rhybudd loopback yn dilyn o’r hyn yw soced sy’n gwrando.

Anfonwch enwau drwy’r procsi, nid o’i amgylch

Gall cleient SOCKS5 ddatrys y gyrchfan ei hun neu ofyn i’r procsi wneud hynny, a’r dewis hwnnw sy’n penderfynu pa ddatryswr sy’n ateb. Gyda socks5h mae curl yn anfon yr enw gwesteiwr drwy’r procsi, felly mae’r chwiliad yn digwydd ar y gweinydd SSH. Gyda socks5 plaen mae’r gliniadur yn datrys yn gyntaf a dim ond y cysylltiad sy’n teithio, sy’n tanselio’r pwynt yn dawel pan fo’r enw’n fewnol. Mae’r cais isod hefyd yn clirio’r rhestr dim-procsi, felly ni all gwerth NO_PROXY a etifeddwyd ei lwybr o amgylch y procsi.

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

Mae dilysu tystysgrif a mewngofnodi’r ap ei hun yn dal i fod yn berthnasol, oherwydd nid yw’r procsi yn disodli’r naill na’r llall. Mae dau chwiliad yn parhau: rhaid i’r gliniadur gyrraedd gwesteiwr SSH drwy’r llwybr VPN a DNS a ganiateir, a rhaid i’r gweinydd SSH ddatrys enw’r ap ei hun. Gellir profi’r ail ar ei ben ei hun cyn i unrhyw draffig fynd drwy’r procsi.

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

Profwch un gyrchfan a ganiateir, yna caewch y sesiwn

Profwch gyrchfan y mae’r polisi yn ei chaniatáu ac un y dylai ei gwrthod, oherwydd dim ond bod y gwrandäwr yn gweithio y mae anfon ymlaen sy’n gweithio yn ei brofi, a dim mwy. Mae’r ap yn gweld y cyfeiriad ffynhonnell y mae’r gweinydd SSH yn ei ddewis, ac nid dyma gyfeiriad tiwnel eich gliniadur. Lle mae’r pen pell yn cofnodi cysylltiadau yn ôl ffynhonnell, y gwahaniaeth hwnnw yw’r peth cyntaf i’w wirio pan wrthodir cais.

Ataliwch y sesiwn drwy’r broses sy’n berchen arni yn hytrach na lladd cragen ddigyswllt. Yna cadarnhewch fod y gwrandäwr wedi mynd, oherwydd mae porthladd sy’n dal i ateb yn sesiwn nad ydych wedi’i chau mewn gwirionedd. Tynnwch yn unig y gosodiad procsi a gyflwynodd yr ymarfer hwn, a gadewch weddill ffurfweddiad yr ap yn llonydd. Nid yw terfynell heb neb yn gofalu amdani sy’n dal rheol anfon ymlaen yn wasanaeth, ac mae angen cylch oes cymeradwy ar brocsi parhaol, nid ffenestr wedi’i hanghofio.

ss -ltn | grep 1080

Methiannau na all y trefniant hwn eu trwsio

Mae rhai symptomau’n pwyntio’n syth at y terfynau uchod, ac mae eu hadnabod yn gynnar yn arbed prynhawn o ddatrys problemau procsi. Mae’r tabl yn cysylltu’r hyn a welwch â’r hyn y mae fel arfer yn ei olygu. Mae unrhyw beth yn y golofn olaf yn gwestiwn dylunio, nid yn gamgymeriad ffurfweddu.

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

Y tair rhes gyntaf yw’r rhai y mae pobl yn eu diagnosiso’n anghywir, oherwydd mae pob un yn cynhyrchu ymgais i gysylltu yn hytrach na gwall am y procsi ei hun. Nid yw enw sy’n datrys ar y gliniadur yn dweud dim am ddatryswr y gweinydd, ac mae’r methiant yn cael ei ddarllen fel problem tystysgrif neu derfyn amser yn lle hynny. Mae apiau UDP yn unig yn sefyll y tu allan i’r dyluniad, nid yn doredig y tu mewn iddo, ac nid yw unrhyw opsiwn ssh ychwanegol yn newid hynny. Y rhes borwyr yw’r nodyn arferol bod gosodiadau procsi ar gyfer pob ap ar wahân. Y rhes olaf yw’r rheswm dros y gwiriad cau: mae porthladd sy’n dal i wrando yn golygu bod rhywbeth arall yn berchen arno nawr.

Erthyglau cysylltiedig