Con il crescente blocco di accesso a varie risorse online, la questione del bypass delle restrizioni diventa sempre più rilevante, e quindi sorge la domanda: «Come possiamo bypassare le restrizioni più velocemente?»
Lasciando da parte il tema dell'efficacia, in termini di bypass di DPI, whitelist e blacklist per un'altra occasione, semplicemente confronteremo le prestazioni di strumenti popolari per il bypass delle restrizioni.
Attenzione: nell'articolo ci saranno molte immagini sotto spoiler.
Disclaimer: questo articolo confronta le prestazioni di soluzioni VPN e proxy popolari, in condizioni prossime all'«ideale». I risultati ottenuti e descritti qui non corrisponderanno necessariamente ai tuoi risultati sul campo. Poiché il numero nel speed test dipende spesso non solo dall'efficienza dello strumento di bypass, ma anche da come il tuo provider lo throttla, lo QoS o lo blocca.
Metodologia
Un provider cloud (DO) ha acquistato 3 VPS in diverse parti del mondo. 2 nei Paesi Bassi e 1 in Germania. Sono stati scelti i VPS più performanti (in base al numero di core) disponibili per l'account in offerta per crediti coupon.
Sul primo server olandese è stato avviato un server iperf3 privato.
Sul secondo server olandese vengono avviati diversi server di strumenti di bypass delle restrizioni in modo sequenziale.
Sul VPS tedesco è stato installato un'immagine di Linux desktop (xubuntu) con VNC e un desktop virtuale. Questo VPS funge da cliente condizionale, e su di esso vengono installati e avviati vari client proxy e VPN in sequenza.
Le misurazioni della velocità vengono effettuate tre volte, orientandoci sulla media, utilizzando 3 strumenti: in Chromium tramite web speed test; in Chromium tramite fast.com; dalla console tramite iperf3 attraverso il proxy chain (dove è necessario inserire il traffico iperf3 nel proxy).
Una connessione diretta “client”-server iperf3 offre velocità di 2 Gbit/s, in iperf3, e leggermente inferiore nel test di velocità di fast.com.
Il lettore curioso potrebbe chiedere: «Perché non hai scelto speedtest-cli?» e avrebbe ragione.
Il test di velocità si è rivelato un metodo inaffidabile e inadeguato per misurare la larghezza di banda, per motivi a me sconosciuti. Tre misurazioni consecutive potevano dare tre risultati completamente diversi, oppure mostrare una larghezza di banda molto superiore alla velocità delle porte del mio VPS. Forse il problema è nella mia goffaggine, ma mi è sembrato impossibile condurre ricerche con questo strumento.
Per quanto riguarda i risultati ottenuti dai tre metodi di misurazione (speedtest fast e iperf), considero le misurazioni di iperf le più accurate e affidabili, mentre il test veloce è da considerare come indicativo. Tuttavia, alcuni strumenti di tunneling non hanno permesso di completare tre misurazioni tramite iperf3 e in tali casi ci si può orientare verso speedtest fast.
speedtest fornisce risultati diversi
Strumenti
Sono stati testati un totale di 24 strumenti di tunneling e/o le loro combinazioni, ai quali fornirò brevi spiegazioni e le mie impressioni sull'utilizzo. In sostanza, l'obiettivo era confrontare le velocità di shadowsocks (insieme a vari obfuscatori collegati) openVPN e wireguard.
In questo materiale non tratterò in dettaglio la questione di "come nascondere meglio il traffico per evitare di essere disconnessi", poiché il bypass delle restrizioni è un'azione reattiva: ci adattiamo a ciò che utilizza il censore e agiamo di conseguenza.
Risultati
Strongswanipsec
Dalla mia esperienza, è molto semplice da configurare e funziona piuttosto stabilmente. Tra i vantaggi, è davvero multipiattaforma, senza necessità di cercare client per ogni piattaforma.
download — 993 mbits; upload — 770 mbits
Tunnel SSH
Probabilmente solo i più pigri non hanno scritto dell'utilizzo di SSH come strumento di tunneling. Tra i lati negativi c'è la "provvisorietà" della soluzione, ovvero non è possibile implementarla da un client comodo e visualmente gradevole su ogni piattaforma. Tra i lati positivi, buona performance, non è necessario installare nulla sul server.
download — 1270 mbits; upload — 1140 mbits
OpenVPN
OpenVPN è stato testato in 4 modalità operative: tcp, tcp+sslh, tcp+stunnel, udp.
I server OpenVPN sono stati configurati automaticamente tramite l'installazione di streisand.
Per quanto si possa giudicare, al momento solo la modalità di funzionamento tramite stunnel è resistente a DPI avanzati. La ragione dell'anomalo aumento della larghezza di banda durante l'incapsulamento di openVPN-tcp in stunnel non mi è chiara, i test sono stati effettuati in diverse sessioni, in orari e giorni diversi, e il risultato è stato lo stesso. Potrebbe essere legato alle impostazioni dello stack di rete configurate durante il deployment di Streisand, scrivetemi se avete idee sul perché sia così.
openvpntcp: download — 760 mbits; upload — 659 mbits
openvpntcp+sslh: download — 794 mbits; upload — 693 mbits
openvpntcp+stunnel: download — 619 mbits; upload — 943 mbits
openvpnudp: download — 756 mbits; upload — 580 mbits
Openconnect
Non è lo strumento di evasione più popolare, fa parte del pacchetto Streisand, quindi è stato deciso di testarlo.
download — 895 mbits; upload 715 mbits
Wireguard
Uno strumento in voga, molto popolare tra gli utenti occidentali, i creatori del protocollo hanno persino ricevuto dei finanziamenti per lo sviluppo da fondazioni di protezione. Funziona come modulo del kernel Linux, tramite UDP. Di recente sono disponibili client per Windows e iOS.
Ideato dal creatore come modo semplice e veloce per guardare Netflix al di fuori degli Stati Uniti.
Da qui i pro e i contro. Pro — un protocollo molto veloce, relativa semplicità di installazione e configurazione. Contro — il creatore non l'ha originariamente realizzato con l'intento di eludere blocchi seri, e quindi Wireguard viene facilmente rilevato con i più semplici strumenti, compreso Wireshark.
protocollo wireguard in wireshark
download — 1681 mbits; upload 1638 mbits
È interessante notare che il protocollo Wireguard viene utilizzato nel client di terze parti Tunsafe, che quando viene utilizzato con lo stesso server Wireguard fornisce risultati molto peggiori. È probabile che anche il client Windows di Wireguard mostri risultati simili:
tunsafeclient: download — 1007 mbits; upload — 1366 mbits
OutlineVPN
Outline è un'implementazione del server e client Shadowsocks con un'interfaccia utente bella e comoda fornita da Jigsaw di Google. Su Windows, il client Outline consiste semplicemente in un insieme di wrapper per i binari shadowsocks-local (client di shadowsocks-libev) e badvpn (il binario tun2socks, che instrada tutto il traffico della macchina in un proxy socks locale).
Un tempo, Shadowsocks era resistente al grande firewall cinese, ma a giudicare dalle ultime recensioni, non è più così. A differenza di Shadowsocks, «out of the box» non supporta la connessione di offuscamento tramite plugin, ma è possibile farlo manualmente, lavorando con il server e il client.
download — 939 mbits; upload — 930 mbits
ShadowsocksR
ShadowsocksR è un fork dell'originale Shadowsocks, scritto in Python. Di fatto rappresenta Shadowsocks al quale sono stati saldamente aggiunti diversi metodi di offuscamento del traffico.
Esistono fork di ssR su libev e altro. La bassa larghezza di banda è probabilmente dovuta al linguaggio di programmazione. L'originale Shadowsocks in Python non è molto più veloce.
shadowsocksR: download 582 mbits; upload 541 mbits.
Shadowsocks
Strumento cinese per eludere i blocchi, randomizzando il traffico e con altri metodi straordinari che ostacolano l'analisi automatica. Fino a poco tempo fa, non era bloccato dal GFW, si dice ora che venga bloccato solo se si attiva il relay UDP.
Cross-platform (ci sono client per qualsiasi piattaforma), supporta il lavoro con PT simile agli offuscatori di Tor, ha alcuni suoi o adattati a lui offuscatori, è veloce.
Ci sono molte implementazioni di client e server Shadowsocks, in vari linguaggi. Nei test, il server utilizzato era shadowsocks-libev, i client — vari. Il client Linux più veloce si è rivelato essere shadowsocks2 in Go, distribuito come client predefinito in streisand, non so quanto sia più prestante di shadowsocks-windows. Nella maggior parte dei test successivi è stato utilizzato proprio shadowsocks2 come client. Non sono stati effettuati screenshot con il testing di shadowsocks-libev puro, a causa del chiaro ritardo di questa implementazione.
shadowsocks2: download — 1876 mbits; upload — 1981 mbits.
shadowsocks-rust: download — 1605 mbits; upload — 1895 mbits.
Shadowsocks-libev: download — 1584 mbits; upload — 1265 mbits.
Simple-obfs
Plugin per Shadowsocks, attualmente in stato di "depreciated" ma funziona ancora (anche se non sempre bene). In gran parte superato dal plugin v2ray-plugin. Offusca il traffico o sotto websocket http (e permette di falsificare l'header dell'host di destinazione, facendo finta di andare a visitare non Pornhub, ma ad esempio il sito della Costituzione russa) o sotto pseudo-tls (pseudo, perché non utilizza certificati, i più semplici DPI come il gratuito nDPI lo rilevano come "tls no cert". In modalità tls non è possibile falsificare gli header).
È abbastanza veloce, si installa da un repository con un comando, si configura molto facilmente, ha una funzione di failover integrata (quando sul porto che ascolta simple-obfs arriva traffico da un client non-simple-obfs, lo inoltra all'indirizzo che si specifica nelle impostazioni - in questo modo si può evitare di controllare manualmente la porta 80 ad esempio, semplicemente reindirizzando a un sito web con http, e prevenire blocchi tramite connection-probes).
shadowsockss-obfs-tls: download — 1618 mbits; upload 1971 mbits.
shadowsockss-obfs-http: download — 1582 mbits; upload — 1965 mbits.
Simple-obfs in modalità http può anche funzionare tramite reverse proxy CDN (ad esempio, cloudflare), quindi per il nostro provider il traffico apparirà come traffico http in chiaro fino a cloudflare, questo permette di nascondere meglio il nostro tunnel e separare il punto di ingresso e uscita del traffico - il provider vede che il tuo traffico va verso indirizzi IP CDN, mentre i like degli estremisti sulle immagini vengono inseriti in quel momento dall'indirizzo IP del VPS. Va detto che simple-obfs attraverso CF funziona in modo ambiguo, periodicamente non apre alcuni risorse http ad esempio. Pertanto, testare l'upload usando iperf attraverso shadowsockss-obfs+CF non è stato possibile, ma dai risultati del test di velocità, la larghezza di banda è simile a quella di shadowsocksv2ray-plugin-tls+CF. Non allego screenshot con iperf3, poiché non è consigliabile farci affidamento.
download (speedtest) — 887; upload (speedtest) — 1154.
Download (iperf3) — 1625; upload (iperf3) — NA.
v2ray-plugin
Il V2ray-plugin è arrivato a sostituire simple-obfs come principale "obfuscator" "ufficiale" per ss-libev. A differenza di simple-obfs, al momento non è disponibile nei repository, e bisogna scaricare un binario precompilato o compilarlo da soli.
Supporta 3 modalità operative: predefinita, websocket http (con supporto per spoofing degli header dell'host di destinazione); websocket tls (a differenza di simple-obfs, questo è traffico tls completo, riconosciuto da qualsiasi server web reverse proxy e consente ad esempio di configurare la terminazione tls sui server cloudflare o in nginx); quic — funziona tramite udp, ma purtroppo le prestazioni del quic in v2ray sono molto basse.
Tra i vantaggi rispetto a simple-obfs: il v2ray-plugin funziona senza problemi attraverso CF in modalità websocket http con qualsiasi traffico, in modalità tls rappresenta un traffico tls completo, richiede certificati per funzionare (ad esempio da let's encrypt o autofirmati).
shadowsocksv2ray-plugin-http: download — 1404 mbits; upload 1938 mbits.
shadowsocksv2ray-plugin-tls: download — 1214 mbits; upload 1898 mbits.
shadowsocksv2ray-plugin-quic: download — 183 mbits; upload 384 mbits.
Come ho già detto, v2ray è in grado di impostare gli header, e così può essere utilizzato tramite reverse proxy CDN (per esempio Cloudflare). Da un lato ciò complica la rilevazione del tunnel, dall'altro può aumentare (e a volte ridurre) il lag — tutto dipende dalla tua posizione e da quella dei server. Al momento CF sta testando il funzionamento con quic, ma questo modo è ancora non disponibile (almeno per gli account gratuiti).
shadowsocksv2ray-plugin-http+CF: download — 1284 mbits; upload 1785 mbits.
shadowsocksv2ray-plugin-tls+CF: download — 1261 mbits; upload 1881 mbits.
Cloak
Cloak è il risultato di uno sviluppo ulteriore dell'osfuscante GoQuiet. Simula il traffico TLS, opera cioè attraverso TCP. Al momento l'autore ha rilasciato la seconda versione del plugin, cloak-2, che differisce significativamente dal cloak originale.
Secondo le informazioni fornite dallo sviluppatore, la prima versione del plugin utilizzava il meccanismo tls 1.2 resume session per spoofare l'indirizzo di destinazione per TLS. Dopo il rilascio della nuova versione (cloak-2), tutte le pagine wiki su GitHub che descrivevano questo meccanismo sono state rimosse, e nell'attuale descrizione della crittografia e osfuscazione non ci sono riferimenti. Dallo stesso autore risulta che la prima versione di cloak non è più utilizzata a causa della presenza di "vulnerabilità critiche nella crittografia". Al momento dei test era disponibile solo la prima versione di cloak, i binari sono ancora presenti su GitHub, e in più, le vulnerabilità critiche non sono così rilevanti, poiché shadowsocks crittografa il traffico in modo simile anche senza cloak, e cloak non influisce sulla crittografia di shadowsocks.
shadowsockscloak: download — 1533; upload — 1970 mbits
Kcptun
kcptun utilizza come trasporto e in alcuni casi speciali consente di aumentare la larghezza di banda. Sfortunatamente (o per fortuna) ciò è molto rilevante per gli utenti dalla RPC, parte dei quali ha una forte limitazione della larghezza di banda TCP e non interferisce con UDP.
Kcptun è estremamente affamato di risorse, e può facilmente saturare al 100% 4 core durante il test con un singolo client. Inoltre, il plugin è 'lento', e durante l'uso con iperf3 non completa i test fino alla fine. Facciamo riferimento ai test di velocità nel browser.
shadowsockskcptun: download (speedtest) — 546 mbits; upload (speedtest) 854 mbits.
Conclusione
Hai bisogno di un VPN semplice e veloce per incapsulare il traffico di tutto il sistema? Allora la tua scelta è vaergard. Vuoi proxy (per tunneling selettivo o splitting dei flussi virtuali personali) oppure è più importante per te offuscare il traffico da blocchi severi? Allora guarda a shadowsocks con offuscamento tlshttp. Vuoi essere sicuro che la tua connessione internet funzioni finché internet funziona in generale? Scegli il proxy del traffico attraverso CDN importanti, la cui chiusura porterebbe a una caduta di metà di internet nel paese.
tabella riassuntiva, ordinamento per download
Fonte: habr.com
