Tutte le posizioni attive · 99.99% uptime
SOCKS5

Come funziona un proxy SOCKS5?

Che cos'è un proxy SOCKS5 nel nostro articolo abbiamo introdotto il concetto. Qui guardiamo dentro il protocollo: quali byte vengono scambiati tra client e server, come viene specificato l'indirizzo e perché questo design produce uno strumento più generico di un proxy HTTP.

SOCKS5 è un protocollo piuttosto semplice, definito nella RFC 1928. La sua semplicità è la fonte della sua forza: non interpreta in alcun modo i dati a livello applicativo, si limita a trasportare traffico TCP (e, facoltativamente, UDP).

Un handshake in tre fasi

FIGURALe fasi di una connessione SOCKS5
HANDSHAKE01Saluto(greeting)1 round tripIl client comunicai metodi di autenticazioneche supporta02Metodoadattostesso round tripIl server nesceglie uno oppurerifiuta03Autenticazione1 round tripIl metodo selezionatoviene applicato (se necessario)04Richiesta CONNECT1 round tripVengono comunicati indirizzoe porta di destinazione05Trasferimento dei datiillimitatoIl protocollo è ormai un tubo trasparentedurata della connessione →

Se non è richiesta l'autenticazione, i round trip scendono da tre a due. Rispetto al metodo CONNECT dei proxy HTTP richiede qualche round trip in più, ma i byte sono molto più piccoli.

Fase 1 — Saluto

Nel primo pacchetto il client comunica la versione del protocollo e i metodi di autenticazione che supporta:

FIGURAPacchetto di saluto del client
LA RICHIESTAVER0x05Versione SOCKS: 5NMETHODS0x02Quanti metodi vengono propostiMETHODS[0]0x00Nessuna autenticazione richiestaMETHODS[1]0x02Nome utente / password

Il server comunica la propria scelta con una risposta di un solo byte: 0x00 (nessuna autenticazione richiesta), 0x02 (utente/password) oppure 0xFF (nessun metodo accettabile).

Suggerimento per il debug

Il server 0xFF se lo restituisce e chiude la connessione, significa che il tuo client non propone il metodo di autenticazione atteso dal server. È la causa più comune della lamentela "la connessione si è chiusa silenziosamente".

Fase 2 — Autenticazione

Se viene selezionato il metodo 0x02 si esegue la sotto-negoziazione definita nella RFC 1929: byte di versione, lunghezza del nome utente e nome utente, lunghezza della password e password. Il server restituisce un singolo byte di successo/insuccesso.

Per un confronto dettagliato e la configurazione pratica il nostro articolo sull'autenticazione SOCKS5 puoi consultarlo.

Fase 3 — Richiesta CONNECT

Superata l'autenticazione, il client comunica la destinazione. È qui che entra in gioco la decisione di design più importante di SOCKS5: l'indirizzo può essere fornito in tre formati diversi.

FIGURAStruttura della richiesta CONNECT
LA RICHIESTAVER0x05VersioneCMD0x0101=CONNECT, 02=BIND,03=UDPRSV0x00RiservatoATYP0x0301=IPv4, 03=nome di dominio,04=IPv6ADDRornek.comIndirizzo di destinazionePORT0x01BB443

ATYP=0x03 significa nome di dominio; in questo caso la risoluzione DNS la esegue il proxy. Questo singolo byte è la chiave per prevenire il DNS leak.

Perché è più generico di un proxy HTTP?

FIGURAI livelli su cui operano i due protocolli
LIVELLO7ApplicazioneHTTP / HTTPS / SMTP / FTPIl proxy HTTP capisce solo HTTP5SessioneSOCKS5Non guarda il contenuto, trasporta tutto4TrasportoTCP / UDPSOCKS5 supporta entrambi3ReteIPv4 / IPv6Indirizzamento

Il proxy HTTP legge e interpreta la richiesta; SOCKS5 si limita a trasportarla. Per questo su SOCKS5 possono passare contemporaneamente e-mail, gaming, trasferimento file e traffico del browser.

CaratteristicaParametroSOCKS5
Livello di funzionamentoApplicazione (7)Sessione (5)
Supporto dei protocolliSolo HTTP(S)Qualsiasi TCP, facoltativamente UDP
Interpretazione del contenutoNo
Aggiunta di headerPuò farloNon può farlo
CachePossibileNon possibile
Risoluzione DNSLato proxySelezionabile (ATYP)
Round trip dell'handshake1 (CONNECT)2–3

Per un confronto dettagliato differenza tra proxy HTTP e SOCKS5 il nostro articolo dedicato.

SOCKS5 esegue la cifratura?

No. È l'equivoco più diffuso. SOCKS5 è un protocollo di trasporto; non offre cifratura. La sicurezza del tuo traffico dipende dalla cifratura propria del contenuto trasportato:

  • Se passa tramite HTTPS: il TLS protegge end-to-end; il proxy non può vedere il contenuto.
  • Se è HTTP in chiaro: l'operatore del proxy può leggere il contenuto.
  • Credenziali: nome utente e password SOCKS5 vengono inviati in chiaro.
Nota sulla sicurezza

Le credenziali di SOCKS5 vengono trasmesse senza cifratura. Se usi un proxy SOCKS5 su una rete non affidabile, le tue credenziali possono essere lette da un osservatore intermedio. In questo scenario è più sicuro usare SOCKS5 attraverso un tunnel SSH: il metodo è descritto in un articolo a parte del nostro blog.

Uso pratico

FIGURAOperazioni di base con SOCKS5
Terminale01# Risolvi il DNS lato proxy (consigliato)02curl --socks5-hostname utente:password@proxy.example.com:1080 https://example.com0304# Risolvi il DNS in locale (rischio di leak)05curl --socks5 proxy.example.com:1080 https://example.com0607# Con variabile d'ambiente (molti strumenti la leggono)08export ALL_PROXY="socks5h://utente:password@proxy.example.com:1080"0910# Python requests (per il supporto socks: pip install requests[socks])11proxies = {"http": "socks5h://utente:password@proxy.example.com:1080",12 "https": "socks5h://utente:password@proxy.example.com:1080"}1314# Test: IP di uscita15curl --socks5-hostname proxy.example.com:1080 -s https://ornek-ip.example/text

socks5h nello schema h significa "hostname" e fa sì che la risoluzione DNS avvenga lato proxy. Per prevenire le fughe di dati preferisci sempre questa opzione.

Quando scegliere SOCKS5?

Scegli SOCKS5

  • Se devi trasportare protocolli diversi da HTTP (e-mail, FTP, gaming).
  • Se vuoi che la risoluzione DNS avvenga lato proxy.
  • Se ti serve traffico UDP.
  • Se non vuoi che il proxy tocchi i tuoi header.
  • Se l'applicazione supporta solo SOCKS.

Basta un proxy HTTP

  • Se devi trasportare solo traffico web.
  • Se vuoi il caching.
  • Se il tuo strumento supporta solo i proxy HTTP.
  • Se conta avere il minor numero di round trip nell'handshake.
  • Se servono regole di filtraggio aziendali.

Riepilogo

SOCKS5 è un semplice protocollo di livello sessione che trasporta traffico TCP e UDP senza mai guardare i dati applicativi. Grazie all'handshake in tre fasi, al supporto di tre diversi tipi di indirizzo e all'opzione del nome di dominio, offre la possibilità di prevenire il DNS leak. Non fornisce cifratura; la sicurezza dipende dalla cifratura propria del contenuto trasportato. Se devi trasportare traffico non web, è lo strumento giusto. Per i dettagli sul prodotto la nostra pagina sui proxy SOCKS5, per i test il nostro strumento di controllo proxy puoi consultarlo.

Domande frequenti

01SOCKS5 cifra il mio traffico?

No. SOCKS5 è un protocollo di trasporto e non offre cifratura. La sicurezza deriva dalla cifratura propria del contenuto trasportato; se usi HTTPS il contenuto è protetto end-to-end.

02Qual è la differenza tra socks5 e socks5h?

socks5h richiede che la risoluzione DNS avvenga lato proxy; socks5, invece, risolve in locale. Per prevenire le fughe di dati preferisci sempre socks5h.

03La mia connessione SOCKS5 si chiude silenziosamente, perché?

Molto probabilmente il tuo client non propone il metodo di autenticazione atteso dal server. Il server restituisce 0xFF e chiude la connessione. Assicurati che il client supporti il metodo utente/password.

04SOCKS5 è più lento di un proxy HTTP?

L'handshake richiede un round trip in più, ma i byte trasportati sono pochissimi. In pratica la differenza è di pochi millisecondi e, una volta iniziato il trasferimento dei dati, non c'è alcuna differenza di velocità tra i due protocolli.

05Tutte le applicazioni supportano SOCKS5?

No. I browser, curl e la maggior parte delle librerie moderne lo supportano; alcune applicazioni però conoscono solo i proxy HTTP. In quel caso occorre interporre un convertitore di protocollo.

Articoli e pagine correlati

PROSSIMO PASSO

Potenzia oggi la tua infrastruttura proxy.

Inizia in pochi minuti con i pacchetti a pagamento oppure prova prima il nostro elenco di proxy gratuiti.

FREEPROXY.TR

Se cerchi proxy gratuiti, sei nel posto giusto

Una piattaforma proxy completa dove consultare indirizzi proxy gratuiti aggiornati, confrontare i tipi di proxy HTTP e SOCKS e verificare le tue connessioni proxy con strumenti gratuiti.