Ljudi tretiraju socks5h kao socks5 s prijatnijim pravopisom i očekuju da će oba poslati isti zahtjev na isto mjesto. Dodatno slovo umjesto toga pomjera DNS upit. Na mašini čiji razrješivač i čiji proxy stoje u različitim mrežama, to je razlika između zahtjeva koji radi i onoga koji ne uspijeva.

Jedno slovo, dva razrješivača

Šema odlučuje gdje ime odredišta postaje adresa. Lokalno razrješavanje koristi razrješivač konfigurisan na vašoj mašini. Udaljeno razrješavanje stavlja ime hosta unutar SOCKS zahtjeva, a proxy ga traži svojim razrješivačem i svojim pogledom na mrežu. Oba oblika se još spajaju na istu adresu proxyja na istom portu, pa je razlika u tijelu zahtjeva, ne u putanji.

Ništa u šemi ne mijenja enkripciju ni provjeru identiteta; pomjera se samo DNS putanja. Zato je slovo lako ignorisati i skupo pogrešiti.

Isti proxy, drugi zahtjev

Dva poziva razlikuju se za jedan znak. Sve ostalo kod njih je identično:

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

The curl referenca za proxy dokumentuje ove šeme odvojeno, i to je autoritativan razlog da ih ne tretiramo kao alijase. Pokrenite oba prema bezopasnoj krajnjoj tački koju smijete koristiti i pročitajte razliku. Uspješno udaljeno traženje ne govori ništa o drugim aplikacijama, jer preglednici, menadžeri paketa i jezička okruženja biraju svako za sebe.

Vlastito ime proxyja razrješava se lokalno

U toj komandi proxy.example mora postati adresa prije nego što se bilo šta drugo dogodi, a to traženje je uvijek lokalno. Premještanje razrješavanja service.example na proxy ne čini ništa za vlastito ime proxyja, kojem i dalje treba razrješivač do kojeg vaša mašina može doći. Tu VPN mijenja sliku.

Ako se ime proxyja razrješava samo unutar tunela, veza zavisi od toga da tunel bude podignut prije nego curl počne. Koja šema tada pobjeđuje zavisi od toga koja strana može odgovoriti. Kada vaša mašina ne može razriješiti odredište a proxy može, socks5 ne uspijeva a socks5h uspijeva. Kada ga vaša mašina razriješi kroz tunel a proxy ne može, socks5 radi a socks5h ne uspijeva.

Šema ne stavlja vezu prema proxyju unutar ili izvan VPN-a; to radi tabela rutiranja i šema je nikada ne vidi. Zato jedan tunel može popraviti jednu šemu i pokvariti drugu na istoj mašini. Slovo odlučuje samo ko postavlja pitanje.

Šta svaka strana može razriješiti

Javni proxy ne može razriješiti ime koje postoji samo u firmi, pa slanje imena hosta tamo ne uspijeva na proxyju i pojavljuje se kao greška proxyja, a ne kao lokalna DNS greška. Proxy unutar iste privatne mreže obično može razriješiti takva imena, i tu socks5h opravdava svoje postojanje. Odaberite mjesto razrješivača prema politici koja vam je zaista potrebna, jer udaljeni DNS nije automatski sposobniji i zaista predaje ime trećoj strani. Za javno odredište rade oba oblika, pa dajte prednost onom koji vaši drugi alati već koriste.

Zapišite taj izbor u runbook, a ne u komentar, i držite akreditive izvan zajedničke historije i dijagnostičkog izlaza. Zatim mijenjajte jednu varijablu po jednu: isto odredište, isti binarni fajl, isti razrješivač, jedno slovo.

Koji binarni fajl je odgovorio

Dva curl binarna fajla na istoj mašini mogu se razlikovati po verziji i mogućnostima kompilacije. U Unixolikoj ljusci type -a curl navodi svako podudaranje na putanji a curl --version prikazuje mogućnosti onog koji bi se pokrenuo. Omotajuća skripta ili alias ranije na putanji čest su razlog što rezultati ne odgovaraju binarnom fajlu za koji mislite da ga testirate.

Nepodržana šema, proxy koji ne može razriješiti ime i nedostupno odredište tri su različite greške, pa pročitajte poruku prije nego promijenite slovo. Kompilacija bez socks5h sintakse prijavljuje proxy string kao nepodržan, što nije isto kao ime koje se nije uspjelo razriješiti. Ne pretvarajte jedan stari izvještaj o sistemskom curlu u trajno pravilo za svaku platformu.

Povezani članci