O ro pé SOCKS proxy gbọdọ̀ ṣiṣẹ́ níbí tí àǹfààní nẹ́tíwọ́kì ti wà tẹ́lẹ̀. OpenSSH lè gbé olùgbọ́ náà sí ibòmíì pátápátá. Dídáwọ́lé àìlọ́tẹ̀sí láti ọ̀nà jíjìn ń ṣí pọ́ọ̀tì SOCKS lórí ẹ̀rọ tó jìnnà, ó sì ń bẹ̀rẹ̀ gbogbo ìsopọ̀ láti SSH client àdúgbò rẹ, èyí tó ń gbé ọ̀nà VPN tí a fọwọ́sí ti kọ̀mpútà àgbékèé rẹ. Pi gba proxy tí ó ní ààlà; kò jogún túnéẹ̀lì rẹ tàbí àwọn ẹ̀tọ́ rẹ.

Olùgbọ́ àti ẹ̀gbẹ́ tí ìsopọ̀ ti bẹ̀rẹ̀ lè yàtọ̀

ssh -D 1080 lasan ń ṣiṣẹ́ olùgbọ́ lórí ẹ̀rọ tirẹ, ó sì ń fi àwọn ìsopọ̀ ránṣẹ́ láti ibẹ̀. Dídáwọ́lé àìlọ́tẹ̀sí láti ọ̀nà jíjìn yí ìyẹn padà: olùgbọ́ máa ń farahàn lórí ẹ̀rọ tó jìnnà, gbogbo ìsopọ̀ tó bá gbà sì ni a ṣí láti ẹ̀gbẹ́ àdúgbò. ìwé ìtọ́nisọ́nà SSH client ṣàlàyé -R láìsí ibi-ìlọ̀ tí ó dúró ṣinṣin gẹ́gẹ́ bí ètò SOCKS4/5 yìí gan-an.

Àṣẹ tí a ṣètìlẹ́yìn fún láti kọ̀mpútà àgbékèé rí báyìí, tí a kà ákáǹtì, àwọn ẹ̀rọ àti pọ́ọ̀tì gẹ́gẹ́ bí ààyè ìdíje:

ssh -NT -S none -o ExitOnForwardFailure=yes \
  -o PermitRemoteOpen=app.corp.example:443 \
  -R 1080 [email protected]

Àwọn àlàyé mẹ́ta ń ṣe iṣẹ́ wíwúlò níbẹ̀. -S none ń pa ìpàdé mọ́ kúrò lọ́dọ̀ master ìṣàkóso tí a pín, ExitOnForwardFailure ń kùnà kíákíá dípò fí fi ọ́ sílẹ̀ pẹ̀lú ìpàdé tí ó ṣí ìdajì, PermitRemoteOpen sì ń dín ohun tí olùgbọ́ jíjìn lè dé kù. Lo ákáǹtì Pi tí a fọwọ́sí kí o sì ṣàyẹ̀wò kọ́kọ́ọ̀rọ̀ ẹ̀rọ náà kí o tó fi ohunkóhun nínú èyí kún un.

Ohun tí olùgbọ́ jíjìn ń fi hàn gan-an

Ṣàyẹ̀wò àwọn ìlànà ìdáwọ́lé ti server kí o tó gbẹ́kẹ̀ lé olùgbọ́. Pẹ̀lú GatewayPorts no ìdáwọ́lé jíjìn máa ń wà ní ìdè pẹ̀lú loopback, ìyẹn sì ni ìfarahàn tí o fẹ́. Server tí a ṣètò láti fipá mú ìdáwọ́lé wildcard ń fi pọ́ọ̀tì kan náà hàn lórí gbogbo ìntafẹ́èsì, èyí tó yí proxy àdáni padà sí ohun tí nẹ́tíwọ́kì àdúgbò lè dé.

loopback pẹ̀lú kì í ṣe ààlà fún olùlò kọ̀ọ̀kan. Ìlànà míràn lórí Pi lè sopọ̀ mọ́ 127.0.0.1:1080 bí ó bá mọ pọ́ọ̀tì náà, nítorí náà àwọn ákáǹtì àdúgbò Pi àti ohunkóhun tó ń ṣiṣẹ́ lórí rẹ̀ jẹ́ apá kan ètò àǹfààní rẹ. Èyí jẹ́ ìdí láti pa àkójọ ibi-ìlọ̀ mọ́ ní tóóró, kì í ṣe ìdí láti fò ìṣàyẹ̀wò ìlànà kọjá.

Pa ibi-ìlọ̀ tí a gbà láàyè mọ́ ní pàtàkì fún ohun èlò tí o ń gbìyànjú láti dé. Yípadà rẹ̀ sí ìdáwọ́lé tí kò ní ààlà kí ètò tí kò ní ìbáṣepọ̀ lè ṣiṣẹ́ ń gbòòrò ọ̀nà jáde ní àkókò jìnnà ju ìṣòro tí o bẹ̀rẹ̀ pẹ̀lú. Àkójọ ibi-ìlọ̀ tún ń ṣàkọsílẹ̀ ohun tí ìpàdé náà wà fún, èyí tó ń ràn ẹnikẹ́ni tó bá ṣàyẹ̀wò rẹ̀ lẹ́yìn lọ́wọ́. Kọ ọ́ sẹ́gbẹ̀ẹ́ ákáǹtì tí o lò.

Fi ohun èlò kan kọjá proxy

Ohun èlò lórí Pi tí ó yé proxy lè ṣe ìbéèrè náà lẹ́yìn náà. Àfikún socks5h ń fi orúkọ ibi-ìlọ̀ lé proxy lọ́wọ́, nítorí náà ìwádìí àti ìsopọ̀ máa ń ṣẹlẹ̀ ní ẹ̀gbẹ́ kọ̀mpútà àgbékèé, ó sì bá ibi-ìlọ̀ tí a dárúkọ nínú PermitRemoteOpen mu:

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

Pa ìmúdájú ìwé-ẹ̀rí déédéé àti ìjẹ́rìí ohun èlò fúnra rẹ̀ mọ́. Proxy ń yí ibi tí a ti ń dá ìsopọ̀ TCP padà; kò sọ iṣẹ́ tí kò ní ìjẹ́rìí di ààbò, kò sì yí ibi-ìparí tí a fọwọ́ sí fúnra rẹ̀ padà sí èyí tí a lè gbẹ́kẹ̀ lé.

Kọ̀mpútà àgbékèé ṣì nílò ọ̀nà tirẹ̀ àti àǹfààní olùyédè fún server SSH àti ohun èlò náà. Ìrìnàjò SSH client rẹ̀ gbọdọ̀ jẹ́ yíyàn nípasẹ̀ ìlànà VPN tí a fọwọ́sí, ìyàsọ́tọ̀ split-tunnel sì lè fi ìrìnàjò yẹn ránṣẹ́ ní ọ̀nà míràn ju èyí tí o dán wò.

Fi ọ̀nà náà hàn kí o sì pa á

Jẹ́rìí pé olùgbọ́ wà níbi tí o retí rẹ̀ àti pé ibi-ìlọ̀ tí a pinnu nìkan ló ń dáhùn:

$ ss -ltnp | grep 1080
LISTEN 0 128 127.0.0.1:1080 0.0.0.0:*
$ curl -sS -o /dev/null -w '%{http_code}\n' \
    --proxy socks5h://127.0.0.1:1080 https://app.corp.example/

ExitOnForwardFailure lè fi hàn pé a ti fi ìdáwọ́lé kalẹ̀, kò sì tún lè jẹ́rìí pé ìwọlé sínú ohun èlò ń yọrí sí rere ní ìsàlẹ̀. Dán ohun èlò wò, kì í ṣe pọ́ọ̀tì nìkan. Olùgbọ́ tí ó gbà tí ó sì kùnà gbogbo ìbéèrè sábà máa ń túmọ̀ sí pé orúkọ ibi-ìlọ̀ tàbí ọ̀nà kọ̀mpútà àgbékèé kò tọ̀nà, kì í ṣe pé túnéẹ̀lì kùnà.

Ètò yìí kì í gbé ju TCP lọ. UDP, ICMP àti àwọn ètò tí kò ka ètò proxy sí ni wọ́n wà ní òde rẹ̀, ìdáwọ́lé sì ń parí ní àkókò tí ìpàdé SSH parí. Dá ìpàdé yẹn dúró nígbà tí o bá parí kí o sì yọ ètò proxy tí o fi kún ohun èlò náà kúrò.

Fún àǹfààní tí ó wà pẹ́, lo ìforúkọsílẹ̀ tí ẹni tí ó ní nẹ́tíwọ́kì ṣètìlẹ́yìn fún tàbí ẹnubodè tí a ń ṣàkóso dípò. Proxy yíyípadà jẹ́ irinṣẹ́ tí kò tọ́ fún yíya àwọn ìhámọ́ ẹ̀rọ tàbí ohun-èlò VPN kúrò; bí a bá lò ó nínú wọn, ó kàn jẹ́ ọ̀nà ohun èlò kan tí a fọwọ́sí pẹ̀lú àwọn ààlà tí ó ṣe kedere.

Àwọn àpilẹ̀kọ tó jọra