Naarmate we steeds meer toegang tot verschillende online bronnen verliezen, wordt de vraag naar manieren om blokkades te omzeilen steeds relevanter, wat betekent dat de vraag 'Hoe omzeil je blokkades sneller?' ook belangrijker wordt.
Laten we het onderwerp efficiëntie, vanuit het oogpunt van het omzeilen van DPI-witlijsten en zwartlijsten voor een andere keer, en laten we gewoon de prestaties van populaire hulpmiddelen voor het omzeilen van blokkades vergelijken.
Let op: In het artikel onder de spoilers staan veel afbeeldingen.
Disclaimers: Dit artikel vergelijkt de prestaties van populaire VPN- en proxy-oplossingen in omstandigheden die dichtbij 'ideale' zijn. De resultaten die hier zijn verkregen en beschreven, hoeven niet noodzakelijkerwijs overeen te komen met jouw resultaten in de praktijk. Omdat het cijfer in de speedtest vaak afhankelijk is van hoe je provider het verkeer throttle of blokkeert.
Methodologie
Bij de cloudprovider (DO) zijn 3 VPS'en aangeschaft in verschillende landen wereldwijd. 2 in Nederland, 1 in Duitsland. Er zijn de meest krachtige VPS’en (op basis van het aantal cores) gekozen uit degenen die beschikbaar zijn voor het account met de couponcredits.
Op de eerste Nederlandse server is een privé iperf3-server opgezet.
Op de tweede Nederlandse server worden om de beurt verschillende servers voor de omzeilingstools opgezet.
Op de Duitse VPS is een desktop Linux-image (xubuntu) met VNC en een virtueel bureaublad ingericht. Deze VPS fungeert als een soort klant, en daarop worden om de beurt verschillende proxy- en VPN-clients geïnstalleerd en uitgevoerd.
Snelheidsmetingen worden drie keer uitgevoerd, waarbij we ons richten op het gemiddelde en gebruikmaken van 3 tools: in Chromium via een web-speedtest; in Chromium via fast.com; vanuit de console via iperf3 via proxychains (waarbij het verkeer van iperf3 in de proxy moet worden gepompt).
Een directe verbinding 'client'-server iperf3 geeft een snelheid van 2 Gbps in iperf3, en iets minder in de fast-speedtest.
De nieuwsgierige lezer kan vragen: 'Waarom heb je speedtest-cli niet gekozen?' en dat zou een terechte vraag zijn.
De speedtest-kli bleek een onbetrouwbare en inadequate manier om de bandbreedte te meten, om redenen die mij onbekend zijn. Drie opeenvolgende metingen konden drie volkomen verschillende resultaten opleveren, of bijvoorbeeld een bandbreedte vertonen die veel hoger was dan de snelheid van de poorten van mijn VPS. Misschien ligt het aan mijn onhandigheid, maar het leek me onmogelijk om met zo'n instrument onderzoek te doen.
Wat betreft de resultaten van de drie meetmethoden (speedtest, fast, iperf) beschouw ik de iperf-metrics als de meest nauwkeurige, betrouwbare en valide, terwijl de fast speedtest als referentieel wordt beschouwd. Maar sommige omzeiltools lieten niet toe om drie metingen via iperf3 te voltooien en in dergelijke gevallen kan men zich baseren op de speedtest-fast.
De speedtest geeft verschillende resultaten.
Toolkit
In totaal zijn er 24 verschillende omzeiltools en/of hun combinaties getest, waarvoor ik een kleine toelichting en mijn indrukken van het gebruik zal geven. Maar in wezen was het doel om de snelheden van shadowsocks (en tal van verschillende obfuscators daarvoor), openVPN en wireguard te vergelijken.
In dit materiaal zal ik de vraag 'hoe je het verkeer het beste kunt verbergen om geen afsluiting te krijgen' niet in detail behandelen, omdat het omzeilen van blokkades een reactieve maatregel is — we passen ons aan wat de censor gebruikt en handelen daar op basis van.
Resultaten
Strongswanipsec
Volgens mijn indrukken: heel eenvoudig in te stellen, werkt behoorlijk stabiel. Voordelen zijn dat het echt cross-platform is, zonder dat je clients voor elk platform hoeft te zoeken.
download — 993 mbits; upload — 770 mbits
SSH-tunnel
Over het gebruik van SSH als tunnelingtool heeft waarschijnlijk alleen de luie niets geschreven. Nadelen zijn de 'patchwork'-oplossing, d.w.z. het kan niet vanuit een handige, mooie client op elk platform worden opgezet. Voordelen zijn de goede prestaties, er is helemaal niets nodig om op de server te installeren.
download — 1270 mbits; upload — 1140 mbits
OpenVPN
OpenVPN werd in 4 werkwijzen getest: tcp, tcp+sslh, tcp+stunnel, udp.
De OpenVPN-servers werden automatisch ingesteld met de installatie van Streisand.
Voor zover ik kan oordelen, is momenteel alleen de modus via stunnel bestand tegen geavanceerde DPI. De reden voor de ongewone toename van de doorvoersnelheid bij het verpakken van OpenVPN-TCP in stunnel is mij niet duidelijk; er zijn meerdere tests gedaan op verschillende tijden en dagen, met dezelfde resultaten. Misschien heeft dit te maken met de instellingen van de netwerkstack die worden ingesteld bij het uitrollen van Streisand. Laat het me weten als je ideeën hebt waarom dit zo is.
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
Niet het populairste hulpmiddel voor het omzeilen van blokkades, maakt deel uit van het Streisand-pakket, daarom is besloten het ook te testen.
download — 895 mbits; upload — 715 mbits
Wireguard
Een trendy tool die populair is bij westerse gebruikers; de ontwikkelaars van het protocol hebben zelfs enkele subsidies ontvangen van beschermingsfondsen. Werkt als een kernelmodule in Linux via UDP. Onlangs zijn er clients verschenen voor Windows en iOS.
Bedacht door de maker als een eenvoudige en snelle manier om Netflix te kijken buiten de VS.
Hieruit volgen de voor- en nadelen. Voordelen — een zeer snel protocol, relatief eenvoudig te installeren in te stellen. Nadelen — de ontwikkelaar heeft het aanvankelijk niet ontworpen om ernstige blokkades te omzeilen, en daarom wordt WireGuard gemakkelijk gedetecteerd met eenvoudige tools, waaronder Wireshark.
WireGuard-protocol in Wireshark
download — 1681 mbits; upload — 1638 mbits
Wat interessant is, is dat het WireGuard-protocol wordt gebruikt in de externe client Tunsafe, die bij gebruik met dezelfde WireGuard-server veel slechtere resultaten oplevert. Het is goed mogelijk dat de Windows-client van WireGuard soortgelijke resultaten zal vertonen:
tunsafeclient: download — 1007 mbits; upload — 1366 mbits
OutlineVPN
Outline is een implementatie van een Shadowsocks-server en client met een mooie en gebruiksvriendelijke GUI van Google's Jigsaw. In Windows is de Outline-client gewoon een set wrappers voor de binaire bestanden shadowsocks-local (Shadowsocks-libev client) en badvpn (tun2socks-binaire, die al het verkeer van de machine naar een lokale Socks-proxy leidt).
Eens was Shadowsocks bestand tegen de grote Chinese firewall, maar volgens de laatste recensies is dat nu niet meer het geval. In tegenstelling tot Shadowsocks ondersteunt 'out of the box' geen obfuscatietechnieken via plugins, maar dit kan handmatig worden gedaan door met de server en client te rommelen.
download — 939 mbits; upload — 930 mbits
ShadowsocksR
ShadowsocksR is een fork van de originele Shadowsocks, geschreven in Python. Het is in wezen een Shadowsocks waaraan verschillende manieren van het obfusceren van verkeer stevig zijn toegevoegd.
Er zijn forks van ssR op libev en iets anders. De lage doorvoersnelheid is waarschijnlijk te wijten aan de programmeertaal. De originele Shadowsocks in Python is niet veel sneller.
shadowsocksR: download 582 mbits; upload 541 mbits.
Shadowsocks
Een Chinese tool om blokkades te omzeilen, die het verkeer randomiseert en op andere fantastische manieren de automatische analyse verstoort. Tot voor kort werd het niet geblokkeerd door de GFW, maar het schijnt nu geblokkeerd te worden, tenzij je UDP-relay inschakelt.
Cross-platform (er zijn clients voor elk platform), ondersteunt PT-verbindingen vergelijkbaar met Tor-achtige obfuscatietools, er zijn verschillende eigen of geadapteerde obfuscatietools, snel.
Er zijn veel implementaties van clients en servers van Shadowsocks in verschillende programmeertalen. Bij het testen als server werd shadowsocks-libev gebruikt, verschillende clients. De snelste Linux-client bleek shadowsocks2 op Go te zijn, dat als standaardclient in Streisand wordt verspreid; hoe veel sneller het is dan shadowsocks-windows weet ik niet. In de meeste verdere tests werd echt shadowsocks2 als client gebruikt. Er zijn geen screenshots gemaakt van het testen van puur shadowsocks-libev vanwege de duidelijke achterstand van deze implementatie.
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
Een plugin voor Shadowsocks, momenteel in de status “depreciated” maar nog steeds actief (hoewel niet altijd goed). Veelal verdrongen door de plugin v2ray-plugin. Obfuskeert het verkeer of onder HTTP-websocket (en laat je de doelheader spoofen, waardoor het lijkt alsof je niet Pornhub aan het bekijken bent, maar bijvoorbeeld de website van de grondwet van Rusland) of onder pseudo-TLS (pseudo, omdat het geen certificaten gebruikt; de eenvoudigste DPI-tools zoals de gratis nDPI detecteren het als “tls no cert”. In tls-modus kun je de headers al niet meer spoofen).
Vrije en snelle installatie met één opdracht vanuit de repository, eenvoudig te configureren, en heeft een ingebouwde failoverfunctie (wanneer verkeer van een niet-Simple-Obfs-client binnenkomt op de poort die Simple-Obfs luistert, wordt het doorverwezen naar het opgegeven adres in de instellingen — op deze manier kan handmatige controle van poort 80 vermeden worden, bijvoorbeeld door een redirect naar een website via http, evenals blokkades via connection-problems).
shadowsockss-obfs-tls: download — 1618 mbits; upload 1971 mbits.
shadowsockss-obfs-http: download — 1582 mbits; upload — 1965 mbits.
Simple-Obfs kan in http-modus ook werken via een reverse proxy CDN (zoals Cloudflare), waardoor ons verkeer voor onze provider eruitziet als http-plaintext-verkeer tot Cloudflare, wat helpt om onze tunnel beter te verbergen, en tegelijkertijd het instap- en uitstappunt van het verkeer scheidt — de provider ziet dat jouw verkeer naar de CDN gaat, terwijl extremistische likes op de afbeeldingen op dat moment vanuit het IP-adres van de VPS worden geplaatst. IP-adressen Het moet gezegd worden dat de S-Obfs via CF niet altijd betrouwbaar werkt, waarbij soms bepaalde http-bronnen niet openen. Tests met uploaden via iperf met shadowsockss-obfs+CF zijn niet gelukt, maar volgens de snelheidsresultaten ligt de bandbreedte op het niveau van shadowsocksv2ray-plugin-tls+CF. Screenshots van iperf3 voeg ik niet toe, omdat deze niet als betrouwbaar moeten worden beschouwd.
download (speedtest) — 887; upload (speedtest) — 1154.
Download (iperf3) — 1625; upload (iperf3) — NA.
v2ray-plugin
De V2ray-plugin kwam ter vervanging van Simple-Obfs als de belangrijkste "officiële" obfuscator voor SS-libev. In tegenstelling tot Simple-Obfs is het momenteel nog niet in de repositories beschikbaar, en je moet ofwel een vooraf gecompileerde binaire versie downloaden, of zelf compileren.
Ondersteunt 3 werkmodi: standaard, http-websocket (met ondersteuning voor spoofing van de host header); tls-websocket (in tegenstelling tot S-Obfs is dit volledig tls-verkeer dat door elke webserver-reverseproxy herkend kan worden, en stelt je bijvoorbeeld in staat om tls-terminatie in Cloudflare-servers of Nginx in te stellen); quic — werkt via udp, maar helaas is de prestaties van quic in v2ray zeer laag.
Voordelen ten opzichte van Simple-Obfs: de v2ray-plugin werkt zonder problemen via CF in http-websocketmodus met elk verkeer, in tls-modus vertegenwoordigt het volledig tls-verkeer, vereist certificaten om te werken (bijvoorbeeld van Let's Encrypt of zelf-ondertekende certificaten).
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.
Zoals ik al zei, kan v2ray headers instellen, waardoor het mogelijk is om via reverse proxy CDN (bijvoorbeeld Cloudflare) te werken. Enerzijds maakt dit het detecteren van de tunnel moeilijker, anderzijds kan het de latentie enigszins verhogen (en soms verlagen) — het hangt allemaal af van uw locatie en die van de servers. Momenteel test CF de werking met quic, maar deze modus is nog niet beschikbaar (tenzij voor gratis accounts).
shadowsocksv2ray-plugin-http+CF: download — 1284 mbits; upload 1785 mbits.
shadowsocksv2ray-plugin-tls+CF: download — 1261 mbits; upload 1881 mbits.
Cloak
Cloak is het resultaat van verdere ontwikkeling van de obfuscator GoQuiet. Het simuleert TLS-verkeer en werkt overeenkomstig via TCP. Op dit moment heeft de auteur de tweede versie van de plugin, cloak-2, uitgebracht, die aanzienlijk verschilt van de originele cloak.
Volgens de ontwikkelaar gebruikte de eerste versie van de plugin het mechanisme tls 1.2 resume session om het bestemmingsadres voor tls te spoofen. Na uitgifte van de nieuwe versie (cloak-2) zijn alle wiki-pagina's op GitHub die deze mechanismen beschrijven, verwijderd, en in de huidige beschrijving van encryptie-obfuscatie ontbreekt deze vermelding. Volgens de auteur wordt de eerste versie van cloak niet meer gebruikt vanwege 'kritieke kwetsbaarheden in de cryptografie'. Op het moment van de tests was er alleen de eerste versie van cloak, de binaries zijn nog steeds beschikbaar op GitHub, en bovendien zijn kritieke kwetsbaarheden niet zo belangrijk, omdat shadowsocks op dezelfde manier het verkeer versleutelt, zowel met als zonder cloak, en cloak geen invloed heeft op de cryptografie van shadowsocks.
shadowsockscloak: download — 1533; upload — 1970 mbits
Kcptun
kcptun gebruikt als transport en in sommige specifieke gevallen kan het de bandbreedte verhogen. Helaas (of gelukkig) is dit vooral relevant voor gebruikers uit de VRC, waarvan sommige mobiele operators TCP intensief afknijpen en UDP ongemoeid laten.
Kcptun is extreem hongerig en kan eenvoudig 100% van 4 CPU-kernen gebruiken bij het testen met 1 client. Daarnaast is de plugin 'langzaam', en voltooit de tests via iperf3 niet volledig. We richten ons op speedtest in de browser.
shadowsockskcptun: download (speedtest) — 546 mbits; upload (speedtest) 854 mbits.
Conclusie
Zoekt u een eenvoudige, snelle VPN om al het verkeer van uw apparaat te verbergen? Dan is uw keuze vaergard. Wilt u proxies (voor selectieve tunneling of splitsing van virtuele persoonlijke stromen) of is het voor u belangrijker om het verkeer te verhullen tegen ernstige blokkades? Kijk dan naar shadowsocks met TLS HTTP obfuscatie. Wilt u er zeker van zijn dat uw internet blijft werken zolang het internet überhaupt werkt? Kies dan voor het proxeren van verkeer via belangrijke CDN's, waarvan het blokkeren zal leiden tot het uitvallen van de helft van het internet in het land.
samenvattende tabel, sorteren op downloads
Bron: habr.com
