Com o acesso a vários recursos na internet cada vez mais limitado, a questão de contornar bloqueios se torna cada vez mais relevante, e assim surgem perguntas como "Como contornar bloqueios de forma mais rápida?".
Vamos deixar o tema da eficácia, considerando a superação de listas brancas e negras, para outro momento e apenas comparar o desempenho das ferramentas populares de contorno de bloqueios.
Atenção: O artigo conterá muitas imagens sob spoilers.
Aviso: Este artigo compara o desempenho de soluções VPN e proxy populares em condições próximas a "ideais". Os resultados obtidos e descritos aqui podem não coincidir com os seus resultados no campo. Porque o número em um teste de velocidade muitas vezes depende não de quão eficiente é a ferramenta de contorno, mas de como o seu provedor a limita, QoS ou bloqueia.
Metodologia
O provedor de nuvem (DO) comprou 3 VPS em diferentes países do mundo. 2 na Holanda, 1 na Alemanha. Foram escolhidos os VPS mais potentes (com base no número de núcleos) disponíveis para a conta com créditos de cupom.
Em um dos servidores na Holanda, um servidor iperf3 privado foi configurado.
No segundo servidor holandês, várias ferramentas de contorno de bloqueio são implantadas uma a uma.
No VPS alemão, é feita uma instalação de uma imagem de desktop Linux (xubuntu) com VNC e uma área de trabalho virtual. Este VPS funciona como um cliente condicional, e diferentes clientes de proxies e VPNs são instalados e executados nele um por um.
As medições de velocidade são realizadas três vezes, usando a média, com 3 ferramentas: no Chromium através do teste de velocidade na web; no Chromium via fast.com; e da linha de comando via iperf3 através do proxy chains4 (onde é necessário redirecionar o tráfego do iperf3 para o proxy).
Uma conexão direta “cliente”-servidor iperf3 oferece uma velocidade de 2 Gbps no iperf3, e um pouco menos no teste de velocidade rápido.
Um leitor curioso pode perguntar, "por que você não escolheu o speedtest-cli?" e estaria certo.
O cliente de teste de velocidade provou ser uma maneira pouco confiável de medir a largura de banda, por razões que desconheço. Três medições consecutivas poderiam resultar em três resultados completamente diferentes ou, por exemplo, mostrar uma largura de banda muito maior do que a velocidade dos ports dos meus VPS. Pode ser que o problema seja minha falta de habilidade, mas realizar pesquisas com essa ferramenta me pareceu impossível.
Quanto aos resultados de três métodos de medição (speedtest fast iperf), considero os dados do iperf os mais precisos, confiáveis e autênticos, enquanto o speedtest fast serve como referência. Mas algumas ferramentas de contorno não permitiram completar três medições com o iperf3 e, nesses casos, pode-se usar o speedtest fast como referência.
O speedtest fornece resultados diferentes
Ferramentas
Um total de 24 ferramentas de contorno diferentes ou suas combinações foram testadas, e para cada uma delas darei pequenas explicações e minhas impressões ao trabalhá-las. Mas, essencialmente, o objetivo era comparar as velocidades do shadowsocks (e uma série de diferentes ofuscadores relacionados) com o openVPN e wireguard.
Neste material, não abordarei detalhadamente a questão de 'como melhor ocultar o tráfego para que não seja bloqueado', porque o contorno de bloqueios é uma medida reativa - nos ajustamos ao que o censor usa e agimos a partir disso.
Resultados
Strongswan ipsec
Pelo que percebo, é muito fácil de configurar, funciona de forma bastante estável. Entre os pontos positivos, é realmente multiplataforma, sem a necessidade de procurar clientes para cada plataforma.
download — 993 mbits; upload — 770 mbits
Túnel SSH
Provavelmente, só o preguiçoso não escreveu sobre o uso do SSH como uma ferramenta de túnel. Entre os pontos negativos, está a 'gambiarra' da solução, ou seja, não será possível implementá-la com um cliente bonito e conveniente em cada plataforma. Entre os prós, está a boa performance, sem necessidade de instalar nada no servidor.
download — 1270 mbits; upload — 1140 mbits
OpenVPN
O OpenVPN foi testado em 4 modos de operação: tcp, tcp+sslh, tcp+stunnel, udp.
Os servidores OpenVPN foram configurados automaticamente pela instalação do streisand.
Até onde se pode julgar, atualmente apenas o modo de operação através do stunnel é resistente a DPI avançado. A razão para o aumento anômalo da largura de banda ao encapsular o openVPN-tcp no stunnel não está clara para mim; os testes foram feitos em várias etapas, em momentos e dias diferentes, e o resultado foi o mesmo. Pode estar relacionado às configurações da pilha de rede estabelecidas ao implantar o Streisand; escreva se tiver ideias sobre o porquê disso.
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
Não é a ferramenta de contorno de bloqueios mais popular, faz parte do pacote Streisand, por isso decidimos testá-la também.
download — 895 mbits; upload — 715 mbits
Wireguard
Uma ferramenta em ascensão, popular entre os usuários ocidentais; os desenvolvedores do protocolo até receberam alguns subsídios de fundos de proteção. Funciona como um módulo do kernel Linux, através do UDP. Recentemente, clientes para Windows e iOS começaram a aparecer.
Foi pensado pelo criador como uma forma simples e rápida de assistir Netflix fora dos Estados Unidos.
Daqui surgem prós e contras. Prós — um protocolo muito rápido, relativa simplicidade de instalação/configuração. Contras — o desenvolvedor não o criou originalmente com a intenção de contornar bloqueios sérios e, por isso, o WireGuard é facilmente detectável por ferramentas simples, incluindo o Wireshark.
protocolo WireGuard no Wireshark
download — 1681 mbits; upload — 1638 mbits
Curiosamente, o protocolo WireGuard é utilizado no cliente de terceiros Tunsafe, que ao ser usado com o mesmo servidor WireGuard, proporciona resultados muito piores. É bem provável que o cliente Windows do WireGuard mostre resultados semelhantes:
tunsafeclient: download — 1007 mbits; upload — 1366 mbits
OutlineVPN
Outline é uma implementação do servidor e cliente Shadowsocks, com uma interface gráfica bonita e conveniente da Jigsaw do Google. No Windows, o cliente Outline consiste apenas em um conjunto de wrappers para os binários shadowsocks-local (cliente shadowsocks-libev) e badvpn (binário tun2socks, que redireciona todo o tráfego da máquina para um proxy socks local).
Antigamente, o shadowsocks era resistente ao grande firewall chinês, mas, segundo os últimos comentários, isso já não é mais o caso. Ao contrário do shadowsocks, "out of the box" não suporta conexão de ofuscação através de plugins, mas isso pode ser feito manualmente, ajustando o servidor e o cliente.
download — 939 mbits; upload — 930 mbits
ShadowsocksR
ShadowsocksR é um fork do original shadowsocks, escrito em Python. Essencialmente, é um shadowsocks ao qual foram adicionados rigidamente vários métodos de ofuscação de tráfego.
Existem forks do ssR em libev e em outras tecnologias. A baixa largura de banda é provavelmente devido à linguagem de programação. O original shadowsocks em Python não é muito mais rápido.
shadowsocksR: download 582 mbits; upload 541 mbits.
Shadowsocks
Ferramenta chinesa de contorno de bloqueios que randomiza o tráfego e utiliza outros métodos impressionantes para dificultar a análise automática. Até recentemente, não era bloqueado pelo GFW; dizem que agora é bloqueado apenas se o UDP relay estiver ativado.
Multiplataforma (existem clientes para qualquer plataforma), suporta trabalho com PT tipo ofuscatadores de tor, há alguns ofuscatadores próprios ou adaptados a ele, rápido.
Há uma infinidade de implementações de clientes e servidores shadowsocks, em várias linguagens. Nos testes, o servidor utilizado foi o shadowsocks-libev, com diferentes clientes. O cliente Linux mais rápido foi o shadowsocks2 em Go, disponibilizado como cliente padrão no streisand; não posso afirmar quão mais rápido é em comparação ao shadowsocks-windows. Na maioria dos testes subsequentes, utilizou-se o shadowsocks2 como cliente. Capturas de tela testando o shadowsocks-libev puro não foram feitas, devido à evidente desvantagem dessa implementação.
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 para shadowsocks, atualmente em status de 'depreciado', mas ainda funcionando (embora nem sempre bem). Em grande parte, foi substituído pelo plugin v2ray-plugin. Ofusca o tráfego, seja via http-websocket (e permite falsificar os headers do host de destino, fazendo parecer que você está acessando não o Pornhub, mas, por exemplo, o site da constituição russa) ou via pseudo-tls (pseudo, pois não utiliza certificados; os DPI mais simples como o nDPI gratuito detectam como 'tls sem cert'. No modo tls, não é mais possível falsificar os headers).
Rápido o suficiente, instalado a partir do repositório com um comando apenas, muito fácil de configurar, possui uma função embutida de failover (quando o tráfego de um cliente que não é simples-obfs chega à porta que o simle-obfs está ouvindo, ele o redireciona para o endereço que você especificar nas configurações — assim é possível evitar a verificação manual da porta 80, por exemplo, simplesmente redirecionando para um site com http, além de bloqueios através da conexão-proxy).
shadowsockss-obfs-tls: download — 1618 mbits; upload 1971 mbits.
shadowsockss-obfs-http: download — 1582 mbits; upload — 1965 mbits.
Simple-obfs em modo http também pode funcionar através de um proxy reverso CDN (por exemplo, cloudflare), assim, para o nosso provedor, o tráfego parecerá como tráfego http em texto puro até o cloudflare, isso ajuda a esconder um pouco melhor o nosso túnel, além de separar o ponto de entrada e saída do tráfego — o provedor vê que seu tráfego está indo em direção ao CDN, e curtidas extremistas nas imagens são feitas nesse momento a partir do endereço IP do VPS. Vale dizer que o s-obfs por meio do CF funciona de maneira ambígua, periodicamente não carregando alguns recursos http, por exemplo. Assim, não foi possível testar o upload usando iperf através do shadowsockss-obfs+CF, mas de acordo com os resultados do teste de velocidade, a largura de banda está no nível do shadowsocksv2ray-plugin-tls+CF. Não adiciono capturas de tela do iperf3, pois não vale a pena se basear nelas. endereço IP download (speedtest) — 887; upload (speedtest) — 1154.
Download (iperf3) — 1625; upload (iperf3) — NA.
v2ray-plugin
O V2ray-plugin veio em substituição ao simple-obfs como o principal 'oficial' ofuscador para ss-libev. Ao contrário do simple-obfs, ele ainda não está nos repositórios, e é necessário ou baixar um binário pré-compilado ou compilar você mesmo.
Suporta 3 modos de operação: padrão, websocket http (com suporte para spoofing dos cabeçalhos do host de destino); websocket tls (ao contrário do s-obfs, este é um tráfego tls completo, que pode ser reconhecido por qualquer servidor web reverso e, por exemplo, permite configurar a terminação tls em servidores cloudflare ou no nginx); quic — opera através de udp, mas, infelizmente, o desempenho do quic no v2ray é muito baixo.
As vantagens em comparação ao simple-obfs: o v2ray-plugin funciona sem problemas com CF em modo websocket http com qualquer tráfego; no modo tls, representa tráfego tls completo e requer certificados para funcionar (como de let's encrypt ou autoassinados).
VANTAGENS em relação ao simple-obfs: o v2ray-plugin opera sem problemas através do CF no modo websocket http com qualquer tráfego, no modo tls representa um tráfego tls completo, e requer certificados para funcionar (como de let's encrypt ou autoassinados).
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.
Como já mencionei, o v2ray consegue configurar cabeçalhos, permitindo assim que ele seja utilizado através de proxies reversos CDN (como o Cloudflare, por exemplo). Por um lado, isso dificulta a detecção do túnel, mas por outro, pode aumentar (ou até diminuir) a latência — isso depende da sua localização em relação aos servidores. No momento, a CF está testando o funcionamento com quic, mas esse modo ainda não está disponível (pelo menos para contas gratuitas).
shadowsocksv2ray-plugin-http+CF: download — 1284 mbits; upload 1785 mbits.
shadowsocksv2ray-plugin-tls+CF: download — 1261 mbits; upload 1881 mbits.
Cloak
Cloak é o resultado de um desenvolvimento avançado do ofuscador GoQuiet. Simula tráfego TLS, operando, portanto, através do TCP. Neste momento, o autor lançou a segunda versão do plugin, cloak-2, que é significativamente diferente da versão original.
De acordo com informações do desenvolvedor, a primeira versão do plugin usava o mecanismo de sessão de resume do TLS 1.2 para falsificar o endereço de destino para TLS. Após o lançamento da nova versão (cloak-2), todas as páginas da wiki no GitHub que descreviam esse mecanismo foram removidas, e a descrição atual sobre a criptografia de ofuscação não menciona isso. Segundo o autor, a primeira versão do Cloak não é mais utilizada devido a "vulnerabilidades críticas na criptografia". No momento dos testes, apenas a primeira versão do Cloak estava disponível, e seus binários ainda estão no GitHub. Além disso, as vulnerabilidades críticas não são tão relevantes, uma vez que o Shadowsocks também criptografa o tráfego, assim como sem Cloak, e o Cloak não influencia na criptografia do Shadowsocks.
shadowsockscloak: download — 1533; upload — 1970 mbits.
Kcptun
Kcptun usa como transporte e em alguns casos específicos permite alcançar um aumento na largura de banda. Infelizmente (ou felizmente) isso é muito relevante para usuários da China, cujos provedores de celular muitas vezes throttlem TCP e não tocam em UDP.
Kcptun é extremamente exigente e facilmente utiliza 100% de 4 núcleos de CPU durante testes com 1 cliente. Além disso, o plugin é 'lento', e durante o uso com iperf3, não conclui os testes até o final. Vamos nos basear no teste de velocidade no navegador.
shadowsockskcptun: download (speedtest) — 546 mbits; upload (speedtest) 854 mbits.
Conclusão
Precisa de um VPN simples e rápido para criptografar o tráfego de toda a sua máquina? Então sua escolha é o vaergard. Quer proxies (para tunelamento seletivo ou divisão de tráfego de usuários virtuais) ou a obfuscação do tráfego é mais importante para você devido a bloqueios severos? Então, conheça o shadowsocks com obfuscação TLS. Quer ter certeza de que sua internet funcionará enquanto a internet estiver online? Opte por proxy de tráfego através de CDNs importantes, cujo bloqueio poderia causar a interrupção da metade da internet no país.
tabela resumo, ordenação por download
Fonte: habr.com
