Questa guida mostra come utilizzare gli strumenti a riga di comando dell'SDK Outline per
comprendere e aggirare le interferenze di rete da una prospettiva remota. Imparerai a utilizzare gli strumenti dell'SDK per misurare le interferenze di rete, testare le strategie di elusione e analizzare i risultati. Questa guida si concentrerà sugli strumenti
resolve
, fetch
e http2transport
.
Iniziare a utilizzare gli strumenti dell'SDK Outline
Puoi iniziare a utilizzare gli strumenti dell'SDK Outline direttamente dalla riga di comando.
Risolvi DNS
Lo strumento resolve
ti consente di eseguire ricerche DNS con un resolver specificato.
Per risolvere un record A di un dominio:
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
Per risolvere un record CNAME:
go run github.com/Jigsaw-Code/outline-sdk/x/tools/resolve@latest -resolver 8.8.8.8 -type CNAME www.google.com
Recuperare una pagina web
Lo strumento fetch
può essere utilizzato per recuperare i contenuti di una pagina web.
go run github.com/Jigsaw-Code/outline-sdk/x/tools/fetch@latest https://example.com
Può anche forzare la connessione a utilizzare QUIC.
go run github.com/Jigsaw-Code/outline-sdk/x/tools/fetch@latest -proto=h3 https://www.youtube.com
Utilizzare un proxy locale
Lo strumento http2transport
crea un proxy locale per instradare il traffico.
Per avviare un proxy locale con un trasporto Shadowsocks:
go run github.com/Jigsaw-Code/outline-sdk/x/tools/http2transport@latest -localAddr 127.0.0.1:8080 -transport "ss://{your_shadowsocks_credentials}"
Puoi quindi utilizzare questo proxy con altri strumenti come curl:
curl -p -x http://127.0.0.1:8080 https://ipinfo.io
Specificare le strategie di elusione
L'SDK Outline consente la specifica di varie strategie di elusione che possono essere combinate per aggirare diverse forme di interferenza di rete. Le specifiche di queste strategie sono riportate nella documentazione di Go.
Strategie componibili
Queste strategie possono essere combinate per creare tecniche di elusione più efficaci.
- DNS over HTTPS con frammentazione TLS:
doh:name=cloudflare-dns.com&address=cloudflare.net:443 | tlsfrag:1
- SOCKS5 su TLS con Domain Fronting:
tls:sni=decoy.example.com&certname=[HOST] | socks5:[HOST]:[PORT]
- Routing multi-hop con Shadowsocks:
ss://[USERINFO1]@[HOST1]:[PORT1] | ss://[USERINFO2]@[HOST2]:[PORT2] | ss://[USERINFO3]@[HOST3]:[PORT3]
Accesso remoto e misurazione
Per misurare le interferenze di rete così come vengono percepite in regioni diverse, puoi utilizzare proxy remoti. Puoi trovare o creare proxy remoti a cui connetterti.
Opzioni di accesso remoto
Utilizzando lo strumento fetch
puoi testare le connessioni da remoto in vari modi.
Server Outline
Connettiti in remoto a un server Outline standard con un trasporto 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 su SSH
Crea un proxy SOCKS5 utilizzando un tunnel SSH.
ssh -D 127.0.0.1:1080 -C -N $USER@$HOST:$PORT
Connettiti a questo tunnel utilizzando fetch
go run github.com/Jigsaw-Code/outline-sdk/x/tools/fetch@latest -timeout 15 -transport "socks5://localhost:1080" https://ipinfo.io | jq
Case study: aggirare il blocco di YouTube in Iran
Ecco un esempio pratico di rilevamento e bypass delle interferenze di rete.
Rilevare il blocco
Quando si tenta di recuperare la home page di YouTube tramite un proxy iraniano, la richiesta scade, indicando un blocco.
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
Questo comando non va a buon fine e si verifica un timeout.
Aggiramento con la frammentazione TLS
Se aggiungiamo la frammentazione TLS al trasporto, possiamo aggirare questo blocco.
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>'
Questo comando recupera correttamente il titolo della home page di YouTube, ovvero
<title>YouTube</title>
.
Bypass con frammentazione TLS e DNS over 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>'
Restituisce correttamente anche <title>YouTube</title>
.
Eseguire il bypass con un server 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>'
Anche questa restituisce <title>YouTube</title>
.
Ulteriori analisi e risorse
Per discussioni e domande, visita il gruppo di discussione dell'SDK Outline.