Ljudje obravnavajo socks5h kot socks5 s prijaznejšim zapisom in pričakujejo, da bosta oba poslala isto zahtevo na isti kraj. Dodatna črka namesto tega premakne poizvedbo DNS. Na stroju, katerega razreševalnik in katerega proxy sta v različnih omrežjih, je to razlika med zahtevo, ki deluje, in tisto, ki ne uspe.

Ena črka, dva razreševalnika

Shema odloči, kje ime cilja postane naslov. Lokalno razreševanje uporabi razreševalnik, nastavljen na vašem stroju. Oddaljeno razreševanje postavi ime gostitelja v zahtevo SOCKS, proxy pa ga poišče s svojim razreševalnikom in svojim pogledom na omrežje. Obe obliki se še vedno povežeta na isti naslov proxyja na istih vratih, zato je razlika v telesu zahteve, ne na poti.

Nič v shemi ne spremeni šifriranja ali preverjanja pristnosti; premakne se le pot DNS. Zato je črko lahko spregledati in drago zgrešiti.

Isti proxy, druga zahteva

Dva klica se razlikujeta v enem samem znaku. Vse ostalo je enako:

curl --proxy socks5://proxy.example:1080 https://service.example/
curl --proxy socks5h://proxy.example:1080 https://service.example/

The referenca proxyja v curl te sheme dokumentira ločeno, in to je verodostojni razlog, da jih ne obravnavamo kot vzdevke. Zaženite oba proti neškodljivi končni točki, ki jo smete uporabljati, in preberite razliko. Uspešno oddaljeno iskanje ne pove ničesar o drugih aplikacijah, ker brskalniki, upravitelji paketov in izvajalna okolja jezikov izbirajo vsak zase.

Lastno ime proxyja se razreši lokalno

V tem ukazu mora proxy.example postati naslov, preden se zgodi karkoli drugega, in to iskanje je vedno lokalno. Premik razreševanja service.example na proxy ne naredi ničesar za lastno ime proxyja, ki še vedno potrebuje razreševalnik, dosegljiv z vašega stroja. Tu VPN spremeni sliko.

Če se ime proxyja razreši samo znotraj tunela, je povezava odvisna od tega, ali je tunel vzpostavljen pred začetkom curla. Katera shema potem zmaga, je odvisno od tega, katera stran lahko odgovori. Ko vaš stroj ne more razrešiti cilja, proxy pa ga lahko, socks5 ne uspe in socks5h uspe. Ko ga vaš stroj razreši skozi tunel, proxy pa ne more, socks5 deluje in socks5h ne uspe.

Shema ne postavi povezave s proxyjem znotraj ali zunaj VPN; to naredi usmerjevalna tabela, in shema je nikoli ne vidi. Zato lahko en tunel popravi eno shemo in pokvari drugo na istem stroju. Črka odloči le, kdo postavi vprašanje.

Kaj lahko razreši vsaka stran

Javni proxy ne more razrešiti imena, ki obstaja samo v podjetju, zato pošiljanje imena gostitelja tja ne uspe pri proxyju in se pokaže kot napaka proxyja, ne kot lokalna napaka DNS. Proxy v istem zasebnem omrežju običajno lahko razreši taka imena, in tam si socks5h prisluži svoje mesto. Izberite mesto razreševalnika po politiki, ki jo res potrebujete, ker oddaljeni DNS ni samodejno zmogljivejši in ime res preda tretji strani. Za javni cilj delujeta obe obliki, zato raje izberite tisto, ki jo vaša druga orodja že uporabljajo.

To izbiro zapišite v runbook in ne v komentar, ter hranite poverilnice zunaj skupne zgodovine in diagnostičnega izhoda. Nato spreminjajte eno spremenljivko naenkrat: isti cilj, ista binarna datoteka, isti razreševalnik, ena črka.

Katera binarna datoteka je odgovorila

Dve binarni datoteki curl na istem stroju se lahko razlikujeta po različici in zmožnostih gradnje. V lupini, podobni Unixu, type -a curl navede vsako ujemanje na poti, curl --version pa pokaže zmožnosti tiste, ki bi se zagnala. Ovojna skripta ali vzdevek prej na poti je pogost razlog, da se rezultati ne ujemajo z binarno datoteko, za katero mislite, da jo testirate.

Nepodprta shema, proxy, ki ne more razrešiti imena, in nedosegljiv cilj so tri različne napake, zato preberite sporočilo, preden spremenite črko. Gradnja brez sintakse socks5h sporoči niz proxyja kot nepodprt, kar ni isto kot ime, ki ga ni bilo mogoče razrešiti. Iz enega starega poročila o sistemskem curlu ne delajte trajnega pravila za vsako platformo.

Sorodni članki