Uelekezaji wa SSH unaobadilika kama proksi ya SOCKS juu ya VPN yako
Programu inayozungumza SOCKS pekee haina mahali pa proksi kwenye VPN ya kawaida. Miruko miwili, msikilizaji mmoja wa loopback na utafutaji mmoja wa jina ambao seva ya SSH lazima ifanye yenyewe.
Programu inayozungumza SOCKS pekee haina la kuzungumza nalo kwenye VPN ya kawaida, kwa sababu handaki hubeba pakiti na programu inataka mahali pa mwisho pa proksi. OpenSSH inaweza kutoa mahali hapo mmiliki wa ufikiaji anaporuhusu, kwa sababu uelekezaji unaobadilika hubadilisha kikao kimoja cha SSH kuwa proksi ya ndani. Kisha kuna miruko miwili inayopaswa kutenganishwa: handaki inayofikia mwenyeji wa SSH na muunganisho ambao mwenyeji huyo hufungua baadaye. Kuwatenganisha kunaeleza kwa nini mpango huu hufanya kazi na kile ambao hautawahi kufanya.
Msikilizaji wa SSH anakuwa nini na hawi nini
Uelekezaji unaobadilika hulazimisha mteja wa SSH kusikiliza ndani na kuzungumza SOCKS4 au SOCKS5 na kila kitu kinachounganishwa. Kila ombi hutaja lengwa na seva ya SSH hufungua muunganisho unaofuata, ndiyo sababu utafutaji wa lengwa unaweza kufanyika upande wa mbali. Huu ni uelekezaji wa TCP katika ngazi ya programu, si VPN ya kifaa kizima. Haubebi muungano wowote wa UDP, wala ICMP, wala kitu kwa programu zinazopuuza kabisa mipangilio ya proksi. Hata mruko kutoka seva ya SSH hadi programu hauko ndani ya handaki yako, jambo ambalo ni muhimu lengwa linapokubali trafiki kutoka mitandao inayojulikana pekee.
Masharti ya awali ni ya kweli: njia ya kufikia mwenyeji wa SSH, akaunti iliyoidhinishwa, ufunguo wa mwenyeji wa seva uliothibitishwa na ruhusa ya kuelekeza. Hakuna moja wapo ambayo proksi huizalisha, na ya mwisho kwa kawaida ndiyo ya kwanza kukosekana. Thibitisha yote manne kabla ya kuchunguza kitu kingine chochote, kwa sababu kwa upande wa mteja kushindwa huonekana sawa, yoyote inayokosekana.
Ianzishe kwenye loopback ukiwa na bandari bayana
Chagua bandari ya ndani isiyotumika na uifunge kwa bayana kwenye loopback badala ya kuacha anwani. Chaguo tatu zilizo hapa chini kila moja lipo kwa sababu moja.
ssh -D 127.0.0.1:1080 -NT -o ControlPath=none -o ExitOnForwardFailure=yes \
[email protected]
-N huruka amri ya mbali na -T huruka terminali bandia, kwa hiyo kikao kipo kwa ajili ya uelekezaji pekee. ExitOnForwardFailure humfanya mteja atoke wakati msikilizaji hawezi kuundwa, badala ya kufanya kazi bila uelekezaji uliouomba. ControlPath=none huiweka kikao nje ya muunganisho uliopo wa mchanganyiko ambao unaweza kuongeza uelekezaji wake. Loopback huiweka msikilizaji nje ya LAN, lakini kwenye mashine inayoshirikiwa hii si mpaka wa idhini, kwa sababu michakato mingine ya ndani pia inaweza kuifikia. Marejeleo ya mteja wa OpenSSH huandika alama hizi zote, na tahadhari ya loopback inatokana na kile soketi inayosikiliza ilivyo.
Tuma majina kupitia proksi, si kuzunguka proksi
Mteja wa SOCKS5 anaweza kutatua lengwa yeye mwenyewe au kumwomba proksi afanye hivyo, na chaguo hilo huamua kitatuzi kipi kitajibu. Kwa socks5h curl hutuma jina la mwenyeji kupitia proksi, kwa hiyo utafutaji hufanyika kwenye seva ya SSH. Kwa socks5 ya kawaida kompyuta mpakato hutatua kwanza na muunganisho pekee husafiri, jambo ambalo huharibu kusudi kimya wakati jina ni la ndani. Ombi lililo hapa chini pia huondoa orodha isiyo na proksi, kwa hiyo thamani ya NO_PROXY iliyorithiwa haiwezi kuiongoza kuzunguka proksi.
curl -sS --noproxy '' --proxy socks5h://127.0.0.1:1080 https://app.corp.example/health
Uthibitishaji wa cheti na uingiaji wa programu yenyewe bado unatumika, kwa sababu proksi haibadilishi kimoja wapo. Utafutaji mbili zimesalia: kompyuta mpakato lazima ifikie mwenyeji wa SSH kupitia njia iliyoruhusiwa ya VPN na DNS, na seva ya SSH lazima itatue jina la programu yenyewe. Ya pili inaweza kujaribiwa peke yake kabla trafiki yoyote kupita kwenye proksi.
ssh [email protected] getent hosts app.corp.example
Thibitisha lengwa moja lililoruhusiwa, kisha funga kikao
Jaribu lengwa ambalo sera inaruhusu na lingine ambalo inapaswa kulikataa, kwa sababu uelekezaji unaofanya kazi huthibitisha tu kwamba msikilizaji anafanya kazi na si zaidi. Programu huona anwani ya chanzo ambayo seva ya SSH huchagua, na hiyo si anwani ya handaki ya kompyuta yako mpakato. Mahali upande wa mbali unarekodi miunganisho kwa chanzo, tofauti hiyo ndiyo ya kwanza kuangaliwa ombi linapokataliwa.
Simamisha kikao kupitia mchakato unaokimiliki, badala ya kuua ganda lisilohusiana. Kisha thibitisha msikilizaji ameondoka, kwa sababu bandari inayojibu bado ni kikao ambacho hukukifunga kweli. Ondoa mipangilio ya proksi pekee ambayo zoezi hili lilileta, na uache mipangilio mingine ya programu kama ilivyo. Terminali isiyosimamiwa inayoshikilia kanuni ya uelekezaji si huduma, na proksi ya kudumu inahitaji mzunguko wa maisha ulioidhinishwa, si dirisha lililosahaulika.
ss -ltn | grep 1080
Kushindwa ambako mpango huu hauwezi kurekebisha
Baadhi ya dalili zinaelekeza moja kwa moja kwenye mipaka iliyo juu, na kuzitambua mapema huokoa mchana wa kuchunguza proksi. Jedwali huunganisha unachokiona na kile inachomaanisha kwa kawaida. Kitu chochote kwenye safu ya mwisho ni swali la ubunifu, si kosa la mipangilio.
| 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 |
Safu tatu za kwanza ni zile ambazo watu huzitambua vibaya, kwa sababu kila moja huzalisha jaribio la muunganisho badala ya kosa kuhusu proksi yenyewe. Jina linalotatuliwa kwenye kompyuta mpakato halisemi kitu kuhusu kitatuzi cha seva, na kushindwa husomwa badala yake kama tatizo la cheti au muda. Programu zinazotumia UDP pekee zinasimama nje ya ubunifu, si zimevunjika ndani yake, na chaguo lolote la ziada la ssh halibadilishi hilo. Safu ya kivinjari ni ukumbusho wa kawaida kwamba mipangilio ya proksi ni kwa kila programu. Safu ya mwisho ndiyo sababu ukaguzi wa kufunga upo: bandari inayosikiliza bado inamaanisha kitu kingine sasa ndicho kinachomiliki.