SOCKS bakarrik hitz egiten duen aplikazio batek ez du zerekin hitz egin VPN arrunt batean, tunelek paketeak eramaten baititu eta aplikazioak proxi amaiera bat nahi duelako. OpenSSH-k amaiera hori eman dezake sarbidearen jabeak baimena ematen duenean, birbidalketa dinamikoak SSH saio bat proxi lokal bihurtzen baitu. Ondoren bi jauzi bereiztu behar dira: SSH ostalarira iristen den tunela eta ostalari horrek geroago irekitzen duen konexioa. Haiek bereizteak azaltzen du zergatik funtzionatzen duen antolamenduak eta zer ez duen inoiz egingo.

SSH entzulea zer bihurtzen den eta zer ez

Birbidalketa dinamikoak SSH bezeroa lokalean entzutera behartzen du eta SOCKS4 edo SOCKS5 hitz egitera konektatzen den guztiarekin. Eskaera bakoitzak helmuga bat izendatzen du eta SSH zerbitzariak hurrengo konexioa irekitzen du, horregatik helmugaren bilaketa urrutiko aldean gerta daiteke. Hori aplikazio mailako TCP birbidalketa da, ez gailu osorako VPN bat. Ez du UDP loturarik, ez ICMPrik, ez ezer proxiren ezarpenak erabat baztertzen dituzten aplikazioentzat. SSH zerbitzaritik aplikaziora arteko jauzia ere ez dago zure tunelaren barruan, eta hori garrantzitsua da helmugak sare ezagunetatik bakarrik onartzen duenean trafikoa.

Aurrebaldintzak benetakoak dira: SSH ostalarirako ibilbide bat, baimendutako kontu bat, egiaztatutako zerbitzariaren ostalari gakoa eta birbidaltzeko baimena. Horietako bat ere ez du proxik sortzen, eta azkena izan ohi da lehen falta dena. Egiaztatu laurak beste edozer araztu aurretik, bezeroaren aldetik hutsak berdin ikusten baita, falta dena edozein dela ere.

Abiarazi loopbackean portu esplizitu batekin

Aukeratu erabili gabeko portu lokal bat eta lotu esplizituki loopbackera, helbidea hutsik utzi beharrean. Beheko hiru aukerek bakoitzak arrazoi bat du.

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

-N aukerak urrutiko komandoa saltatzen du eta -T aukerak pseudo-terminala saltatzen du, beraz saioa birbidaltzeko bakarrik dago. ExitOnForwardFailure aukerak bezeroa irtetera behartzen du entzulea sortu ezin denean, eskatu duzun birbidalketarik gabe funtzionatu beharrean. ControlPath=none aukerak saioa lehendik dagoen konexio multiplexatu batetik kanpo mantentzen du, honek bere birbidalketak gehi bailitzake. Loopbackek entzulea LANetik kanpo mantentzen du, baina partekatutako makinan ez da autorizazio muga bat, tokiko beste prozesu batzuk ere irits baitaitezke. OpenSSH bezeroaren erreferentziak dokumentatzen ditu aukera guzti hauek, eta loopback abisua entzuten ari den socket bat zer denetik dator.

Bidali izenak proxitik barrena, ez haren inguruan

SOCKS5 bezero batek helmuga bera ebatz dezake edo proxiri hori egiteko eskatu, eta aukera horrek zehazten du zein ebazlek erantzungo duen. socks5h erabiliz, curl-ek ostalariaren izena proxitik bidaltzen du, beraz bilaketa SSH zerbitzarian gertatzen da. socks5 soilarekin, eramangarriak lehenengo ebazten du eta konexioa bakarrik doa, eta horrek isilka zapuzten du helburua izena barnekoa denean. Beheko eskaerak proxi gabeko zerrenda ere garbitzen du, beraz heredatutako NO_PROXY balio batek ezin du proxitik kanpora bideratu.

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

Ziurtagiriaren egiaztapena eta aplikazioaren beraren saio-hasiera oraindik aplikatzen dira, proxiek ez baitu bat ere ordezkatzen. Bi bilaketa geratzen dira: eramangarriak SSH ostalarira iritsi behar du baimendutako VPN eta DNS bidearen bidez, eta SSH zerbitzariak aplikazioaren izena berak ebatzi behar du. Bigarrena bere kabuz proba daiteke trafikorik proxitik pasa aurretik.

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

Frogatu baimendutako helmuga bat, eta gero itxi saioa

Probatu politikak onartzen duen helmuga bat eta ukatu beharko lukeen bat, birbidalketa lan egiteak entzulea lan egiten ari dela frogatzen baitu eta besterik ez. Aplikazioak SSH zerbitzariak aukeratzen duen iturri helbidea ikusten du, eta hori ez da zure eramangarriaren tunel helbidea. Urrutiko aldeak konexioak iturriaren arabera erregistratzen dituenean, alde hori da eskaera bat baztertzen denean lehenik begiratu beharrekoa.

Gelditu saioa berau duen prozesuaren bidez, erlaziorik gabeko shell bat hiltzen ordez. Gero egiaztatu entzulea desagertu dela, oraindik erantzuten duen portu bat benetan itxi ez duzun saio bat baita. Kendu ariketa honek sartu zuen proxi ezarpena soilik, eta utzi aplikazioaren gainerako konfigurazioa bakean. Birbidalketa arau bat daraman terminal gainbegiratu gabea ez da zerbitzu bat, eta proxi iraunkor batek bizitza-ziklo onartua behar du, ez ahaztutako leiho bat.

ss -ltn | grep 1080

Antolamendu honek konpondu ezin dituen hutsegiteak

Sintoma batzuek goiko mugei zuzenean seinalatzen diete, eta horiek goiz ezagutzeak proxi arazketa arratsalde bat aurrezten du. Taulak ikusten duzuna normalean esan nahi duenarekin lotzen du. Azken zutabeko edozer diseinu galdera bat da, ez konfigurazio akats bat.

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

Lehen hiru errenkadak jendeak gaizki diagnostikatzen dituenak dira, bakoitzak konexio saiakera bat sortzen baitu proxiaz beraz errore bat izan beharrean. Eramangarrian ebazten den izen batek ez du ezer esaten zerbitzariaren ebazleaz, eta hutsegitea ziurtagiri edo denbora-muga arazo gisa irakurtzen da horren ordez. UDP soilik erabiltzen duten aplikazioak diseinutik kanpo daude, ez barruan hondatuta, eta ssh aukera gehigarri batek ez du hori aldatzen. Nabigatzailearen errenkada proxiren ezarpenak aplikazio bakoitzeko direla gogorarazten duen ohiko oharra da. Azken errenkada itxiera egiaztapena zergatik dagoen da: oraindik entzuten duen portu batek orain beste zerbaitena dela esan nahi du.

Erlazionatutako artikuluak