Oamenii tratează socks5h drept socks5 cu o ortografie mai prietenoasă, și se așteaptă ca ambele să trimită aceeași cerere în același loc. Litera suplimentară mută însă interogarea DNS. Pe o mașină al cărei rezolver și al cărei proxy stau în rețele diferite, aceasta este diferența dintre o cerere care funcționează și una care eșuează.

O literă, două rezolvere

Schema decide unde numele destinației devine adresă. Rezolvarea locală folosește rezolverul configurat pe mașina dumneavoastră. Rezolvarea la distanță pune numele de gazdă în cererea SOCKS, iar proxy-ul îl caută cu propriul rezolver și cu propria viziune asupra rețelei. Ambele forme se conectează în continuare la aceeași adresă de proxy pe același port, deci diferența este în corpul cererii, nu în cale.

Nimic din schemă nu schimbă criptarea sau autentificarea; se mută doar calea DNS. De aceea litera este ușor de ignorat și scump de greșit.

Același proxy, altă cerere

Cele două invocări diferă printr-un singur caracter. Tot restul este identic:

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

The referința proxy a curl documentează aceste scheme separat, iar acesta este motivul autoritar pentru a nu le trata ca aliasuri. Rulați ambele către un punct final inofensiv pe care aveți permisiunea să îl folosiți și citiți diferența. O căutare la distanță reușită nu spune nimic despre alte aplicații, deoarece browserele, managerii de pachete și mediile de execuție ale limbajelor aleg fiecare pentru sine.

Numele proxy-ului însuși este rezolvat local

În acea comandă, proxy.example trebuie să devină o adresă înainte de a se întâmpla orice altceva, iar căutarea aceea este întotdeauna locală. Mutarea rezolvării service.example către proxy nu face nimic pentru numele proxy-ului însuși, care are în continuare nevoie de un rezolver accesibil de pe mașina dumneavoastră. Aici un VPN schimbă imaginea.

Dacă numele proxy-ului este rezolvat doar în interiorul tunelului, conexiunea depinde de faptul că tunelul este ridicat înainte ca curl să pornească. Care schemă câștigă atunci depinde de partea care poate răspunde. Când mașina dumneavoastră nu poate rezolva destinația, dar proxy-ul poate, socks5 eșuează și socks5h reușește. Când mașina dumneavoastră o rezolvă prin tunel, iar proxy-ul nu poate, socks5 funcționează și socks5h eșuează.

Schema nu plasează conexiunea la proxy în interiorul sau în afara VPN-ului; tabela de rutare face asta, iar schema nu o vede niciodată. De aceea un tunel poate repara o schemă și strica cealaltă pe aceeași mașină. Litera decide doar cine pune întrebarea.

Ce poate rezolva fiecare parte

Un proxy public nu poate rezolva un nume care există doar în companie, așa că trimiterea numelui de gazdă acolo eșuează la proxy și apare ca eroare de proxy, nu ca eroare DNS locală. Un proxy din aceeași rețea privată poate de obicei să rezolve astfel de nume, și acolo socks5h își merită locul. Alegeți locul rezolverului după politica de care aveți cu adevărat nevoie, pentru că DNS-ul la distanță nu este automat mai capabil și chiar predă numele unei terțe părți. Pentru o destinație publică ambele forme funcționează, așa că preferați-o pe cea pe care celelalte instrumente ale dumneavoastră o folosesc deja.

Scrieți această alegere în runbook, nu într-un comentariu, și țineți acreditările în afara istoricului partajat și a ieșirii de diagnostic. Apoi schimbați o variabilă pe rând: aceeași destinație, același binar, același rezolver, o literă.

Care binar a răspuns

Două binare curl pe aceeași mașină pot diferi prin versiune și funcții de compilare. Într-un shell de tip Unix, type -a curl listează fiecare potrivire din cale, iar curl --version arată funcțiile celui care s-ar executa. Un script de împachetare sau un alias mai sus în cale este o cauză frecventă pentru care rezultatele nu corespund binarului pe care credeți că îl testați.

O schemă neacceptată, un proxy care nu poate rezolva numele și o destinație inaccesibilă sunt trei erori diferite, așa că citiți mesajul înainte de a schimba litera. O compilare fără sintaxa socks5h raportează șirul de proxy ca neacceptat, ceea ce nu este același lucru cu un nume care nu a putut fi rezolvat. Nu transformați un raport vechi despre un curl de sistem într-o regulă permanentă pentru fiecare platformă.

Articole similare