Mengkarakterisasi dan Melewati Gangguan Jaringan dari Jarak Jauh dengan Outline SDK

Panduan ini menunjukkan cara menggunakan alat command line Outline SDK untuk memahami dan menghindari gangguan jaringan dari perspektif jarak jauh. Anda akan mempelajari cara menggunakan alat SDK untuk mengukur gangguan jaringan, menguji strategi penghindaran, dan menganalisis hasilnya. Panduan ini akan berfokus pada alat resolve, fetch, dan http2transport.

Mulai Menggunakan Alat Outline SDK

Anda dapat mulai menggunakan alat Outline SDK langsung dari command line.

Menyelesaikan DNS

Alat resolve memungkinkan Anda melakukan pencarian DNS dengan resolver tertentu.

Untuk menyelesaikan masalah data A domain:

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

Untuk menyelesaikan data CNAME:

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

Mengambil Halaman Web

Alat fetch dapat digunakan untuk mengambil konten halaman web.

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

Setelan ini juga dapat memaksa koneksi menggunakan QUIC.

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

Menggunakan Proxy Lokal

Alat http2transport membuat proxy lokal untuk merutekan traffic Anda. Untuk memulai proxy lokal dengan transport Shadowsocks:

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

Kemudian, Anda dapat menggunakan proxy ini dengan alat lain seperti curl:

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

Menentukan Strategi Pengelakan

Outline SDK memungkinkan spesifikasi berbagai strategi penghindaran yang dapat digabungkan untuk melewati berbagai bentuk gangguan jaringan. Spesifikasi untuk strategi ini ada dalam dokumentasi go.

Strategi Composable

Strategi ini dapat digabungkan untuk membuat teknik penghindaran yang lebih efektif.

  • DNS-over-HTTPS dengan Fragmentasi TLS: doh:name=cloudflare-dns.com&address=cloudflare.net:443 | tlsfrag:1
  • SOCKS5-over-TLS dengan Domain Fronting: tls:sni=decoy.example.com&certname=[HOST] | socks5:[HOST]:[PORT]
  • Perutean Multi-hop dengan Shadowsocks: ss://[USERINFO1]@[HOST1]:[PORT1] | ss://[USERINFO2]@[HOST2]:[PORT2] | ss://[USERINFO3]@[HOST3]:[PORT3]

Akses dan Pengukuran Jarak Jauh

Untuk mengukur interferensi jaringan sebagaimana yang dialami di berbagai wilayah, Anda dapat menggunakan proxy jarak jauh. Anda dapat menemukan atau membuat proxy jarak jauh untuk terhubung.

Opsi Akses Jarak Jauh

Dengan alat fetch, Anda dapat menguji koneksi dari jarak jauh dengan berbagai cara.

Server Outline

Menghubungkan dari jarak jauh ke server Outline standar dengan transport 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 melalui SSH

Buat proxy SOCKS5 menggunakan tunnel SSH.

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

Hubungkan ke tunnel tersebut menggunakan pengambilan

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

Studi Kasus: Melewati Pemblokiran YouTube di Iran

Berikut adalah contoh praktis mendeteksi dan melewati gangguan jaringan.

Mendeteksi Blok

Saat mencoba mengambil halaman beranda YouTube melalui proxy Iran, permintaan akan melebihi batas waktu, yang menunjukkan adanya pemblokiran.

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

Perintah ini gagal dengan waktu tunggu.

Melewati dengan Fragmentasi TLS

Dengan menambahkan fragmentasi TLS ke transport, kita dapat melewati pemblokiran ini.

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>'

Perintah ini berhasil mengambil judul halaman beranda YouTube, yaitu <title>YouTube</title>.

Melewati dengan Fragmentasi TLS dan 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>'

Hal ini juga berhasil menampilkan <title>YouTube</title>.

Melewati dengan 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>'

Tindakan ini juga menampilkan <title>YouTube</title>.

Analisis dan Referensi Lainnya

Untuk diskusi dan pertanyaan, buka Grup Diskusi SDK Outline.