Mulai versi 1.9.0 Outline Client, kunci akses mendukung opsi "prefix". "Awalan" adalah daftar byte yang digunakan sebagai byte pertama dari salt koneksi Shadowsocks. Hal ini dapat membuat koneksi terlihat seperti protokol yang diizinkan di jaringan, sehingga menghindari firewall yang menolak protokol yang tidak dikenalinya.
Kapan saya harus mencobanya?
Jika Anda menduga pengguna deployment Outline Anda masih diblokir, Anda mungkin ingin mempertimbangkan untuk mencoba beberapa awalan yang berbeda.
Petunjuk
Awalan tidak boleh lebih dari 16 byte. Awalan yang lebih panjang dapat menyebabkan tabrakan salt, yang dapat membahayakan keamanan enkripsi dan menyebabkan koneksi terdeteksi. Gunakan awalan terpendek yang dapat Anda gunakan untuk melewati pemblokiran yang Anda alami.
Port yang Anda gunakan harus sesuai dengan protokol yang ditiru oleh awalan Anda. IANA menyimpan transport protocol port number registry yang memetakan protokol dan nomor port.
Beberapa contoh awalan TCP yang efektif dan terlihat seperti protokol umum:
Port yang Direkomendasikan | Di-encode YAML | Dienkode URL | |
---|---|---|---|
Permintaan HTTP | 80 (http) | "POST " |
POST%20 |
Respons HTTP | 80 (http) | "HTTP/1.1 " |
HTTP%2F1.1%20 |
Permintaan DNS-over-TCP | 53 (dns) | "\u0005\u00DC\u005F\u00E0\u0001\u0020" |
%05%C3%9C_%C3%A0%01%20 |
ClientHello TLS | 443 (https), 463 (smtps), 563 (nntps), 636 (ldaps), 989 (ftps-data), 990 (ftps), 993 (imaps), 995 (pop3s), 5223 (Apple APN), 5228 (Play Store), 5349 (turns) | "\u0016\u0003\u0001\u0000\u00a8\u0001\u0001" |
%16%03%01%00%C2%A8%01%01 |
Data Aplikasi TLS | 443 (https), 463 (smtps), 563 (nntps), 636 (ldaps), 989 (ftps-data), 990 (ftps), 993 (imaps), 995 (pop3s), 5223 (Apple APN), 5228 (Play Store), 5349 (turns) | "\u0013\u0003\u0003\u003F" |
%13%03%03%3F |
ServerHello TLS | 443 (https), 463 (smtps), 563 (nntps), 636 (ldaps), 989 (ftps-data), 990 (ftps), 993 (imaps), 995 (pop3s), 5223 (Apple APN), 5228 (Play Store), 5349 (turns) | "\u0016\u0003\u0003\u0040\u0000\u0002" |
%16%03%03%40%00%02 |
SSH | 22 (ssh), 830 (netconf-ssh), 4334 (netconf-ch-ssh), 5162 (snmpssh-trap) | "SSH-2.0\r\n" |
SSH-2.0%0D%0A |
Beberapa contoh awalan UDP yang efektif yang terlihat seperti protokol umum:
Port yang Direkomendasikan | Di-encode YAML | |
---|---|---|
Permintaan DNS | 53 (dns) | "\u006b\u007b\u0001\u0020" (catatan: acak dua byte pertama) |
Respons DNS | 53 (dns) | "\u006b\u007b\u0081\u00a0\u0000\u0001" (catatan: acak dua byte pertama) |
Inisialisasi Klien QUIC | 443 (https) | "\u00cd\u0000\u0000\u0000\u0001" |
Kunci Akses Dinamis
Untuk menggunakan fitur awalan dengan Kunci Akses Dinamis (ssconf://
),
tambahkan kunci "prefix" ke objek YAML, dengan nilai yang dienkode YAML
yang merepresentasikan awalan yang Anda inginkan_ (lihat contoh dalam tabel di atas)_. Anda dapat
menggunakan kode escape (seperti \u00FF) untuk merepresentasikan titik kode Unicode yang tidak dapat dicetak dalam
rentang U+0
hingga U+FF
. Contoh:
transport:
$type: tcpudp
tcp:
<<: &shared
$type: shadowsocks
endpoint: 147.182.248.224:20478
secret: cqXYJ2BtMyNHneQHjpIXyg
cipher: chacha20-ietf-poly1305
prefix: "\u0013\u0003\u0003\u003F"
udp:
<<: *shared
prefix: "\u006b\u007b\u0001\u0020"
Kunci Akses Statis
Untuk menggunakan awalan dengan Kunci Akses Statis (ss://), Anda harus mengubah kunci yang ada sebelum mendistribusikannya. Jika Anda memiliki Kunci Akses Statis yang dibuat oleh Outline Manager, ambil versi URL-encoded dari awalan Anda (lihat contohnya di tabel di atas) dan tambahkan ke akhir kunci akses seperti ini:
ss://Z34nthataITHiTNIHTohithITHbVBqQ1o3bkk@127.0.0.1:33142/?outline=1&prefix=<your url-encoded prefix goes here>
Awalan dalam format URL hanya berfungsi untuk koneksi TCP.
Untuk pengguna tingkat lanjut, Anda dapat menggunakan fungsi encodeURIComponent()
browser untuk mengonversi awalan berenkode JSON menjadi awalan berenkode URL. Untuk melakukannya,
buka konsol web inspector
(*Developer > Javascript Web Console *di Chrome), lalu ketik berikut:
encodeURIComponent("<your json-encoded prefix goes here>")
Tekan enter. Nilai yang dihasilkan akan berupa versi yang *dienkode ke URL*. Contoh:
encodeURIComponent("\u0016\u0003\u0001\u0000\u00a8\u0001\u0001")
'%16%03%01%00%C2%A8%01%01'