Caracterização e bypass remotos de interferências na rede com o SDK Outline

Este guia demonstra como usar as ferramentas de linha de comando do SDK do Outline para entender e evitar interferências de rede de uma perspectiva remota. Você vai aprender a usar as ferramentas do SDK para medir a interferência na rede, testar estratégias de evasão e analisar os resultados. Este guia vai se concentrar nas ferramentas resolve, fetch e http2transport.

Como começar a usar as ferramentas do SDK Outline

Você pode começar a usar as ferramentas do SDK do Outline diretamente na linha de comando.

Resolver DNS

Com a ferramenta resolve, é possível fazer pesquisas de DNS com um resolvedor especificado.

Para resolver um registro A de um domínio:

go run github.com/Jigsaw-Code/outline-sdk/x/tools/resolve@latest -resolver 8.8.8.8 -type A 1.2.3.4.nip.io

Para resolver um registro CNAME:

go run github.com/Jigsaw-Code/outline-sdk/x/tools/resolve@latest -resolver 8.8.8.8 -type CNAME www.google.com

Buscar uma página da Web

A ferramenta fetch pode ser usada para recuperar o conteúdo de uma página da Web.

go run github.com/Jigsaw-Code/outline-sdk/x/tools/fetch@latest https://example.com

Ele também pode forçar a conexão a usar o QUIC.

go run github.com/Jigsaw-Code/outline-sdk/x/tools/fetch@latest -proto=h3 https://www.youtube.com

Usar um proxy local

A ferramenta http2transport cria um proxy local para rotear seu tráfego. Para iniciar um proxy local com um transporte do Shadowsocks:

go run github.com/Jigsaw-Code/outline-sdk/x/tools/http2transport@latest -localAddr 127.0.0.1:8080 -transport "ss://{your_shadowsocks_credentials}"

Em seguida, use esse proxy com outras ferramentas, como curl:

curl -p -x http://127.0.0.1:8080 https://ipinfo.io

Especificar estratégias de fraude

O SDK do Outline permite a especificação de várias estratégias de evasão que podem ser combinadas para contornar diferentes formas de interferência na rede. A especificação dessas estratégias está na documentação do Go.

Estratégias combináveis

Essas estratégias podem ser combinadas para criar técnicas de evasão mais robustas.

  • DNS sobre HTTPS com fragmentação TLS: doh:name=cloudflare-dns.com&address=cloudflare.net:443 | tlsfrag:1
  • SOCKS5 por TLS com Domain Fronting: tls:sni=decoy.example.com&certname=[HOST] | socks5:[HOST]:[PORT]
  • Roteamento de vários saltos com Shadowsocks: ss://[USERINFO1]@[HOST1]:[PORT1] | ss://[USERINFO2]@[HOST2]:[PORT2] | ss://[USERINFO3]@[HOST3]:[PORT3]

Acesso e medição remotos

Para medir a interferência de rede em diferentes regiões, use proxies remotos. Você pode encontrar ou criar proxies remotos para se conectar.

Opções de acesso remoto

Com a ferramenta fetch, é possível testar conexões remotamente de várias maneiras.

Servidor do Outline

Conecte-se remotamente a um servidor padrão do Outline com um transporte do Shadowsocks.

go run github.com/Jigsaw-Code/outline-sdk/x/tools/fetch@latest -timeout 15 -transport "ss://{remote_shadowsocks_credentials}" https://ipinfo.io | jq

SOCKS5 por SSH

Crie um proxy SOCKS5 usando um túnel SSH.

ssh -D 127.0.0.1:1080 -C -N $USER@$HOST:$PORT

Conecte-se a esse túnel usando fetch

go run github.com/Jigsaw-Code/outline-sdk/x/tools/fetch@latest -timeout 15 -transport "socks5://localhost:1080" https://ipinfo.io | jq

Estudo de caso: como burlar o bloqueio do YouTube no Irã

Confira um exemplo prático de como detectar e ignorar interferências na rede.

Detectar o bloqueio

Ao tentar buscar a página inicial do YouTube por um proxy iraniano, a solicitação expira, indicando um bloqueio.

export TRANSPORT="ss://{remote_shadowsocks_credentials}"
go run github.com/Jigsaw-Code/outline-sdk/x/tools/fetch@latest -timeout 15 -transport "${TRANSPORT}|override:host=$(dig +short www.youtube.com | tail -1)" https://www.youtube.com

Esse comando falha com um tempo limite.

Bypass com fragmentação TLS

Ao adicionar a fragmentação de TLS ao transporte, podemos contornar esse bloqueio.

go run github.com/Jigsaw-Code/outline-sdk/x/tools/fetch@latest -timeout 15 -transport "${TRANSPORT}|override:host=$(dig +short www.youtube.com | tail -1)|tlsfrag:1" https://www.youtube.com | grep -oe '<title>.*</title>'

Esse comando recupera o título da página inicial do YouTube, que é <title>YouTube</title>.

Bypass com fragmentação TLS e DNS sobre HTTPS

go run github.com/Jigsaw-Code/outline-sdk/x/tools/fetch@latest -timeout 15 -transport "${TRANSPORT}|tlsfrag:1|doh:name=cloudflare-dns.com&address=www.cloudflare.net" https://www.youtube.com | grep -oe '<title>.*</title>'

Isso também retorna <title>YouTube</title>.

Burlar com um servidor do Outline

go run github.com/Jigsaw-Code/outline-sdk/x/tools/fetch@latest -timeout 15 -transport "${TRANSPORT}|ss://<your_shadowsocks_credentials>" https://www.youtube.com | grep -oe '<title>.*</title>'

Isso também retorna <title>YouTube</title>.

Mais análises e recursos

Para discussões e perguntas, acesse o grupo de discussão do SDK do Outline.